Add sanity check to minmax reading

This commit is contained in:
Daniel Öster 2025-01-12 22:52:04 +02:00
parent 1189acb5df
commit 7850fb6bb1

View file

@ -196,6 +196,8 @@ static uint8_t BMW_1D0_counter = 0;
static uint8_t BMW_13E_counter = 0;
static uint8_t BMW_380_counter = 0;
static uint32_t BMW_328_counter = 0;
static uint16_t cellvoltage_temp_mV = 0;
static uint16_t cellvoltage2_temp_mV = 0;
static bool battery_awake = false;
static bool battery2_awake = false;
static bool battery_info_available = false;
@ -662,8 +664,14 @@ void handle_incoming_can_frame_battery(CAN_frame rx_frame) {
switch (cmdState) {
case CELL_VOLTAGE_MINMAX:
if (next_data >= 4) {
datalayer.battery.status.cell_min_voltage_mV = (message_data[0] << 8 | message_data[1]);
datalayer.battery.status.cell_max_voltage_mV = (message_data[2] << 8 | message_data[3]);
cellvoltage_temp_mV = (message_data[0] << 8 | message_data[1]);
if (cellvoltage_temp_mV < 4500) { // Prevents garbage data from being read on bootup
datalayer.battery.status.cell_min_voltage_mV = cellvoltage_temp_mV;
}
cellvoltage_temp_mV = (message_data[2] << 8 | message_data[3]);
if (cellvoltage_temp_mV < 4500) { // Prevents garbage data from being read on bootup
datalayer.battery.status.cell_max_voltage_mV = cellvoltage_temp_mV;
}
}
break;
case SOH:
@ -843,8 +851,14 @@ void handle_incoming_can_frame_battery2(CAN_frame rx_frame) {
switch (cmdState) {
case CELL_VOLTAGE_MINMAX:
if (next_data >= 4) {
datalayer.battery2.status.cell_min_voltage_mV = (message_data[0] << 8 | message_data[1]);
datalayer.battery2.status.cell_max_voltage_mV = (message_data[2] << 8 | message_data[3]);
cellvoltage2_temp_mV = (message_data[0] << 8 | message_data[1]);
if (cellvoltage2_temp_mV < 4500) { // Prevents garbage data from being read on bootup
datalayer.battery2.status.cell_min_voltage_mV = cellvoltage2_temp_mV;
}
cellvoltage_temp_mV = (message_data[2] << 8 | message_data[3]);
if (cellvoltage_temp_mV < 4500) { // Prevents garbage data from being read on bootup
datalayer.battery2.status.cell_max_voltage_mV = cellvoltage2_temp_mV;
}
}
break;
case SOH: