Formating

This commit is contained in:
josiahhiggs 2025-01-26 20:04:05 +13:00
parent f77d32a154
commit eeb2abd2e1
2 changed files with 304 additions and 190 deletions

View file

@ -806,205 +806,326 @@ static bool battery2_BMS_a180_SW_ECU_reset_blocked = false;
#endif //DOUBLE_BATTERY
inline const char* getNoYes(bool value) {
return value ? "Yes" : "No";
return value ? "Yes" : "No";
}
inline const char* getContactorText(int index) {
switch (index) {
case 0: return "UNKNOWN(0)";
case 1: return "OPEN";
case 2: return "CLOSING";
case 3: return "BLOCKED";
case 4: return "OPENING";
case 5: return "CLOSED";
case 6: return "UNKNOWN(6)";
case 7: return "WELDED";
case 8: return "POS_CL";
case 9: return "NEG_CL";
case 10: return "UNKNOWN(10)";
case 11: return "UNKNOWN(11)";
case 12: return "UNKNOWN(12)";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "UNKNOWN(0)";
case 1:
return "OPEN";
case 2:
return "CLOSING";
case 3:
return "BLOCKED";
case 4:
return "OPENING";
case 5:
return "CLOSED";
case 6:
return "UNKNOWN(6)";
case 7:
return "WELDED";
case 8:
return "POS_CL";
case 9:
return "NEG_CL";
case 10:
return "UNKNOWN(10)";
case 11:
return "UNKNOWN(11)";
case 12:
return "UNKNOWN(12)";
default:
return "UNKNOWN";
}
}
inline const char* getContactorState(int index) {
switch (index) {
case 0: return "SNA";
case 1: return "OPEN";
case 2: return "PRECHARGE";
case 3: return "BLOCKED";
case 4: return "PULLED_IN";
case 5: return "OPENING";
case 6: return "ECONOMIZED";
case 7: return "WELDED";
case 8: return "UNKNOWN(8)";
case 9: return "UNKNOWN(9)";
case 10: return "UNKNOWN(10)";
case 11: return "UNKNOWN(11)";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "SNA";
case 1:
return "OPEN";
case 2:
return "PRECHARGE";
case 3:
return "BLOCKED";
case 4:
return "PULLED_IN";
case 5:
return "OPENING";
case 6:
return "ECONOMIZED";
case 7:
return "WELDED";
case 8:
return "UNKNOWN(8)";
case 9:
return "UNKNOWN(9)";
case 10:
return "UNKNOWN(10)";
case 11:
return "UNKNOWN(11)";
default:
return "UNKNOWN";
}
}
inline const char* getHvilStatusState(int index) {
switch (index) {
case 0: return "NOT OK";
case 1: return "STATUS_OK";
case 2: return "CURRENT_SOURCE_FAULT";
case 3: return "INTERNAL_OPEN_FAULT";
case 4: return "VEHICLE_OPEN_FAULT";
case 5: return "PENTHOUSE_LID_OPEN_FAULT";
case 6: return "UNKNOWN_LOCATION_OPEN_FAULT";
case 7: return "VEHICLE_NODE_FAULT";
case 8: return "NO_12V_SUPPLY";
case 9: return "VEHICLE_OR_PENTHOUSE_LID_OPENFAULT";
case 10: return "UNKNOWN(10)";
case 11: return "UNKNOWN(11)";
case 12: return "UNKNOWN(12)";
case 13: return "UNKNOWN(13)";
case 14: return "UNKNOWN(14)";
case 15: return "UNKNOWN(15)";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "NOT OK";
case 1:
return "STATUS_OK";
case 2:
return "CURRENT_SOURCE_FAULT";
case 3:
return "INTERNAL_OPEN_FAULT";
case 4:
return "VEHICLE_OPEN_FAULT";
case 5:
return "PENTHOUSE_LID_OPEN_FAULT";
case 6:
return "UNKNOWN_LOCATION_OPEN_FAULT";
case 7:
return "VEHICLE_NODE_FAULT";
case 8:
return "NO_12V_SUPPLY";
case 9:
return "VEHICLE_OR_PENTHOUSE_LID_OPENFAULT";
case 10:
return "UNKNOWN(10)";
case 11:
return "UNKNOWN(11)";
case 12:
return "UNKNOWN(12)";
case 13:
return "UNKNOWN(13)";
case 14:
return "UNKNOWN(14)";
case 15:
return "UNKNOWN(15)";
default:
return "UNKNOWN";
}
}
inline const char* getBMSState(int index) {
switch (index) {
case 0: return "STANDBY";
case 1: return "DRIVE";
case 2: return "SUPPORT";
case 3: return "CHARGE";
case 4: return "FEIM";
case 5: return "CLEAR_FAULT";
case 6: return "FAULT";
case 7: return "WELD";
case 8: return "TEST";
case 9: return "SNA";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "STANDBY";
case 1:
return "DRIVE";
case 2:
return "SUPPORT";
case 3:
return "CHARGE";
case 4:
return "FEIM";
case 5:
return "CLEAR_FAULT";
case 6:
return "FAULT";
case 7:
return "WELD";
case 8:
return "TEST";
case 9:
return "SNA";
default:
return "UNKNOWN";
}
}
inline const char* getBMSContactorState(int index) {
switch (index) {
case 0: return "SNA";
case 1: return "OPEN";
case 2: return "OPENING";
case 3: return "CLOSING";
case 4: return "CLOSED";
case 5: return "WELDED";
case 6: return "BLOCKED";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "SNA";
case 1:
return "OPEN";
case 2:
return "OPENING";
case 3:
return "CLOSING";
case 4:
return "CLOSED";
case 5:
return "WELDED";
case 6:
return "BLOCKED";
default:
return "UNKNOWN";
}
}
inline const char* getBMSHvState(int index) {
switch (index) {
case 0: return "DOWN";
case 1: return "COMING_UP";
case 2: return "GOING_DOWN";
case 3: return "UP_FOR_DRIVE";
case 4: return "UP_FOR_CHARGE";
case 5: return "UP_FOR_DC_CHARGE";
case 6: return "UP";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "DOWN";
case 1:
return "COMING_UP";
case 2:
return "GOING_DOWN";
case 3:
return "UP_FOR_DRIVE";
case 4:
return "UP_FOR_CHARGE";
case 5:
return "UP_FOR_DC_CHARGE";
case 6:
return "UP";
default:
return "UNKNOWN";
}
}
inline const char* getBMSUiChargeStatus(int index) {
switch (index) {
case 0: return "DISCONNECTED";
case 1: return "NO_POWER";
case 2: return "ABOUT_TO_CHARGE";
case 3: return "CHARGING";
case 4: return "CHARGE_COMPLETE";
case 5: return "CHARGE_STOPPED";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "DISCONNECTED";
case 1:
return "NO_POWER";
case 2:
return "ABOUT_TO_CHARGE";
case 3:
return "CHARGING";
case 4:
return "CHARGE_COMPLETE";
case 5:
return "CHARGE_STOPPED";
default:
return "UNKNOWN";
}
}
inline const char* getPCS_DcdcStatus(int index) {
switch (index) {
case 0: return "IDLE";
case 1: return "ACTIVE";
case 2: return "FAULTED";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "IDLE";
case 1:
return "ACTIVE";
case 2:
return "FAULTED";
default:
return "UNKNOWN";
}
}
inline const char* getPCS_DcdcMainState(int index) {
switch (index) {
case 0: return "STANDBY";
case 1: return "12V_SUPPORT_ACTIVE";
case 2: return "PRECHARGE_STARTUP";
case 3: return "PRECHARGE_ACTIVE";
case 4: return "DIS_HVBUS_ACTIVE";
case 5: return "SHUTDOWN";
case 6: return "FAULTED";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "STANDBY";
case 1:
return "12V_SUPPORT_ACTIVE";
case 2:
return "PRECHARGE_STARTUP";
case 3:
return "PRECHARGE_ACTIVE";
case 4:
return "DIS_HVBUS_ACTIVE";
case 5:
return "SHUTDOWN";
case 6:
return "FAULTED";
default:
return "UNKNOWN";
}
}
inline const char* getPCS_DcdcSubState(int index) {
switch (index) {
case 0: return "PWR_UP_INIT";
case 1: return "STANDBY";
case 2: return "12V_SUPPORT_ACTIVE";
case 3: return "DIS_HVBUS";
case 4: return "PCHG_FAST_DIS_HVBUS";
case 5: return "PCHG_SLOW_DIS_HVBUS";
case 6: return "PCHG_DWELL_CHARGE";
case 7: return "PCHG_DWELL_WAIT";
case 8: return "PCHG_DI_RECOVERY_WAIT";
case 9: return "PCHG_ACTIVE";
case 10: return "PCHG_FLT_FAST_DIS_HVBUS";
case 11: return "SHUTDOWN";
case 12: return "12V_SUPPORT_FAULTED";
case 13: return "DIS_HVBUS_FAULTED";
case 14: return "PCHG_FAULTED";
case 15: return "CLEAR_FAULTS";
case 16: return "FAULTED";
case 17: return "NUM";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "PWR_UP_INIT";
case 1:
return "STANDBY";
case 2:
return "12V_SUPPORT_ACTIVE";
case 3:
return "DIS_HVBUS";
case 4:
return "PCHG_FAST_DIS_HVBUS";
case 5:
return "PCHG_SLOW_DIS_HVBUS";
case 6:
return "PCHG_DWELL_CHARGE";
case 7:
return "PCHG_DWELL_WAIT";
case 8:
return "PCHG_DI_RECOVERY_WAIT";
case 9:
return "PCHG_ACTIVE";
case 10:
return "PCHG_FLT_FAST_DIS_HVBUS";
case 11:
return "SHUTDOWN";
case 12:
return "12V_SUPPORT_FAULTED";
case 13:
return "DIS_HVBUS_FAULTED";
case 14:
return "PCHG_FAULTED";
case 15:
return "CLEAR_FAULTS";
case 16:
return "FAULTED";
case 17:
return "NUM";
default:
return "UNKNOWN";
}
}
inline const char* getBMSPowerLimitState(int index) {
switch (index) {
case 0: return "NOT_CALCULATED_FOR_DRIVE";
case 1: return "CALCULATED_FOR_DRIVE";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "NOT_CALCULATED_FOR_DRIVE";
case 1:
return "CALCULATED_FOR_DRIVE";
default:
return "UNKNOWN";
}
}
inline const char* getHVPStatus(int index) {
switch (index) {
case 0: return "INVALID";
case 1: return "NOT_AVAILABLE";
case 2: return "STALE";
case 3: return "VALID";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "INVALID";
case 1:
return "NOT_AVAILABLE";
case 2:
return "STALE";
case 3:
return "VALID";
default:
return "UNKNOWN";
}
}
inline const char* getHVPContactor(int index) {
switch (index) {
case 0: return "NOT_ACTIVE";
case 1: return "ACTIVE";
case 2: return "COMPLETED";
default: return "UNKNOWN";
}
switch (index) {
case 0:
return "NOT_ACTIVE";
case 1:
return "ACTIVE";
case 2:
return "COMPLETED";
default:
return "UNKNOWN";
}
}
inline const char* getFalseTrue(bool value) {
return value ? "True" : "False";
return value ? "True" : "False";
}
inline const char* getNoYes(bool value) {
return value ? "Yes" : "No";
return value ? "Yes" : "No";
}
inline const char* getFault(bool value) {
return value ? "ACTIVE" : "NOT_ACTIVE";
return value ? "ACTIVE" : "NOT_ACTIVE";
}
void clearIsolationFault() {
@ -1353,8 +1474,7 @@ void update_values_battery() { //This function maps all the values fetched via
logging.println("mV.");
logging.printf("High Voltage Output Pins: %.2f V, Low Voltage: %.2f V, DC/DC 12V current: %.2f A.\n",
(battery_dcdcHvBusVolt * 0.146484),
(battery_dcdcLvBusVolt * 0.0390625),
(battery_dcdcHvBusVolt * 0.146484), (battery_dcdcLvBusVolt * 0.0390625),
(battery_dcdcLvOutputCurrent * 0.1));
logging.printf("PCS_ambientTemp: %.2f°C, DCDC_Temp: %.2f°C, ChgPhA: %.2f°C, ChgPhB: %.2f°C, ChgPhC: %.2f°C.\n",
@ -1396,7 +1516,7 @@ void handle_incoming_can_frame_battery(CAN_frame rx_frame) {
mux0_read = true; //Set flag to true
}
if (mux == 1) {
battery_fully_charged = (rx_frame.data.u8[1] & 0x01); //15|1@1+ (1,0) [0|1]//noYes
battery_fully_charged = (rx_frame.data.u8[1] & 0x01); //15|1@1+ (1,0) [0|1]//noYes
battery_energy_buffer_m1 =
((rx_frame.data.u8[3] << 8) | rx_frame.data.u8[2]); //16|16@1+ (0.01,0) [0|0] "kWh"//to datalayer_extended
battery_expected_energy_remaining_m1 =
@ -1427,13 +1547,13 @@ void handle_incoming_can_frame_battery(CAN_frame rx_frame) {
battery_energy_buffer = //BMS_energyBuffer : 55|8@1+ (0.1,0) [0|25.4] "KWh"// ((_d[7] & (0x7FU)) << 1) | ((_d[6] >> 7) & (0x01U));
(((rx_frame.data.u8[7] & 0xFE) >> 1) | ((rx_frame.data.u8[6] & 0x80) >> 7)); //Example 1 * 0.1 = 0
battery_full_charge_complete = //BMS_fullChargeComplete : 63|1@1+ (1,0) [0|1] ""//((_d[7] >> 7) & (0x01U));
((rx_frame.data.u8[7] >> 7) & 0x01); //noYes
((rx_frame.data.u8[7] >> 7) & 0x01); //noYes
break;
case 0x20A: //522 HVP_contactorState:
battery_packContNegativeState =
(rx_frame.data.u8[0] & 0x07); //(_d[0] & (0x07U)); 0|3@1+ (1,0) [0|7] //contactorState
battery_packContPositiveState =
(rx_frame.data.u8[0] & 0x38) >> 3; //((_d[0] >> 3) & (0x07U)); 3|3@1+ (1,0) [0|7] //contactorState
(rx_frame.data.u8[0] & 0x38) >> 3; //((_d[0] >> 3) & (0x07U)); 3|3@1+ (1,0) [0|7] //contactorState
battery_contactor = (rx_frame.data.u8[1] & 0x0F); // 8|4@1+ (1,0) [0|9] //contactorText
battery_packContactorSetState =
(rx_frame.data.u8[1] & 0x0F); //(_d[1] & (0x0FU)); 8|4@1+ (1,0) [0|9] //contactorState
@ -1443,25 +1563,20 @@ void handle_incoming_can_frame_battery(CAN_frame rx_frame) {
(rx_frame.data.u8[4] & 0x20) >> 5; //((_d[4] >> 5) & (0x01U));//37|1@1+ (1,0) [0|1] //noYes
battery_hvil_status =
(rx_frame.data.u8[5] & 0x0F); //(_d[5] & (0x0FU)); //40|4@1+ (1,0) [0|9] //hvilStatusState
battery_packCtrsOpenNowRequested =
((rx_frame.data.u8[4] >> 1) & (0x01U)); //33|1@1+ (1,0) [0|1] //noYes
battery_packCtrsOpenRequested =
((rx_frame.data.u8[4] >> 2) & (0x01U)); //34|1@1+ (1,0) [0|1] //noYes
battery_packCtrsRequestStatus =
((rx_frame.data.u8[3] >> 6) & (0x03U)); //30|2@1+ (1,0) [0|2] //HVP_contactor
battery_packCtrsResetRequestRequired =
(rx_frame.data.u8[4] & (0x01U)); //32|1@1+ (1,0) [0|1] //noYes
battery_dcLinkAllowedToEnergize =
((rx_frame.data.u8[4] >> 4) & (0x01U)); //36|1@1+ (1,0) [0|1] //noYes
battery_fcContNegativeAuxOpen = ((rx_frame.data.u8[0] >> 7) & (0x01U)); //7|1@1+ (1,0) [0|1] "" Receiver
battery_fcContNegativeState = ((rx_frame.data.u8[1] >> 4) & (0x07U)); //12|3@1+ (1,0) [0|7] "" Receiver
battery_fcContPositiveAuxOpen = ((rx_frame.data.u8[0] >> 6) & (0x01U)); //6|1@1+ (1,0) [0|1] "" Receiver
battery_fcContPositiveState = (rx_frame.data.u8[2] & (0x07U)); //16|3@1+ (1,0) [0|7] "" Receiver
battery_fcContactorSetState = ((rx_frame.data.u8[2] >> 3) & (0x0FU)); //19|4@1+ (1,0) [0|9] "" Receiver
battery_fcCtrsClosingAllowed = ((rx_frame.data.u8[3] >> 5) & (0x01U)); //29|1@1+ (1,0) [0|1] "" Receiver
battery_fcCtrsOpenNowRequested = ((rx_frame.data.u8[3] >> 3) & (0x01U)); //27|1@1+ (1,0) [0|1] "" Receiver
battery_fcCtrsOpenRequested = ((rx_frame.data.u8[3] >> 4) & (0x01U)); //28|1@1+ (1,0) [0|1] "" Receiver
battery_fcCtrsRequestStatus = (rx_frame.data.u8[3] & (0x03U)); //24|2@1+ (1,0) [0|2] "" Receiver
battery_packCtrsOpenNowRequested = ((rx_frame.data.u8[4] >> 1) & (0x01U)); //33|1@1+ (1,0) [0|1] //noYes
battery_packCtrsOpenRequested = ((rx_frame.data.u8[4] >> 2) & (0x01U)); //34|1@1+ (1,0) [0|1] //noYes
battery_packCtrsRequestStatus = ((rx_frame.data.u8[3] >> 6) & (0x03U)); //30|2@1+ (1,0) [0|2] //HVP_contactor
battery_packCtrsResetRequestRequired = (rx_frame.data.u8[4] & (0x01U)); //32|1@1+ (1,0) [0|1] //noYes
battery_dcLinkAllowedToEnergize = ((rx_frame.data.u8[4] >> 4) & (0x01U)); //36|1@1+ (1,0) [0|1] //noYes
battery_fcContNegativeAuxOpen = ((rx_frame.data.u8[0] >> 7) & (0x01U)); //7|1@1+ (1,0) [0|1] "" Receiver
battery_fcContNegativeState = ((rx_frame.data.u8[1] >> 4) & (0x07U)); //12|3@1+ (1,0) [0|7] "" Receiver
battery_fcContPositiveAuxOpen = ((rx_frame.data.u8[0] >> 6) & (0x01U)); //6|1@1+ (1,0) [0|1] "" Receiver
battery_fcContPositiveState = (rx_frame.data.u8[2] & (0x07U)); //16|3@1+ (1,0) [0|7] "" Receiver
battery_fcContactorSetState = ((rx_frame.data.u8[2] >> 3) & (0x0FU)); //19|4@1+ (1,0) [0|9] "" Receiver
battery_fcCtrsClosingAllowed = ((rx_frame.data.u8[3] >> 5) & (0x01U)); //29|1@1+ (1,0) [0|1] "" Receiver
battery_fcCtrsOpenNowRequested = ((rx_frame.data.u8[3] >> 3) & (0x01U)); //27|1@1+ (1,0) [0|1] "" Receiver
battery_fcCtrsOpenRequested = ((rx_frame.data.u8[3] >> 4) & (0x01U)); //28|1@1+ (1,0) [0|1] "" Receiver
battery_fcCtrsRequestStatus = (rx_frame.data.u8[3] & (0x03U)); //24|2@1+ (1,0) [0|2] "" Receiver
battery_fcCtrsResetRequestRequired = ((rx_frame.data.u8[3] >> 2) & (0x01U)); //26|1@1+ (1,0) [0|1] "" Receiver
battery_fcLinkAllowedToEnergize = ((rx_frame.data.u8[5] >> 4) & (0x03U)); //44|2@1+ (1,0) [0|2] "" Receiver
break;
@ -1516,9 +1631,9 @@ void handle_incoming_can_frame_battery(CAN_frame rx_frame) {
battery_PCS_dcdcMaxOutputCurrentAllowed = ((rx_frame.data.u8[5] & (0x01U)) << 11) |
((rx_frame.data.u8[4] & (0xFFU)) << 3) |
((rx_frame.data.u8[3] >> 5) & (0x07U)); //29|12@1+ (0.1,0) [0|0] "A"
battery_PCS_dcdcPrechargeRtyCnt = ((rx_frame.data.u8[5] >> 1) & (0x07U)); //Retry Count
battery_PCS_dcdc12VSupportRtyCnt = ((rx_frame.data.u8[5] >> 4) & (0x0FU)); //Retry Count
battery_PCS_dcdcDischargeRtyCnt = (rx_frame.data.u8[6] & (0x0FU)); //Retry Count
battery_PCS_dcdcPrechargeRtyCnt = ((rx_frame.data.u8[5] >> 1) & (0x07U)); //Retry Count
battery_PCS_dcdc12VSupportRtyCnt = ((rx_frame.data.u8[5] >> 4) & (0x0FU)); //Retry Count
battery_PCS_dcdcDischargeRtyCnt = (rx_frame.data.u8[6] & (0x0FU)); //Retry Count
battery_PCS_dcdcPwmEnableLine = ((rx_frame.data.u8[6] >> 4) & (0x01U));
battery_PCS_dcdcSupportingFixedLvTarget = ((rx_frame.data.u8[6] >> 5) & (0x01U));
battery_PCS_ecuLogUploadRequest = ((rx_frame.data.u8[6] >> 6) & (0x03U));

View file

@ -576,10 +576,10 @@ String advanced_battery_processor(const String& var) {
//0x20A 522 HVP_contatorState
content += "<h4>Contactor Status: " + String(getContactorText(datalayer_extended.tesla.status_contactor)) + "</h4>";
content += "<h4>HVIL: " + String(getHvilStatusState(datalayer_extended.tesla.hvil_status)) + "</h4>";
content +=
"<h4>Negative contactor: " + String(getContactorState(datalayer_extended.tesla.packContNegativeState)) + "</h4>";
content +=
"<h4>Positive contactor: " + String(getContactorState(datalayer_extended.tesla.packContPositiveState)) + "</h4>";
content += "<h4>Negative contactor: " + String(getContactorState(datalayer_extended.tesla.packContNegativeState)) +
"</h4>";
content += "<h4>Positive contactor: " + String(getContactorState(datalayer_extended.tesla.packContPositiveState)) +
"</h4>";
content += "<h4>Closing allowed?: " + String(getNoYes(datalayer_extended.tesla.packCtrsClosingAllowed)) + "</h4>";
content += "<h4>Pyrotest in Progress: " + String(getNoYes(datalayer_extended.tesla.pyroTestInProgress)) + "</h4>";
content += "<h4>Contactors Open Now Requested: " +
@ -591,9 +591,8 @@ String advanced_battery_processor(const String& var) {
String(getHVP_contactor(datalayer_extended.tesla.battery_packCtrsRequestStatus)) + "</h4>";
content += "<h4>Contactors Reset Request Required: " +
String(getNoYes(datalayer_extended.tesla.battery_packCtrsResetRequestRequired)) + "</h4>";
content +=
"<h4>DC Link Allowed to Energize: " + String(getNoYes(datalayer_extended.tesla.battery_dcLinkAllowedToEnergize)) +
"</h4>";
content += "<h4>DC Link Allowed to Energize: " +
String(getNoYes(datalayer_extended.tesla.battery_dcLinkAllowedToEnergize)) + "</h4>";
char readableSerialNumber[15]; // One extra space for null terminator
memcpy(readableSerialNumber, datalayer_extended.tesla.BMS_SerialNumber,
sizeof(datalayer_extended.tesla.BMS_SerialNumber));
@ -609,8 +608,9 @@ String advanced_battery_processor(const String& var) {
content += "<h4>Ideal Energy Remaining: " + String(ideal_energy_remaining) + " KWh</h4>";
content += "<h4>Energy to Charge Complete: " + String(energy_to_charge_complete) + " KWh</h4>";
content += "<h4>Energy Buffer: " + String(energy_buffer) + " KWh</h4>";
content += "<h4>Full Charge Complete: " + String(getNoYes(datalayer_extended.tesla.battery_full_charge_complete)) +
"</h4>"; //bool
content +=
"<h4>Full Charge Complete: " + String(getNoYes(datalayer_extended.tesla.battery_full_charge_complete)) +
"</h4>"; //bool
}
//0x352 850 BMS_energyStatus
if (datalayer_extended.tesla.BMS352_mux == true) {
@ -696,9 +696,8 @@ String advanced_battery_processor(const String& var) {
content +=
"<h4>Precharge Status: " + String(getPCS_dcdcStatus(datalayer_extended.tesla.battery_PCS_dcdcPrechargeStatus)) +
"</h4>";
content +=
"<h4>12V Support Status: " + String(getPCS_dcdcStatus(datalayer_extended.tesla.battery_PCS_dcdc12VSupportStatus)) +
"</h4>";
content += "<h4>12V Support Status: " +
String(getPCS_dcdcStatus(datalayer_extended.tesla.battery_PCS_dcdc12VSupportStatus)) + "</h4>";
content += "<h4>HV Bus Discharge Status: " +
String(getPCS_dcdcStatus(datalayer_extended.tesla.battery_PCS_dcdcHvBusDischargeStatus)) + "</h4>";
content +=