In debugging bms.cpp for esp32, I noticed that all calls to OverkillSolarBms::write() are passing the length and data args in the reverse order from the function definition on line 528. I assume this is a bug. However, I haven't done any c++ since about 1998 and admit that could totally be missing something.
Call example from 313:
write(true, BMS_REG_NAME, length, data);
function definition from 528:
OverkillSolarBms::write(bool read, uint8_t command_code, uint8_t* data, uint8_t length) {