optimizations

This commit is contained in:
Lubos Petrovic
2020-11-25 15:37:43 +01:00
parent 548eb24e16
commit 631d540173
5 changed files with 59 additions and 117 deletions

View File

@@ -96,7 +96,7 @@ String commandQueueDebugObd2Kia[commandQueueCountDebugObd2Kia] = {
// 7A5 7AD SMK B UDS Smart Key // 7A5 7AD SMK B UDS Smart Key
"ATSH7A5", "ATSH7A5",
"22B001", // 7F2278 7F2231 "22B001", // 7F2278 7F2231
"22B002", // positive "22B002", // positive
"22B003", // positive "22B003", // positive
"22B004", // 7F2278 7F2231 "22B004", // 7F2278 7F2231
"22B005", // positive "22B005", // positive
@@ -240,7 +240,7 @@ bool parseRowMergedDebugObd2Kia() {
if (currentAtshRequest.equals("ATSH7E2")) { if (currentAtshRequest.equals("ATSH7E2")) {
if (commandRequest.equals("2101")) { if (commandRequest.equals("2101")) {
params.speedKmh = hexToDec(responseRowMerged.substring(32, 36).c_str(), 2, false) * 0.0155; // / 100.0 *1.609 = real to gps is 1.750 params.speedKmh = hexToDec(responseRowMerged.substring(32, 36).c_str(), 2, false) * 0.0155; // / 100.0 *1.609 = real to gps is 1.750
if (params.speedKmh < -99 || params.speedKmh > 200) if (params.speedKmh < -99 || params.speedKmh > 200)
params.speedKmh = 0; params.speedKmh = 0;
} }
if (commandRequest.equals("2102")) { if (commandRequest.equals("2102")) {
@@ -333,11 +333,12 @@ bool parseRowMergedDebugObd2Kia() {
} }
// BMS 7e4 // BMS 7e4
if (commandRequest.equals("220105")) { if (commandRequest.equals("220105")) {
params.socPercPrevious = params.socPerc;
params.sohPerc = hexToDec(responseRowMerged.substring(56, 60).c_str(), 2, false) / 10.0; params.sohPerc = hexToDec(responseRowMerged.substring(56, 60).c_str(), 2, false) / 10.0;
params.socPerc = hexToDec(responseRowMerged.substring(68, 70).c_str(), 1, false) / 2.0; params.socPerc = hexToDec(responseRowMerged.substring(68, 70).c_str(), 1, false) / 2.0;
// Soc10ced table, record x0% CEC/CED table (ex. 90%->89%, 80%->79%) // Soc10ced table, record x0% CEC/CED table (ex. 90%->89%, 80%->79%)
if (oldParams.socPerc - params.socPerc > 0) { if (params.socPercPrevious - params.socPerc > 0) {
byte index = (int(params.socPerc) == 4) ? 0 : (int)(params.socPerc / 10) + 1; byte index = (int(params.socPerc) == 4) ? 0 : (int)(params.socPerc / 10) + 1;
if ((int(params.socPerc) % 10 == 9 || int(params.socPerc) == 4) && params.soc10ced[index] == -1) { if ((int(params.socPerc) % 10 == 9 || int(params.socPerc) == 4) && params.soc10ced[index] == -1) {
struct tm now; struct tm now;

View File

@@ -175,6 +175,7 @@ bool parseRowMergedHyundaiIoniq() {
} }
// BMS 7e4 // BMS 7e4
if (commandRequest.equals("2105")) { if (commandRequest.equals("2105")) {
params.socPercPrevious = params.socPerc;
params.sohPerc = hexToDec(responseRowMerged.substring(54, 58).c_str(), 2, false) / 10.0; params.sohPerc = hexToDec(responseRowMerged.substring(54, 58).c_str(), 2, false) / 10.0;
params.socPerc = hexToDec(responseRowMerged.substring(66, 68).c_str(), 1, false) / 2.0; params.socPerc = hexToDec(responseRowMerged.substring(66, 68).c_str(), 1, false) / 2.0;
@@ -197,7 +198,7 @@ bool parseRowMergedHyundaiIoniq() {
params.batTempC = params.batMinC; params.batTempC = params.batMinC;
// Soc10ced table, record x0% CEC/CED table (ex. 90%->89%, 80%->79%) // Soc10ced table, record x0% CEC/CED table (ex. 90%->89%, 80%->79%)
if (oldParams.socPerc - params.socPerc > 0) { if (params.socPercPrevious - params.socPerc > 0) {
byte index = (int(params.socPerc) == 4) ? 0 : (int)(params.socPerc / 10) + 1; byte index = (int(params.socPerc) == 4) ? 0 : (int)(params.socPerc / 10) + 1;
if ((int(params.socPerc) % 10 == 9 || int(params.socPerc) == 4) && params.soc10ced[index] == -1) { if ((int(params.socPerc) % 10 == 9 || int(params.socPerc) == 4) && params.soc10ced[index] == -1) {
params.soc10ced[index] = params.cumulativeEnergyDischargedKWh; params.soc10ced[index] = params.cumulativeEnergyDischargedKWh;

View File

@@ -55,7 +55,7 @@ String commandQueueKiaENiro[commandQueueCountKiaENiro] = {
// CLUSTER MODULE // CLUSTER MODULE
"ATSH7C6", "ATSH7C6",
"22B002", // odo "22B002", // odo
}; };
/** /**
@@ -219,11 +219,12 @@ bool parseRowMergedKiaENiro() {
} }
// BMS 7e4 // BMS 7e4
if (commandRequest.equals("220105")) { if (commandRequest.equals("220105")) {
params.socPercPrevious = params.socPerc;
params.sohPerc = hexToDec(responseRowMerged.substring(56, 60).c_str(), 2, false) / 10.0; params.sohPerc = hexToDec(responseRowMerged.substring(56, 60).c_str(), 2, false) / 10.0;
params.socPerc = hexToDec(responseRowMerged.substring(68, 70).c_str(), 1, false) / 2.0; params.socPerc = hexToDec(responseRowMerged.substring(68, 70).c_str(), 1, false) / 2.0;
// Soc10ced table, record x0% CEC/CED table (ex. 90%->89%, 80%->79%) // Soc10ced table, record x0% CEC/CED table (ex. 90%->89%, 80%->79%)
if (oldParams.socPerc - params.socPerc > 0) { if (params.socPercPrevious - params.socPerc > 0) {
byte index = (int(params.socPerc) == 4) ? 0 : (int)(params.socPerc / 10) + 1; byte index = (int(params.socPerc) == 4) ? 0 : (int)(params.socPerc / 10) + 1;
if ((int(params.socPerc) % 10 == 9 || int(params.socPerc) == 4) && params.soc10ced[index] == -1) { if ((int(params.socPerc) % 10 == 9 || int(params.socPerc) == 4) && params.soc10ced[index] == -1) {
params.soc10ced[index] = params.cumulativeEnergyDischargedKWh; params.soc10ced[index] = params.cumulativeEnergyDischargedKWh;

View File

@@ -244,6 +244,7 @@ bool initStructure() {
params.motorRpm = -1; params.motorRpm = -1;
params.odoKm = -1; params.odoKm = -1;
params.socPerc = -1; params.socPerc = -1;
params.socPercPrevious = -1;
params.sohPerc = -1; params.sohPerc = -1;
params.cumulativeEnergyChargedKWh = -1; params.cumulativeEnergyChargedKWh = -1;
params.cumulativeEnergyChargedKWhStart = -1; params.cumulativeEnergyChargedKWhStart = -1;
@@ -309,8 +310,6 @@ bool initStructure() {
params.chargingGraphWaterCoolantTempC[i] = -100; params.chargingGraphWaterCoolantTempC[i] = -100;
} }
oldParams = params;
return true; return true;
} }
@@ -452,141 +451,81 @@ bool showTires(int32_t x, int32_t y, int32_t w, int32_t h, const char* topleft,
bool drawSceneMain() { bool drawSceneMain() {
// Tire pressure // Tire pressure
if (params.tireFrontLeftTempC != oldParams.tireFrontLeftTempC char pressureStr[4] = "bar";
|| params.tireFrontRightTempC != oldParams.tireFrontRightTempC || params.tireRearLeftTempC != oldParams.tireRearLeftTempC || params.tireRearRightTempC != oldParams.tireRearRightTempC char temperatureStr[2] = "C";
|| oldParams.cumulativeEnergyChargedKWhStart != params.cumulativeEnergyChargedKWhStart if (settings.pressureUnit != 'b')
|| oldParams.cumulativeEnergyChargedKWh != params.cumulativeEnergyChargedKWh strcpy(pressureStr, "psi");
|| oldParams.cumulativeEnergyDischargedKWhStart != params.cumulativeEnergyDischargedKWhStart if (settings.temperatureUnit != 'c')
|| oldParams.cumulativeEnergyDischargedKWh != params.cumulativeEnergyDischargedKWh strcpy(temperatureStr, "F");
) { sprintf(tmpStr1, "%01.01f%s %02.00f%s", bar2pressure(params.tireFrontLeftPressureBar), pressureStr, celsius2temperature(params.tireFrontLeftTempC), temperatureStr);
char pressureStr[4] = "bar"; sprintf(tmpStr2, "%02.00f%s %01.01f%s", celsius2temperature(params.tireFrontRightTempC), temperatureStr, bar2pressure(params.tireFrontRightPressureBar), pressureStr);
char temperatureStr[2] = "C"; sprintf(tmpStr3, "%01.01f%s %02.00f%s", bar2pressure(params.tireRearLeftPressureBar), pressureStr, celsius2temperature(params.tireRearLeftTempC), temperatureStr);
if (settings.pressureUnit != 'b') sprintf(tmpStr4, "%02.00f%s %01.01f%s", celsius2temperature(params.tireRearRightTempC), temperatureStr, bar2pressure(params.tireRearRightPressureBar), pressureStr);
strcpy(pressureStr, "psi"); showTires(1, 0, 2, 1, tmpStr1, tmpStr2, tmpStr3, tmpStr4, TFT_BLACK);
if (settings.temperatureUnit != 'c')
strcpy(temperatureStr, "F");
sprintf(tmpStr1, "%01.01f%s %02.00f%s", bar2pressure(params.tireFrontLeftPressureBar), pressureStr, celsius2temperature(params.tireFrontLeftTempC), temperatureStr);
sprintf(tmpStr2, "%02.00f%s %01.01f%s", celsius2temperature(params.tireFrontRightTempC), temperatureStr, bar2pressure(params.tireFrontRightPressureBar), pressureStr);
sprintf(tmpStr3, "%01.01f%s %02.00f%s", bar2pressure(params.tireRearLeftPressureBar), pressureStr, celsius2temperature(params.tireRearLeftTempC), temperatureStr);
sprintf(tmpStr4, "%02.00f%s %01.01f%s", celsius2temperature(params.tireRearRightTempC), temperatureStr, bar2pressure(params.tireRearRightPressureBar), pressureStr);
showTires(1, 0, 2, 1, tmpStr1, tmpStr2, tmpStr3, tmpStr4, TFT_BLACK);
// Added later - kwh total in tires box // Added later - kwh total in tires box
// TODO: refactoring // TODO: refactoring
spr.setTextDatum(TL_DATUM); spr.setTextDatum(TL_DATUM);
spr.setTextColor(TFT_GREEN, TFT_BLACK); spr.setTextColor(TFT_GREEN, TFT_BLACK);
sprintf(tmpStr1, "C: %01.01f +%01.01fkWh", params.cumulativeEnergyChargedKWh, params.cumulativeEnergyChargedKWh - params.cumulativeEnergyChargedKWhStart); sprintf(tmpStr1, "C: %01.01f +%01.01fkWh", params.cumulativeEnergyChargedKWh, params.cumulativeEnergyChargedKWh - params.cumulativeEnergyChargedKWhStart);
spr.drawString(tmpStr1, (1 * 80) + 4, (0 * 60) + 30, 2); spr.drawString(tmpStr1, (1 * 80) + 4, (0 * 60) + 30, 2);
spr.setTextColor(TFT_YELLOW, TFT_BLACK); spr.setTextColor(TFT_YELLOW, TFT_BLACK);
sprintf(tmpStr1, "D: %01.01f -%01.01fkWh", params.cumulativeEnergyDischargedKWh, params.cumulativeEnergyDischargedKWh - params.cumulativeEnergyDischargedKWhStart); sprintf(tmpStr1, "D: %01.01f -%01.01fkWh", params.cumulativeEnergyDischargedKWh, params.cumulativeEnergyDischargedKWh - params.cumulativeEnergyDischargedKWhStart);
spr.drawString(tmpStr1, (1 * 80) + 4, (0 * 60) + 44, 2); spr.drawString(tmpStr1, (1 * 80) + 4, (0 * 60) + 44, 2);
oldParams.tireFrontLeftTempC = params.tireFrontLeftTempC;
oldParams.tireFrontLeftPressureBar = params.tireFrontLeftPressureBar;
oldParams.tireFrontRightTempC = params.tireFrontRightTempC;
oldParams.tireFrontRightPressureBar = params.tireFrontRightPressureBar;
oldParams.tireRearLeftTempC = params.tireRearLeftTempC;
oldParams.tireRearLeftPressureBar = params.tireRearLeftPressureBar;
oldParams.tireRearRightTempC = params.tireRearRightTempC;
oldParams.tireRearRightPressureBar = params.tireRearRightPressureBar;
oldParams.cumulativeEnergyChargedKWhStart = params.cumulativeEnergyChargedKWhStart;
oldParams.cumulativeEnergyChargedKWh = params.cumulativeEnergyChargedKWh;
oldParams.cumulativeEnergyDischargedKWhStart = params.cumulativeEnergyDischargedKWhStart;
oldParams.cumulativeEnergyDischargedKWh = params.cumulativeEnergyDischargedKWh;
}
// batPowerKwh100 on roads, else batPowerAmp // batPowerKwh100 on roads, else batPowerAmp
if (params.speedKmh > 20) { if (params.speedKmh > 20) {
if (params.batPowerKwh100 != oldParams.batPowerKwh100) { sprintf(tmpStr1, "%01.01f", km2distance(params.batPowerKwh100));
sprintf(tmpStr1, "%01.01f", km2distance(params.batPowerKwh100)); monitoringRect(1, 1, 2, 2, tmpStr1, ((settings.distanceUnit == 'k') ? "POWER KWH/100KM" : "POWER KWH/100MI"), (params.batPowerKwh100 >= 0 ? TFT_DARKGREEN2 : (params.batPowerKwh100 < -30.0 ? TFT_RED : TFT_DARKRED)), TFT_WHITE);
monitoringRect(1, 1, 2, 2, tmpStr1, ((settings.distanceUnit == 'k') ? "POWER KWH/100KM" : "POWER KWH/100MI"), (params.batPowerKwh100 >= 0 ? TFT_DARKGREEN2 : (params.batPowerKwh100 < -30.0 ? TFT_RED : TFT_DARKRED)), TFT_WHITE);
oldParams.batPowerKwh100 = params.batPowerKwh100;
}
} else { } else {
// batPowerAmp on chargers (under 10kmh) // batPowerAmp on chargers (under 10kmh)
if (params.batPowerKw != oldParams.batPowerKw) { sprintf(tmpStr1, "%01.01f", params.batPowerKw);
sprintf(tmpStr1, "%01.01f", params.batPowerKw); monitoringRect(1, 1, 2, 2, tmpStr1, "POWER KW", (params.batPowerKw >= 0 ? TFT_DARKGREEN2 : (params.batPowerKw <= -30 ? TFT_RED : TFT_DARKRED)), TFT_WHITE);
monitoringRect(1, 1, 2, 2, tmpStr1, "POWER KW", (params.batPowerKw >= 0 ? TFT_DARKGREEN2 : (params.batPowerKw <= -30 ? TFT_RED : TFT_DARKRED)), TFT_WHITE);
oldParams.batPowerKw = params.batPowerKw;
}
} }
// socPerc // socPerc
if (params.socPerc != oldParams.socPerc) { sprintf(tmpStr1, "%01.00f%%", params.socPerc);
sprintf(tmpStr1, "%01.00f%%", params.socPerc); sprintf(tmpStr2, (params.sohPerc == 100.0 ? "SOC/H%01.00f%%" : "SOC/H%01.01f%%"), params.sohPerc);
sprintf(tmpStr2, (params.sohPerc == 100.0 ? "SOC/H%01.00f%%" : "SOC/H%01.01f%%"), params.sohPerc); monitoringRect(0, 0, 1, 1, tmpStr1, tmpStr2, (params.socPerc < 10 || params.sohPerc < 100 ? TFT_RED : (params.socPerc > 80 ? TFT_DARKGREEN2 : TFT_DEFAULT_BK)), TFT_WHITE);
monitoringRect(0, 0, 1, 1, tmpStr1, tmpStr2, (params.socPerc < 10 || params.sohPerc < 100 ? TFT_RED : (params.socPerc > 80 ? TFT_DARKGREEN2 : TFT_DEFAULT_BK)), TFT_WHITE);
oldParams.socPerc = params.socPerc;
oldParams.sohPerc = params.sohPerc;
}
// batPowerAmp // batPowerAmp
if (params.batPowerAmp != oldParams.batPowerAmp) { sprintf(tmpStr1, (abs(params.batPowerAmp) > 9.9 ? "%01.00f" : "%01.01f"), params.batPowerAmp);
sprintf(tmpStr1, (abs(params.batPowerAmp) > 9.9 ? "%01.00f" : "%01.01f"), params.batPowerAmp); monitoringRect(0, 1, 1, 1, tmpStr1, "CURRENT A", (params.batPowerAmp >= 0 ? TFT_DARKGREEN2 : TFT_DARKRED), TFT_WHITE);
monitoringRect(0, 1, 1, 1, tmpStr1, "CURRENT A", (params.batPowerAmp >= 0 ? TFT_DARKGREEN2 : TFT_DARKRED), TFT_WHITE);
oldParams.batPowerAmp = params.batPowerAmp;
}
// batVoltage // batVoltage
if (params.batVoltage != oldParams.batVoltage) { sprintf(tmpStr1, "%03.00f", params.batVoltage);
sprintf(tmpStr1, "%03.00f", params.batVoltage); monitoringRect(0, 2, 1, 1, tmpStr1, "VOLTAGE", TFT_DEFAULT_BK, TFT_WHITE);
monitoringRect(0, 2, 1, 1, tmpStr1, "VOLTAGE", TFT_DEFAULT_BK, TFT_WHITE);
oldParams.batVoltage = params.batVoltage;
}
// batCellMinV // batCellMinV
if (params.batCellMinV != oldParams.batCellMinV || params.batCellMaxV != oldParams.batCellMaxV) { sprintf(tmpStr1, "%01.02f", params.batCellMaxV - params.batCellMinV);
sprintf(tmpStr1, "%01.02f", params.batCellMaxV - params.batCellMinV); sprintf(tmpStr2, "CELLS %01.02f", params.batCellMinV);
sprintf(tmpStr2, "CELLS %01.02f", params.batCellMinV); monitoringRect(0, 3, 1, 1, ( params.batCellMaxV - params.batCellMinV == 0.00 ? "OK" : tmpStr1), tmpStr2, TFT_DEFAULT_BK, TFT_WHITE);
monitoringRect(0, 3, 1, 1, ( params.batCellMaxV - params.batCellMinV == 0.00 ? "OK" : tmpStr1), tmpStr2, TFT_DEFAULT_BK, TFT_WHITE);
oldParams.batCellMaxV = params.batCellMaxV;
oldParams.batCellMinV = params.batCellMinV;
}
// batTempC // batTempC
if (params.batTempC != oldParams.batTempC) { sprintf(tmpStr1, ((settings.temperatureUnit == 'c') ? "%01.00f" : "%01.01f"), celsius2temperature(params.batMinC));
sprintf(tmpStr1, ((settings.temperatureUnit == 'c') ? "%01.00f" : "%01.01f"), celsius2temperature(params.batMinC)); sprintf(tmpStr2, ((settings.temperatureUnit == 'c') ? "BATT. %01.00fC" : "BATT. %01.01fF"), celsius2temperature(params.batMaxC));
sprintf(tmpStr2, ((settings.temperatureUnit == 'c') ? "BATT. %01.00fC" : "BATT. %01.01fF"), celsius2temperature(params.batMaxC)); monitoringRect(1, 3, 1, 1, tmpStr1, tmpStr2, TFT_TEMP, (params.batTempC >= 15) ? ((params.batTempC >= 25) ? TFT_GREEN : TFT_BLUE) : TFT_RED);
monitoringRect(1, 3, 1, 1, tmpStr1, tmpStr2, TFT_TEMP, (params.batTempC >= 15) ? ((params.batTempC >= 25) ? TFT_GREEN : TFT_BLUE) : TFT_RED);
oldParams.batTempC = params.batTempC;
}
// batHeaterC // batHeaterC
if (params.batHeaterC != oldParams.batHeaterC) { sprintf(tmpStr1, ((settings.temperatureUnit == 'c') ? "%01.00f" : "%01.01f"), celsius2temperature(params.batHeaterC));
sprintf(tmpStr1, ((settings.temperatureUnit == 'c') ? "%01.00f" : "%01.01f"), celsius2temperature(params.batHeaterC)); monitoringRect(2, 3, 1, 1, tmpStr1, "BAT.HEAT", TFT_TEMP, TFT_WHITE);
monitoringRect(2, 3, 1, 1, tmpStr1, "BAT.HEAT", TFT_TEMP, TFT_WHITE);
oldParams.batHeaterC = params.batHeaterC;
}
// Aux perc // Aux perc
if (params.auxPerc != oldParams.auxPerc) { sprintf(tmpStr1, "%01.00f%%", params.auxPerc);
sprintf(tmpStr1, "%01.00f%%", params.auxPerc); monitoringRect(3, 0, 1, 1, tmpStr1, "AUX BAT.", (params.auxPerc < 60 ? TFT_RED : TFT_DEFAULT_BK), TFT_WHITE);
monitoringRect(3, 0, 1, 1, tmpStr1, "AUX BAT.", (params.auxPerc < 60 ? TFT_RED : TFT_DEFAULT_BK), TFT_WHITE);
oldParams.auxPerc = params.auxPerc;
}
// Aux amp // Aux amp
if (params.auxCurrentAmp != oldParams.auxCurrentAmp) { sprintf(tmpStr1, (abs(params.auxCurrentAmp) > 9.9 ? "%01.00f" : "%01.01f"), params.auxCurrentAmp);
sprintf(tmpStr1, (abs(params.auxCurrentAmp) > 9.9 ? "%01.00f" : "%01.01f"), params.auxCurrentAmp); monitoringRect(3, 1, 1, 1, tmpStr1, "AUX AMPS", (params.auxCurrentAmp >= 0 ? TFT_DARKGREEN2 : TFT_DARKRED), TFT_WHITE);
monitoringRect(3, 1, 1, 1, tmpStr1, "AUX AMPS", (params.auxCurrentAmp >= 0 ? TFT_DARKGREEN2 : TFT_DARKRED), TFT_WHITE);
oldParams.auxCurrentAmp = params.auxCurrentAmp;
}
// auxVoltage // auxVoltage
if (params.auxVoltage != oldParams.auxVoltage) { sprintf(tmpStr1, "%01.01f", params.auxVoltage);
sprintf(tmpStr1, "%01.01f", params.auxVoltage); monitoringRect(3, 2, 1, 1, tmpStr1, "AUX VOLTS", (params.auxVoltage < 12.1 ? TFT_RED : (params.auxVoltage < 12.6 ? TFT_ORANGE : TFT_DEFAULT_BK)), TFT_WHITE);
monitoringRect(3, 2, 1, 1, tmpStr1, "AUX VOLTS", (params.auxVoltage < 12.1 ? TFT_RED : (params.auxVoltage < 12.6 ? TFT_ORANGE : TFT_DEFAULT_BK)), TFT_WHITE);
oldParams.auxVoltage = params.auxVoltage;
}
// indoorTemperature // indoorTemperature
if (params.indoorTemperature != oldParams.indoorTemperature || params.outdoorTemperature != oldParams.outdoorTemperature) { sprintf(tmpStr1, "%01.01f", celsius2temperature(params.indoorTemperature));
sprintf(tmpStr1, "%01.01f", celsius2temperature(params.indoorTemperature)); sprintf(tmpStr2, "IN/OUT%01.01f", celsius2temperature(params.outdoorTemperature));
sprintf(tmpStr2, "IN/OUT%01.01f", celsius2temperature(params.outdoorTemperature)); monitoringRect(3, 3, 1, 1, tmpStr1, tmpStr2, TFT_TEMP, TFT_WHITE);
monitoringRect(3, 3, 1, 1, tmpStr1, tmpStr2, TFT_TEMP, TFT_WHITE);
oldParams.indoorTemperature = params.indoorTemperature;
oldParams.outdoorTemperature = params.outdoorTemperature;
}
return true; return true;
} }

View File

@@ -47,6 +47,7 @@ typedef struct {
float motorRpm; float motorRpm;
float odoKm; float odoKm;
float socPerc; float socPerc;
float socPercPrevious;
float sohPerc; float sohPerc;
float cumulativeEnergyChargedKWh; float cumulativeEnergyChargedKWh;
float cumulativeEnergyChargedKWhStart; float cumulativeEnergyChargedKWhStart;
@@ -136,7 +137,6 @@ typedef struct {
} SETTINGS_STRUC; } SETTINGS_STRUC;
PARAMS_STRUC params; // Realtime sensor values PARAMS_STRUC params; // Realtime sensor values
PARAMS_STRUC oldParams; // Old states used for change detection (draw optimization)
SETTINGS_STRUC settings, tmpSettings; // Settings stored into flash SETTINGS_STRUC settings, tmpSettings; // Settings stored into flash
/** /**