#ifndef _GEELY_GEOMETRY_C_HTML_H #define _GEELY_GEOMETRY_C_HTML_H #include "../datalayer/datalayer.h" #include "../datalayer/datalayer_extended.h" #include "src/devboard/webserver/BatteryHtmlRenderer.h" class GeelyGeometryCHtmlRenderer : public BatteryHtmlRenderer { public: String get_status_html() { String content; char readableSerialNumber[29]; // One extra space for null terminator memcpy(readableSerialNumber, datalayer_extended.geometryC.BatterySerialNumber, sizeof(datalayer_extended.geometryC.BatterySerialNumber)); readableSerialNumber[28] = '\0'; // Null terminate the string char readableSoftwareVersion[17]; // One extra space for null terminator memcpy(readableSoftwareVersion, datalayer_extended.geometryC.BatterySoftwareVersion, sizeof(datalayer_extended.geometryC.BatterySoftwareVersion)); readableSoftwareVersion[16] = '\0'; // Null terminate the string char readableHardwareVersion[17]; // One extra space for null terminator memcpy(readableHardwareVersion, datalayer_extended.geometryC.BatteryHardwareVersion, sizeof(datalayer_extended.geometryC.BatteryHardwareVersion)); readableHardwareVersion[16] = '\0'; // Null terminate the string content += "

Serial number: " + String(readableSoftwareVersion) + "

"; content += "

Software version: " + String(readableSerialNumber) + "

"; content += "

Hardware version: " + String(readableHardwareVersion) + "

"; content += "

SOC display: " + String(datalayer_extended.geometryC.soc) + "ppt

"; content += "

CC2 voltage: " + String(datalayer_extended.geometryC.CC2voltage) + "mV

"; content += "

Cell max voltage number: " + String(datalayer_extended.geometryC.cellMaxVoltageNumber) + "

"; content += "

Cell min voltage number: " + String(datalayer_extended.geometryC.cellMinVoltageNumber) + "

"; content += "

Cell total amount: " + String(datalayer_extended.geometryC.cellTotalAmount) + "S

"; content += "

Specificial Voltage: " + String(datalayer_extended.geometryC.specificialVoltage) + "dV

"; content += "

Unknown1: " + String(datalayer_extended.geometryC.unknown1) + "

"; content += "

Raw SOC max: " + String(datalayer_extended.geometryC.rawSOCmax) + "

"; content += "

Raw SOC min: " + String(datalayer_extended.geometryC.rawSOCmin) + "

"; content += "

Unknown4: " + String(datalayer_extended.geometryC.unknown4) + "

"; content += "

Capacity module max: " + String((datalayer_extended.geometryC.capModMax / 10)) + "Ah

"; content += "

Capacity module min: " + String((datalayer_extended.geometryC.capModMin / 10)) + "Ah

"; content += "

Unknown7: " + String(datalayer_extended.geometryC.unknown7) + "

"; content += "

Unknown8: " + String(datalayer_extended.geometryC.unknown8) + "

"; content += "

Module 1 temperature: " + String(datalayer_extended.geometryC.ModuleTemperatures[0]) + " °C

"; content += "

Module 2 temperature: " + String(datalayer_extended.geometryC.ModuleTemperatures[1]) + " °C

"; content += "

Module 3 temperature: " + String(datalayer_extended.geometryC.ModuleTemperatures[2]) + " °C

"; content += "

Module 4 temperature: " + String(datalayer_extended.geometryC.ModuleTemperatures[3]) + " °C

"; content += "

Module 5 temperature: " + String(datalayer_extended.geometryC.ModuleTemperatures[4]) + " °C

"; content += "

Module 6 temperature: " + String(datalayer_extended.geometryC.ModuleTemperatures[5]) + " °C

"; return content; } }; #endif