Added Odometer and added EEPROM-End Detection

This commit is contained in:
Marcel Peterkau 2022-05-05 21:07:24 +02:00
parent 1c0ab060ff
commit 27437555f8
6 changed files with 33 additions and 12 deletions

View File

@ -432,6 +432,10 @@
<td>TravelDistance_highRes</td> <td>TravelDistance_highRes</td>
<td>%TRAVEL_DISTANCE_HIGHRES%</td> <td>%TRAVEL_DISTANCE_HIGHRES%</td>
</tr> </tr>
<tr>
<td>Odometer</td>
<td>%ODOMETER%,%ODOMETER_M%</td>
</tr>
<tr> <tr>
<td>checksum</td> <td>checksum</td>
<td>%PERSISTANCE_CHECKSUM%</td> <td>%PERSISTANCE_CHECKSUM%</td>

View File

@ -144,12 +144,18 @@ void FormatPersistence_EEPROM()
void MovePersistencePage_EEPROM(boolean reset) void MovePersistencePage_EEPROM(boolean reset)
{ {
eePersistenceMarker = reset ? sizeof(PersistenceData) : eePersistenceMarker + sizeof(PersistenceData);
PersistenceData.writeCycleCounter = 0;
if (!checkEEPROMavailable()) if (!checkEEPROMavailable())
return; return;
eePersistenceMarker = eePersistenceMarker + sizeof(PersistenceData);
PersistenceData.writeCycleCounter = 0;
// check if we reached the End of the EEPROM and Startover at the beginning
if ((startofPersistence + eePersistenceMarker + sizeof(PersistenceData)) > ee.getDeviceSize() || reset)
{
eePersistenceMarker = 0;
}
ee.updateByte(0, (uint8_t)(eePersistenceMarker >> 8)); ee.updateByte(0, (uint8_t)(eePersistenceMarker >> 8));
ee.updateByte(1, (uint8_t)(eePersistenceMarker & 0xFF)); ee.updateByte(1, (uint8_t)(eePersistenceMarker & 0xFF));
} }

View File

@ -64,7 +64,9 @@ typedef struct
{ {
uint16_t writeCycleCounter = 0; uint16_t writeCycleCounter = 0;
uint32_t tankRemain_µl = 0; uint32_t tankRemain_µl = 0;
uint32_t TravelDistance_highRes = 0; uint32_t TravelDistance_highRes_mm = 0;
uint32_t odometer_mm = 0;
uint32_t odometer = 0;
uint32_t checksum = 0; uint32_t checksum = 0;
} persistenceData_t; } persistenceData_t;

View File

@ -11,7 +11,13 @@ void RunLubeApp(uint32_t add_milimeters)
globals.systemStatus = sysStat_Error; globals.systemStatus = sysStat_Error;
// Add traveled Distance in mm // Add traveled Distance in mm
PersistenceData.TravelDistance_highRes += add_milimeters; PersistenceData.TravelDistance_highRes_mm += add_milimeters;
PersistenceData.odometer_mm += add_milimeters;
if (PersistenceData.odometer_mm >= 1000000)
{
PersistenceData.odometer++;
PersistenceData.odometer_mm = 0;
}
switch (globals.systemStatus) switch (globals.systemStatus)
{ {
@ -24,18 +30,18 @@ void RunLubeApp(uint32_t add_milimeters)
break; break;
case sysStat_Normal: case sysStat_Normal:
if (PersistenceData.TravelDistance_highRes / 1000 > LubeConfig.DistancePerLube_Default) if (PersistenceData.TravelDistance_highRes_mm / 1000 > LubeConfig.DistancePerLube_Default)
{ {
LubePulse(); LubePulse();
PersistenceData.TravelDistance_highRes = 0; PersistenceData.TravelDistance_highRes_mm = 0;
} }
break; break;
case sysStat_Rain: case sysStat_Rain:
if (PersistenceData.TravelDistance_highRes / 1000 > LubeConfig.DistancePerLube_Rain) if (PersistenceData.TravelDistance_highRes_mm / 1000 > LubeConfig.DistancePerLube_Rain)
{ {
LubePulse(); LubePulse();
PersistenceData.TravelDistance_highRes = 0; PersistenceData.TravelDistance_highRes_mm = 0;
} }
break; break;
case sysStat_Purge: case sysStat_Purge:

View File

@ -338,7 +338,7 @@ void RemoteDebug_dumpPersistance()
{ {
debugA("writeCycleCounter: %d", PersistenceData.writeCycleCounter); debugA("writeCycleCounter: %d", PersistenceData.writeCycleCounter);
debugA("tankRemain_µl: %d", PersistenceData.tankRemain_µl); debugA("tankRemain_µl: %d", PersistenceData.tankRemain_µl);
debugA("TravelDistance_highRes: %d", PersistenceData.TravelDistance_highRes); debugA("TravelDistance_highRes_mm: %d", PersistenceData.TravelDistance_highRes_mm);
debugA("checksum: %d", PersistenceData.checksum); debugA("checksum: %d", PersistenceData.checksum);
debugA("PSD Adress: 0x%04X", getPersistanceAddress()); debugA("PSD Adress: 0x%04X", getPersistanceAddress());
} }
@ -415,7 +415,6 @@ void trigger_ISR()
void LED_Process(uint8_t override, CRGB SetColor) void LED_Process(uint8_t override, CRGB SetColor)
{ {
typedef enum typedef enum
{ {
LED_Startup, LED_Startup,

View File

@ -74,7 +74,11 @@ String processor(const String &var)
if (var == "TANK_REMAIN_UL") if (var == "TANK_REMAIN_UL")
return String(PersistenceData.tankRemain_µl); return String(PersistenceData.tankRemain_µl);
if (var == "TRAVEL_DISTANCE_HIGHRES") if (var == "TRAVEL_DISTANCE_HIGHRES")
return String(PersistenceData.TravelDistance_highRes); return String(PersistenceData.TravelDistance_highRes_mm);
if (var == "ODOMETER")
return String(PersistenceData.odometer);
if (var == "ODOMETER_M")
return String(PersistenceData.odometer_mm / 1000);
if (var == "PERSISTANCE_CHECKSUM") if (var == "PERSISTANCE_CHECKSUM")
{ {
char buffer[7]; char buffer[7];