#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