diff --git a/Software/src/battery/NISSAN-LEAF-BATTERY.cpp b/Software/src/battery/NISSAN-LEAF-BATTERY.cpp index 2791e0b8..b4b94b65 100644 --- a/Software/src/battery/NISSAN-LEAF-BATTERY.cpp +++ b/Software/src/battery/NISSAN-LEAF-BATTERY.cpp @@ -329,6 +329,9 @@ void update_values_battery() { /* This function maps all the values fetched via } // Update webserver datalayer + memcpy(datalayer_extended.nissanleaf.BatterySerialNumber, BatterySerialNumber, sizeof(BatterySerialNumber)); + memcpy(datalayer_extended.nissanleaf.BatteryPartNumber, BatteryPartNumber, sizeof(BatteryPartNumber)); + memcpy(datalayer_extended.nissanleaf.BMSIDcode, BMSIDcode, sizeof(BMSIDcode)); datalayer_extended.nissanleaf.LEAF_gen = LEAF_battery_Type; datalayer_extended.nissanleaf.GIDS = battery_GIDS; datalayer_extended.nissanleaf.ChargePowerLimit = battery_Charge_Power_Limit; diff --git a/Software/src/datalayer/datalayer_extended.h b/Software/src/datalayer/datalayer_extended.h index e4aa0c02..0d9b2d3f 100644 --- a/Software/src/datalayer/datalayer_extended.h +++ b/Software/src/datalayer/datalayer_extended.h @@ -215,6 +215,11 @@ typedef struct { } DATALAYER_INFO_TESLA; typedef struct { + /** uint8_t */ + /** Battery info, stores raw HEX values for ASCII chars */ + uint8_t BatterySerialNumber[15] = {0}; + uint8_t BatteryPartNumber[7] = {0}; + uint8_t BMSIDcode[8] = {0}; /** uint8_t */ /** Enum, ZE0 = 0, AZE0 = 1, ZE1 = 2 */ uint8_t LEAF_gen = 0; diff --git a/Software/src/devboard/webserver/advanced_battery_html.cpp b/Software/src/devboard/webserver/advanced_battery_html.cpp index 5806bb32..3f7eec4e 100644 --- a/Software/src/devboard/webserver/advanced_battery_html.cpp +++ b/Software/src/devboard/webserver/advanced_battery_html.cpp @@ -399,6 +399,20 @@ String advanced_battery_processor(const String& var) { #ifdef NISSAN_LEAF_BATTERY static const char* LEAFgen[] = {"ZE0", "AZE0", "ZE1"}; content += "

LEAF generation: " + String(LEAFgen[datalayer_extended.nissanleaf.LEAF_gen]) + "

"; + char readableSerialNumber[16]; // One extra space for null terminator + memcpy(readableSerialNumber, datalayer_extended.nissanleaf.BatterySerialNumber, + sizeof(datalayer_extended.nissanleaf.BatterySerialNumber)); + readableSerialNumber[15] = '\0'; // Null terminate the string + content += "

Serial number: " + String(readableSerialNumber) + "

"; + char readablePartNumber[8]; // One extra space for null terminator + memcpy(readablePartNumber, datalayer_extended.nissanleaf.BatteryPartNumber, + sizeof(datalayer_extended.nissanleaf.BatteryPartNumber)); + readablePartNumber[7] = '\0'; // Null terminate the string + content += "

Part number: " + String(readablePartNumber) + "

"; + char readableBMSID[9]; // One extra space for null terminator + memcpy(readableBMSID, datalayer_extended.nissanleaf.BMSIDcode, sizeof(datalayer_extended.nissanleaf.BMSIDcode)); + readableBMSID[8] = '\0'; // Null terminate the string + content += "

BMS ID: " + String(readableBMSID) + "

"; content += "

GIDS: " + String(datalayer_extended.nissanleaf.GIDS) + "

"; content += "

Regen kW: " + String(datalayer_extended.nissanleaf.ChargePowerLimit) + "

"; content += "

Charge kW: " + String(datalayer_extended.nissanleaf.MaxPowerForCharger) + "

";