Skip to content

Commit 4037bfe

Browse files
committed
Add BMS CAN initialization failure monitor
Introduces a new sensor ID and BooleanMonitor for BMS CAN initialization failure. Updates string and abbreviation mappings to support the new monitor, enabling alerting when BMS CAN initialization fails.
1 parent 1d6635a commit 4037bfe

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

inc/sp140/simple_monitor.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ enum class SensorID {
5959
BMS_Voltage_Differential,
6060
BMS_Charge_MOS,
6161
BMS_Discharge_MOS,
62+
BMS_CAN_Init_Failure,
6263

6364
// Altimeter
6465
Baro_Temp,

src/sp140/bms_monitors.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ extern MultiLogger multiLogger;
99
// External references to thread-safe data copies
1010
extern STR_BMS_TELEMETRY_140 monitoringBmsData;
1111

12+
// External reference to BMS CAN initialization status
13+
extern bool bmsCanInitialized;
14+
1215
void addBMSMonitors() {
1316
// BMS MOSFET Temperature (Warning: 50°C, Critical: 60°C) - with hysteresis
1417
static HysteresisSensorMonitor* bmsMosTemp = new HysteresisSensorMonitor(
@@ -125,4 +128,14 @@ void addBMSMonitors() {
125128
AlertLevel::CRIT_HIGH,
126129
&multiLogger);
127130
monitors.push_back(bmsDischargeMos);
131+
132+
// BMS CAN Initialization (Alert when failed)
133+
static BooleanMonitor* bmsCanInitFailure = new BooleanMonitor(
134+
SensorID::BMS_CAN_Init_Failure,
135+
SensorCategory::BMS,
136+
[]() { return bmsCanInitialized; },
137+
false, // Alert when false (i.e., when initialization failed)
138+
AlertLevel::WARN_HIGH,
139+
&multiLogger);
140+
monitors.push_back(bmsCanInitFailure);
128141
}

src/sp140/simple_monitor.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ const char* sensorIDToString(SensorID id) {
123123
case SensorID::BMS_Voltage_Differential: return "BMS_Voltage_Differential";
124124
case SensorID::BMS_Charge_MOS: return "BMS_Charge_MOS";
125125
case SensorID::BMS_Discharge_MOS: return "BMS_Discharge_MOS";
126+
case SensorID::BMS_CAN_Init_Failure: return "BMS_CAN_Init_Failure";
126127

127128
// Altimeter
128129
case SensorID::Baro_Temp: return "Baro_Temp";
@@ -180,6 +181,7 @@ const char* sensorIDToAbbreviation(SensorID id) {
180181
case SensorID::BMS_Voltage_Differential:return "BC-dV";
181182
case SensorID::BMS_Charge_MOS: return "BC-CHG";
182183
case SensorID::BMS_Discharge_MOS: return "BC-DSG";
184+
case SensorID::BMS_CAN_Init_Failure: return "BC-CAN";
183185

184186
// Altimeter
185187
case SensorID::Baro_Temp: return "BARO-T";

0 commit comments

Comments
 (0)