Update bool values in datalayer and advanced battery

This commit is contained in:
josiahhiggs 2024-12-26 10:35:48 +13:00
parent a113cd3093
commit 4f07290d17
2 changed files with 103 additions and 103 deletions

View file

@ -215,12 +215,12 @@ typedef struct {
uint8_t packCtrsClosingAllowed = 0;
/** uint8_t */
/** Pyro test in progress */
uint8_t pyroTestInProgress = 0;
uint8_t battery_packCtrsOpenNowRequested = 0;
uint8_t battery_packCtrsOpenRequested = 0;
bool pyroTestInProgress = false;
bool battery_packCtrsOpenNowRequested = false;
bool battery_packCtrsOpenRequested = false;
uint8_t battery_packCtrsRequestStatus = 0;
uint8_t battery_packCtrsResetRequestRequired = 0;
uint8_t battery_dcLinkAllowedToEnergize = 0;
bool battery_packCtrsResetRequestRequired = false;
bool battery_dcLinkAllowedToEnergize = false;
uint8_t battery_beginning_of_life = 0;
uint8_t battery_battTempPct = 0;
uint16_t battery_dcdcLvBusVolt = 0;
@ -238,8 +238,8 @@ typedef struct {
uint16_t battery_energy_buffer_m1 = 0;
uint16_t battery_expected_energy_remaining = 0;
uint16_t battery_expected_energy_remaining_m1 = 0;
uint16_t battery_full_charge_complete = 0;
uint8_t battery_fully_charged = 0;
bool battery_full_charge_complete = false;
bool battery_fully_charged = false;
uint16_t battery_total_discharge = 0;
uint16_t battery_total_charge = 0;
uint16_t battery_BrickVoltageMax = 0;
@ -268,16 +268,16 @@ typedef struct {
uint8_t battery_BMS_hvState = 0;
uint16_t battery_BMS_isolationResistance = 0;
uint8_t battery_BMS_uiChargeStatus = 0;
uint8_t battery_BMS_diLimpRequest = 0;
bool battery_BMS_diLimpRequest = false;
uint16_t battery_BMS_chgPowerAvailable = 0;
uint8_t battery_BMS_pcsPwmEnabled = 0;
bool battery_BMS_pcsPwmEnabled = false;
uint8_t battery_PCS_dcdcPrechargeStatus = 0;
uint8_t battery_PCS_dcdc12VSupportStatus = 0;
uint8_t battery_PCS_dcdcHvBusDischargeStatus = 0;
uint8_t battery_PCS_dcdcMainState = 0;
uint8_t battery_PCS_dcdcSubState = 0;
uint8_t battery_PCS_dcdcFaulted = 0;
uint8_t battery_PCS_dcdcOutputIsLimited = 0;
bool battery_PCS_dcdcFaulted = false;
bool battery_PCS_dcdcOutputIsLimited = false;
uint16_t battery_PCS_dcdcMaxOutputCurrentAllowed = 0;
uint8_t battery_PCS_dcdcPrechargeRtyCnt = 0;
uint8_t battery_PCS_dcdc12VSupportRtyCnt = 0;
@ -300,8 +300,8 @@ typedef struct {
uint16_t BMS_inletActiveHeatTargetT = 0;
uint16_t BMS_packTMin = 0;
uint16_t BMS_packTMax = 0;
uint8_t BMS_pcsNoFlowRequest = 0;
uint8_t BMS_noFlowRequest = 0;
bool BMS_pcsNoFlowRequest = false;
bool BMS_noFlowRequest = false;
uint16_t PCS_dcdcTemp = 0;
uint16_t PCS_ambientTemp = 0;
uint16_t PCS_dcdcMaxLvOutputCurrent = 0;
@ -324,37 +324,37 @@ typedef struct {
uint16_t PCS_dcdcIntervalMinLvBusVolt = 0;
uint16_t PCS_dcdcIntervalMinLvOutputCurr = 0;
uint32_t PCS_dcdc12vSupportLifetimekWh = 0;
uint8_t HVP_gpioPassivePyroDepl = 0;
uint8_t HVP_gpioPyroIsoEn = 0;
uint8_t HVP_gpioCpFaultIn = 0;
uint8_t HVP_gpioPackContPowerEn = 0;
uint8_t HVP_gpioHvCablesOk = 0;
uint8_t HVP_gpioHvpSelfEnable = 0;
uint8_t HVP_gpioLed = 0;
uint8_t HVP_gpioCrashSignal = 0;
uint8_t HVP_gpioShuntDataReady = 0;
uint8_t HVP_gpioFcContPosAux = 0;
uint8_t HVP_gpioFcContNegAux = 0;
uint8_t HVP_gpioBmsEout = 0;
uint8_t HVP_gpioCpFaultOut = 0;
uint8_t HVP_gpioPyroPor = 0;
uint8_t HVP_gpioShuntEn = 0;
uint8_t HVP_gpioHvpVerEn = 0;
uint8_t HVP_gpioPackCoontPosFlywheel = 0;
uint8_t HVP_gpioCpLatchEnable = 0;
uint8_t HVP_gpioPcsEnable = 0;
uint8_t HVP_gpioPcsDcdcPwmEnable = 0;
uint8_t HVP_gpioPcsChargePwmEnable = 0;
uint8_t HVP_gpioFcContPowerEnable = 0;
uint8_t HVP_gpioHvilEnable = 0;
uint8_t HVP_gpioSecDrdy = 0;
bool HVP_gpioPassivePyroDepl = false;
bool HVP_gpioPyroIsoEn = false;
bool HVP_gpioCpFaultIn = false;
bool HVP_gpioPackContPowerEn = false;
bool HVP_gpioHvCablesOk = false;
bool HVP_gpioHvpSelfEnable = false;
bool HVP_gpioLed = false;
bool HVP_gpioCrashSignal = false;
bool HVP_gpioShuntDataReady = false;
bool HVP_gpioFcContPosAux = false;
bool HVP_gpioFcContNegAux = false;
bool HVP_gpioBmsEout = false;
bool HVP_gpioCpFaultOut = false;
bool HVP_gpioPyroPor = false;
bool HVP_gpioShuntEn = false;
bool HVP_gpioHvpVerEn = false;
bool HVP_gpioPackCoontPosFlywheel = false;
bool HVP_gpioCpLatchEnable = false;
bool HVP_gpioPcsEnable = false;
bool HVP_gpioPcsDcdcPwmEnable = false;
bool HVP_gpioPcsChargePwmEnable = false;
bool HVP_gpioFcContPowerEnable = false;
bool HVP_gpioHvilEnable = false;
bool HVP_gpioSecDrdy = false;
uint16_t HVP_hvp1v5Ref = 0;
uint16_t HVP_shuntCurrentDebug = 0;
uint8_t HVP_packCurrentMia = 0;
uint8_t HVP_auxCurrentMia = 0;
uint8_t HVP_currentSenseMia = 0;
uint8_t HVP_shuntRefVoltageMismatch = 0;
uint8_t HVP_shuntThermistorMia = 0;
bool HVP_packCurrentMia = false;
bool HVP_auxCurrentMia = false;
bool HVP_currentSenseMia = false;
bool HVP_shuntRefVoltageMismatch = false;
bool HVP_shuntThermistorMia = false;
uint8_t HVP_shuntHwMia = 0;
uint16_t HVP_dcLinkVoltage = 0;
uint16_t HVP_packVoltage = 0;

View file

@ -502,20 +502,20 @@ String advanced_battery_processor(const String& var) {
"<h4>Negative contactor: " + String(contactorState[datalayer_extended.tesla.packContNegativeState]) + "</h4>";
content +=
"<h4>Positive contactor: " + String(contactorState[datalayer_extended.tesla.packContPositiveState]) + "</h4>";
content += "<h4>Closing allowed?: " + String(falseTrue[datalayer_extended.tesla.packCtrsClosingAllowed]) + "</h4>";
content += "<h4>Pyrotest in Progress: " + String(falseTrue[datalayer_extended.tesla.pyroTestInProgress]) + "</h4>";
content += "<h4>Closing allowed?: " + String(datalayer_extended.tesla.packCtrsClosingAllowed) + "</h4>"; //bool
content += "<h4>Pyrotest in Progress: " + String(datalayer_extended.tesla.pyroTestInProgress) + "</h4>"; //bool
content += "<h4>Contactors Open Now Requested: " +
String(noYes[datalayer_extended.tesla.battery_packCtrsOpenNowRequested]) + "</h4>";
String(datalayer_extended.tesla.battery_packCtrsOpenNowRequested) + "</h4>"; //bool
content +=
"<h4>Contactors Open Requested: " + String(noYes[datalayer_extended.tesla.battery_packCtrsOpenRequested]) +
"</h4>";
"<h4>Contactors Open Requested: " + String(datalayer_extended.tesla.battery_packCtrsOpenRequested) +
"</h4>"; //bool
content += "<h4>Contactors Request Status: " +
String(HVP_contactor[datalayer_extended.tesla.battery_packCtrsRequestStatus]) + "</h4>";
content += "<h4>Contactors Reset Request Required: " +
String(noYes[datalayer_extended.tesla.battery_packCtrsResetRequestRequired]) + "</h4>";
String(datalayer_extended.tesla.battery_packCtrsResetRequestRequired) + "</h4>"; //bool
content +=
"<h4>DC Link Allowed to Energize:" + String(noYes[datalayer_extended.tesla.battery_dcLinkAllowedToEnergize]) +
"</h4>";
"<h4>DC Link Allowed to Energize:" + String(datalayer_extended.tesla.battery_dcLinkAllowedToEnergize) +
"</h4>"; //bool
// Comment what data you would like to dislay, order can be changed.
//0x292 658 BMS_socStates
content += "<h4>Battery Beginning of Life: " + String(beginning_of_life) + " KWh</h4>";
@ -544,25 +544,25 @@ String advanced_battery_processor(const String& var) {
"<h4>Main State: " + String(PCS_dcdcMainState[datalayer_extended.tesla.battery_PCS_dcdcMainState]) + "</h4>";
content +=
"<h4>Sub State: " + String(PCS_dcdcSubState[datalayer_extended.tesla.battery_PCS_dcdcSubState]) + "</h4>";
content += "<h4>PCS Faulted: " + String(noYes[datalayer_extended.tesla.battery_PCS_dcdcFaulted]) + "</h4>";
content += "<h4>PCS Faulted: " + String(datalayer_extended.tesla.battery_PCS_dcdcFaulted) + "</h4>"; //bool
content +=
"<h4>Output Is Limited: " + String(noYes[datalayer_extended.tesla.battery_PCS_dcdcOutputIsLimited]) + "</h4>";
"<h4>Output Is Limited: " + String(datalayer_extended.tesla.battery_PCS_dcdcOutputIsLimited) + "</h4>"; //bool
content += "<h4>Max Output Current Allowed: " + String(PCS_dcdcMaxOutputCurrentAllowed) + " A</h4>";
content += "<h4>Precharge Rty Cnt: " + String(falseTrue[datalayer_extended.tesla.battery_PCS_dcdcPrechargeRtyCnt]) +
"</h4>";
content += "<h4>Precharge Rty Cnt: " + String(datalayer_extended.tesla.battery_PCS_dcdcPrechargeRtyCnt) +
"</h4>"; //bool
content +=
"<h4>12V Support Rty Cnt: " + String(falseTrue[datalayer_extended.tesla.battery_PCS_dcdc12VSupportRtyCnt]) +
"</h4>";
content += "<h4>Discharge Rty Cnt: " + String(falseTrue[datalayer_extended.tesla.battery_PCS_dcdcDischargeRtyCnt]) +
"</h4>";
"<h4>12V Support Rty Cnt: " + String(datalayer_extended.tesla.battery_PCS_dcdc12VSupportRtyCnt) +
"</h4>"; // bool
content += "<h4>Discharge Rty Cnt: " + String(datalayer_extended.tesla.battery_PCS_dcdcDischargeRtyCnt) +
"</h4>"; //bool
content +=
"<h4>PWM Enable Line: " + String(noYes[datalayer_extended.tesla.battery_PCS_dcdcPwmEnableLine]) + "</h4>";
"<h4>PWM Enable Line: " + String(datalayer_extended.tesla.battery_PCS_dcdcPwmEnableLine) + "</h4>"; //bool
content += "<h4>Supporting Fixed LV Target: " +
String(noYes[datalayer_extended.tesla.battery_PCS_dcdcSupportingFixedLvTarget]) + "</h4>";
String(datalayer_extended.tesla.battery_PCS_dcdcSupportingFixedLvTarget) + "</h4>"; //bool
content += "<h4>Precharge Restart Cnt: " +
String(falseTrue[datalayer_extended.tesla.battery_PCS_dcdcPrechargeRestartCnt]) + "</h4>";
String(datalayer_extended.tesla.battery_PCS_dcdcPrechargeRestartCnt) + "</h4>"; //bool
content += "<h4>Initial Precharge Substate: " +
String(falseTrue[datalayer_extended.tesla.battery_PCS_dcdcInitialPrechargeSubState]) + "</h4>";
String(PCS_dcdcSubState[datalayer_extended.tesla.battery_PCS_dcdcInitialPrechargeSubState]) + "</h4>";
//0x2C4 708 PCS_logging
content += "<h4>PCS_dcdcMaxLvOutputCurrent: " + String(PCS_dcdcMaxLvOutputCurrent) + " A</h4>";
content += "<h4>PCS_dcdcCurrentLimit: " + String(PCS_dcdcCurrentLimit) + " A</h4>";
@ -597,7 +597,7 @@ String advanced_battery_processor(const String& var) {
content += "<h4>BMS UI Charge Status: " + String(BMS_uiChargeStatus[datalayer_extended.tesla.battery_BMS_hvState]) +
"</h4>";
content +=
"<h4>BMS PCS PWM Enabled: " + String(noYes[datalayer_extended.tesla.battery_BMS_pcsPwmEnabled]) + "</h4>";
"<h4>BMS PCS PWM Enabled: " + String(datalayer_extended.tesla.battery_BMS_pcsPwmEnabled) + "</h4>"; //bool
//0x352 850 BMS_energyStatus
content += "<h3>Early BMS 0x352:</h3>"; //if using older BMS <2021 and comment 0x352 without MUX
content += "<h4>Calculated SOH: " + String(nominal_full_pack_energy * 100 / beginning_of_life) + "</h4>";
@ -607,7 +607,7 @@ String advanced_battery_processor(const String& var) {
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(noYes[datalayer_extended.tesla.battery_full_charge_complete]) + "</h4>";
"<h4>Full Charge Complete: " + String(datalayer_extended.tesla.battery_full_charge_complete) + "</h4>"; //bool
//0x352 850 BMS_energyStatus
content += "<h3>Late BMS 0x352 with Mux:</h3>"; //if using newer BMS >2021 and comment 0x352 with MUX
content += "<h4>Calculated SOH: " + String(nominal_full_pack_energy_m0 * 100 / beginning_of_life) + "</h4>";
@ -617,7 +617,7 @@ String advanced_battery_processor(const String& var) {
content += "<h4>Energy to Charge Complete: " + String(energy_to_charge_complete_m1) + " KWh</h4>";
content += "<h4>Energy Buffer: " + String(energy_buffer_m1) + " KWh</h4>";
content += "<h4>Expected Energy Remaining: " + String(expected_energy_remaining_m1) + " KWh</h4>";
content += "<h4>Fully Charged: " + String(noYes[datalayer_extended.tesla.battery_fully_charged]) + "</h4>";
content += "<h4>Fully Charged: " + String(datalayer_extended.tesla.battery_fully_charged) + "</h4>"; //bool
//0x392 BMS_packConfig
content += "<h4>packConfigMultiplexer: " + String(datalayer_extended.tesla.battery_packConfigMultiplexer) + "</h4>";
content += "<h4>moduleType: " + String(datalayer_extended.tesla.battery_moduleType) + "</h4>";
@ -642,8 +642,8 @@ String advanced_battery_processor(const String& var) {
content += "<h4>Max Stationary Heat Power: " + String(BMS_maxStationaryHeatPower) + " KWh</h4>";
content += "<h4>HVAC Power Budget: " + String(BMS_hvacPowerBudget) + " KW</h4>";
content +=
"<h4>Not Enough Power For Heat Pump: " + String(noYes[datalayer_extended.tesla.BMS_notEnoughPowerForHeatPump]) +
"</h4>";
"<h4>Not Enough Power For Heat Pump: " + String(datalayer_extended.tesla.BMS_notEnoughPowerForHeatPump) +
"</h4>"; //bool
content +=
"<h4>Power Limit State: " + String(BMS_powerLimitState[datalayer_extended.tesla.BMS_powerLimitState]) + "</h4>";
content += "<h4>Inverter TQF: " + String(datalayer_extended.tesla.BMS_inverterTQF) + "</h4>";
@ -655,57 +655,57 @@ String advanced_battery_processor(const String& var) {
content += "<h4>Inlet Active Heat Target Temp: " + String(BMS_inletActiveHeatTargetT) + " DegC</h4>";
content += "<h4>Pack Temp Min: " + String(BMS_packTMin) + " DegC</h4>";
content += "<h4>Pack Temp Max: " + String(BMS_packTMax) + " DegC</h4>";
content += "<h4>PCS No Flow Request: " + String(falseTrue[datalayer_extended.tesla.BMS_pcsNoFlowRequest]) + "</h4>";
content += "<h4>BMS No Flow Request: " + String(falseTrue[datalayer_extended.tesla.BMS_noFlowRequest]) + "</h4>";
content += "<h4>PCS No Flow Request: " + String(datalayer_extended.tesla.BMS_pcsNoFlowRequest) + "</h4>"; //bool
content += "<h4>BMS No Flow Request: " + String(datalayer_extended.tesla.BMS_noFlowRequest) + "</h4>"; //bool
//0x7AA 1962 HVP_debugMessage
content +=
"<h4>HVP_gpioPassivePyroDepl: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioPassivePyroDepl]) + "</h4>";
content += "<h4>HVP_gpioPyroIsoEn: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioPyroIsoEn]) + "</h4>";
content += "<h4>HVP_gpioCpFaultIn: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioCpFaultIn]) + "</h4>";
"<h4>HVP_gpioPassivePyroDepl: " + String(datalayer_extended.tesla.HVP_gpioPassivePyroDepl) + "</h4>"; //bool
content += "<h4>HVP_gpioPyroIsoEn: " + String(datalayer_extended.tesla.HVP_gpioPyroIsoEn) + "</h4>"; //bool
content += "<h4>HVP_gpioCpFaultIn: " + String(datalayer_extended.tesla.HVP_gpioCpFaultIn) + "</h4>"; //bool
content +=
"<h4>HVP_gpioPackContPowerEn: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioPackContPowerEn]) + "</h4>";
content += "<h4>HVP_gpioHvCablesOk: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioHvCablesOk]) + "</h4>";
"<h4>HVP_gpioPackContPowerEn: " + String(datalayer_extended.tesla.HVP_gpioPackContPowerEn) + "</h4>"; //bool
content += "<h4>HVP_gpioHvCablesOk: " + String(datalayer_extended.tesla.HVP_gpioHvCablesOk) + "</h4>"; //bool
content +=
"<h4>HVP_gpioHvpSelfEnable: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioHvpSelfEnable]) + "</h4>";
content += "<h4>HVP_gpioLed: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioLed]) + "</h4>";
content += "<h4>HVP_gpioCrashSignal: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioCrashSignal]) + "</h4>";
"<h4>HVP_gpioHvpSelfEnable: " + String(datalayer_extended.tesla.HVP_gpioHvpSelfEnable) + "</h4>"; //bool
content += "<h4>HVP_gpioLed: " + String(datalayer_extended.tesla.HVP_gpioLed) + "</h4>"; //bool
content += "<h4>HVP_gpioCrashSignal: " + String(datalayer_extended.tesla.HVP_gpioCrashSignal) + "</h4>"; //bool
content +=
"<h4>HVP_gpioShuntDataReady: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioShuntDataReady]) + "</h4>";
"<h4>HVP_gpioShuntDataReady: " + String(datalayer_extended.tesla.HVP_gpioShuntDataReady) + "</h4>"; //bool
content +=
"<h4>HVP_gpioFcContPosAux: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioFcContPosAux]) + "</h4>";
"<h4>HVP_gpioFcContPosAux: " + String(datalayer_extended.tesla.HVP_gpioFcContPosAux) + "</h4>"; //bool
content +=
"<h4>HVP_gpioFcContNegAux: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioFcContNegAux]) + "</h4>";
content += "<h4>HVP_gpioBmsEout: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioBmsEout]) + "</h4>";
content += "<h4>HVP_gpioCpFaultOut: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioCpFaultOut]) + "</h4>";
content += "<h4>HVP_gpioPyroPor: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioPyroPor]) + "</h4>";
content += "<h4>HVP_gpioShuntEn: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioShuntEn]) + "</h4>";
content += "<h4>HVP_gpioHvpVerEn: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioHvpVerEn]) + "</h4>";
"<h4>HVP_gpioFcContNegAux: " + String(datalayer_extended.tesla.HVP_gpioFcContNegAux) + "</h4>"; //bool
content += "<h4>HVP_gpioBmsEout: " + String(datalayer_extended.tesla.HVP_gpioBmsEout) + "</h4>"; //bool
content += "<h4>HVP_gpioCpFaultOut: " + String(datalayer_extended.tesla.HVP_gpioCpFaultOut) + "</h4>"; //bool
content += "<h4>HVP_gpioPyroPor: " + String(datalayer_extended.tesla.HVP_gpioPyroPor) + "</h4>"; //bool
content += "<h4>HVP_gpioShuntEn: " + String(datalayer_extended.tesla.HVP_gpioShuntEn) + "</h4>"; //bool
content += "<h4>HVP_gpioHvpVerEn: " + String(datalayer_extended.tesla.HVP_gpioHvpVerEn) + "</h4>"; //bool
content += "<h4>HVP_gpioPackCoontPosFlywheel: " +
String(falseTrue[datalayer_extended.tesla.HVP_gpioPackCoontPosFlywheel]) + "</h4>";
String(datalayer_extended.tesla.HVP_gpioPackCoontPosFlywheel) + "</h4>"; //bool
content +=
"<h4>HVP_gpioCpLatchEnable: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioCpLatchEnable]) + "</h4>";
content += "<h4>HVP_gpioPcsEnable: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioPcsEnable]) + "</h4>";
content += "<h4>HVP_gpioPcsDcdcPwmEnable: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioPcsDcdcPwmEnable]) +
"</h4>";
"<h4>HVP_gpioCpLatchEnable: " + String(datalayer_extended.tesla.HVP_gpioCpLatchEnable) + "</h4>"; //bool
content += "<h4>HVP_gpioPcsEnable: " + String(datalayer_extended.tesla.HVP_gpioPcsEnable) + "</h4>"; //bool
content += "<h4>HVP_gpioPcsDcdcPwmEnable: " + String(datalayer_extended.tesla.HVP_gpioPcsDcdcPwmEnable) +
"</h4>"; //bool
content +=
"<h4>HVP_gpioPcsChargePwmEnable: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioPcsChargePwmEnable]) +
"</h4>";
"<h4>HVP_gpioPcsChargePwmEnable: " + String(datalayer_extended.tesla.HVP_gpioPcsChargePwmEnable) +
"</h4>"; //bool
content +=
"<h4>HVP_gpioFcContPowerEnable: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioFcContPowerEnable]) +
"</h4>";
content += "<h4>HVP_gpioHvilEnable: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioHvilEnable]) + "</h4>";
content += "<h4>HVP_gpioSecDrdy: " + String(falseTrue[datalayer_extended.tesla.HVP_gpioSecDrdy]) + "</h4>";
"<h4>HVP_gpioFcContPowerEnable: " + String(datalayer_extended.tesla.HVP_gpioFcContPowerEnable) +
"</h4>"; //bool
content += "<h4>HVP_gpioHvilEnable: " + String(datalayer_extended.tesla.HVP_gpioHvilEnable) + "</h4>"; //bool
content += "<h4>HVP_gpioSecDrdy: " + String(datalayer_extended.tesla.HVP_gpioSecDrdy) + "</h4>"; //bool
content += "<h4>HVP_hvp1v5Ref: " + String(HVP_hvp1v5Ref) + " V</h4>";
content += "<h4>HVP_shuntCurrentDebug: " + String(HVP_shuntCurrentDebug) + " A</h4>";
content += "<h4>HVP_packCurrentMia: " + String(falseTrue[datalayer_extended.tesla.HVP_packCurrentMia]) + "</h4>";
content += "<h4>HVP_auxCurrentMia: " + String(falseTrue[datalayer_extended.tesla.HVP_auxCurrentMia]) + "</h4>";
content += "<h4>HVP_currentSenseMia: " + String(falseTrue[datalayer_extended.tesla.HVP_currentSenseMia]) + "</h4>";
content += "<h4>HVP_packCurrentMia: " + String(datalayer_extended.tesla.HVP_packCurrentMia) + "</h4>"; //bool
content += "<h4>HVP_auxCurrentMia: " + String(datalayer_extended.tesla.HVP_auxCurrentMia) + "</h4>"; //bool
content += "<h4>HVP_currentSenseMia: " + String(datalayer_extended.tesla.HVP_currentSenseMia) + "</h4>"; //bool
content +=
"<h4>HVP_shuntRefVoltageMismatch: " + String(falseTrue[datalayer_extended.tesla.HVP_shuntRefVoltageMismatch]) +
"</h4>";
"<h4>HVP_shuntRefVoltageMismatch: " + String(datalayer_extended.tesla.HVP_shuntRefVoltageMismatch) +
"</h4>"; //bool
content +=
"<h4>HVP_shuntThermistorMia: " + String(falseTrue[datalayer_extended.tesla.HVP_shuntThermistorMia]) + "</h4>";
content += "<h4>HVP_shuntHwMia: " + String(falseTrue[datalayer_extended.tesla.HVP_shuntHwMia]) + "</h4>";
"<h4>HVP_shuntThermistorMia: " + String(datalayer_extended.tesla.HVP_shuntThermistorMia) + "</h4>"; //bool
content += "<h4>HVP_shuntHwMia: " + String(datalayer_extended.tesla.HVP_shuntHwMia) + "</h4>"; //bool
content += "<h4>HVP_dcLinkVoltage: " + String(HVP_dcLinkVoltage) + " V</h4>";
content += "<h4>HVP_packVoltage: " + String(HVP_packVoltage) + " V</h4>";
content += "<h4>HVP_fcLinkVoltage: " + String(HVP_fcLinkVoltage) + " V</h4>";