Added Odometer and added EEPROM-End Detection
This commit is contained in:
		| @@ -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> | ||||||
|   | |||||||
| @@ -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)); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -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; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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: | ||||||
|   | |||||||
| @@ -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, | ||||||
|   | |||||||
| @@ -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]; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user