Make RJXZS protocol handle reboots gracefully with default values

This commit is contained in:
Daniel Öster 2025-08-16 13:32:18 +03:00
parent 555cc16a11
commit dd1ee5139d
2 changed files with 6 additions and 12 deletions

View file

@ -72,14 +72,8 @@ void RjxzsBms::update_values() {
datalayer.battery.status.temperature_max_dC = max_temp;
// The cellvoltages[] array can contain 0s inside it
populated_cellvoltages = 0;
for (int i = 0; i < MAX_AMOUNT_CELLS; ++i) {
if (cellvoltages[i] > 0) { // We have a measurement available
datalayer.battery.status.cell_voltages_mV[populated_cellvoltages] = cellvoltages[i];
populated_cellvoltages++;
}
}
//Map all cell voltages to the global array
memcpy(datalayer.battery.status.cell_voltages_mV, cellvoltages, MAX_AMOUNT_CELLS * sizeof(uint16_t));
datalayer.battery.info.number_of_cells = populated_cellvoltages; // 1-192S

View file

@ -41,7 +41,7 @@ class RjxzsBms : public CanBattery {
uint8_t mux = 0;
bool setup_completed = false;
uint16_t total_voltage = 0;
uint16_t total_voltage = 3700;
int16_t total_current = 0;
uint16_t total_power = 0;
uint16_t battery_usage_capacity = 0;
@ -83,9 +83,9 @@ class RjxzsBms : public CanBattery {
uint16_t low_voltage_power_outage_delayed = 0;
uint16_t num_of_triggering_protection_cells = 0;
uint16_t balanced_reference_voltage = 0;
uint16_t minimum_cell_voltage = 0;
uint16_t maximum_cell_voltage = 0;
uint16_t cellvoltages[MAX_AMOUNT_CELLS];
uint16_t minimum_cell_voltage = 3300;
uint16_t maximum_cell_voltage = 3300;
uint16_t cellvoltages[MAX_AMOUNT_CELLS] = {0};
uint8_t populated_cellvoltages = 0;
uint16_t accumulated_total_capacity_high = 0;
uint16_t accumulated_total_capacity_low = 0;