317 static const std::array<std::pair<eOas_battery_alarm_status_t, std::string_view>, eoas_battery_alarm_status_numberof> s_boards_map_of_battery_alarm_status =
319 {{eoas_bms_general_alarm_lowvoltage,
"eoas_bms_general_alarm_lowvoltage"},
320 {eoas_bms_general_alarm_highvoltage,
"eoas_bms_general_alarm_highvoltage"},
321 {eoas_bms_general_alarm_overcurrent_discharge,
"eoas_bms_general_alarm_overcurrent_discharge"},
322 {eoas_bms_general_alarm_overcurrent_charge,
"eoas_bms_general_alarm_overcurrent_charge"},
323 {eoas_bms_general_alarm_lowSOC,
"eoas_bms_general_alarm_lowSOC"},
324 {eoas_bms_general_alarm_lowtemperature,
"eoas_bms_general_alarm_lowtemperature"},
325 {eoas_bms_general_alarm_hightemperature,
"eoas_bms_general_alarm_hightemperature"},
326 {eoas_bat_status_hsm_mosfet_broken,
"eoas_bat_status_hsm_mosfet_broken"},
327 {eoas_bat_status_hsm_mosfet_normal,
"eoas_bat_status_hsm_mosfet_normal"},
328 {eoas_bat_status_hsm_overcurrent_overvoltage,
"eoas_bat_status_hsm_overcurrent_overvoltage"},
329 {eoas_bat_status_hsm_normal,
"eoas_bat_status_hsm_normal"},
330 {eoas_bat_status_hsm_voltage_power_good,
"eoas_bat_status_hsm_voltage_power_good"},
331 {eoas_bat_status_hsm_voltage_not_guaranteed,
"eoas_bat_status_hsm_voltage_not_guaranteed"},
332 {eoas_bat_status_hsm_status_on,
"eoas_bat_status_hsm_status_on"},
333 {eoas_bat_status_hsm_status_off,
"eoas_bat_status_hsm_status_off"},
334 {eoas_bat_status_motor_regulator_overcurrent,
"eoas_bat_status_motor_regulator_overcurrent"},
335 {eoas_bat_status_motor_regulator_normal,
"eoas_bat_status_motor_regulator_normal"},
336 {eoas_bat_status_motor_on,
"eoas_bat_status_motor_on"},
337 {eoas_bat_status_motor_off,
"eoas_bat_status_motor_off"},
338 {eoas_bat_status_board_regulator_overcurrent,
"eoas_bat_status_board_regulator_overcurrent"},
339 {eoas_bat_status_board_regulator_normal,
"eoas_bat_status_board_regulator_normal"},
340 {eoas_bat_status_board_on,
"eoas_bat_status_board_on"},
341 {eoas_bat_status_board_off,
"eoas_bat_status_board_off"},
342 {eoas_bat_status_btn_2_start_up_phase,
"eoas_bat_status_btn_2_start_up_phase"},
343 {eoas_bat_status_btn_2_stable_op,
"eoas_bat_status_btn_2_stable_op"},
344 {eoas_bat_status_btn_1_start_up_phase,
"eoas_bat_status_btn_1_start_up_phase"},
345 {eoas_bat_status_btn_1_stable_op,
"eoas_bat_status_btn_1_stable_op"}}
349 std::string statusstring = {};
350 statusstring.reserve(512);
354 for (uint8_t i = 0; i < eoas_bms_alarm_numberof; i++)
356 if((embot::core::binary::bit::check(currStatus, i)))
358 statusstring.append(
"\t");
359 statusstring.append(s_boards_map_of_battery_alarm_status.at(i).second);
360 statusstring.append(
"\n");
367 for (uint8_t i = eoas_bms_alarm_numberof; i < eoas_battery_alarm_status_numberof; i = i+2)
369 if ((embot::core::binary::bit::check(currStatus, bit_pos) != embot::core::binary::bit::check(prevStatus, bit_pos)) || isFirstLoop)
371 statusstring.append(
"\t");
372 if((embot::core::binary::bit::check(currStatus, bit_pos)))
374 statusstring.append(s_boards_map_of_battery_alarm_status.at(i).second);
378 statusstring.append(s_boards_map_of_battery_alarm_status.at(i+1).second);
380 statusstring.append(
"\n");
387 if(statusstring.empty())
389 statusstring.append(
"\tNo Faults Detected. All Alarms Bit Down\n");