PersistenceData gets stored cyclic now.
This commit is contained in:
		| @@ -10,8 +10,8 @@ uint16_t eePersistenceMarker = 0; | |||||||
| uint16_t eeVersion = 0; // inc | uint16_t eeVersion = 0; // inc | ||||||
| boolean eeAvailable = false; | boolean eeAvailable = false; | ||||||
|  |  | ||||||
| const uint16_t startofLubeConfig = sizeof(eePersistenceMarker); | const uint16_t startofLubeConfig = 16; | ||||||
| const uint16_t startofPersistence = sizeof(LubeConfig) + sizeof(eePersistenceMarker); | const uint16_t startofPersistence = 16 + sizeof(LubeConfig) + (sizeof(LubeConfig) % 16); | ||||||
|  |  | ||||||
| #if PCB_REVISION >= 12 | #if PCB_REVISION >= 12 | ||||||
| void InitEEPROM() | void InitEEPROM() | ||||||
| @@ -52,7 +52,7 @@ void StoreConfig_EEPROM() | |||||||
| #if PCB_REVISION >= 12 | #if PCB_REVISION >= 12 | ||||||
|   if (!ee.isConnected()) |   if (!ee.isConnected()) | ||||||
|     return; |     return; | ||||||
|   ee.writeBlock(startofLubeConfig, (uint8_t *)&LubeConfig, sizeof(LubeConfig)); |   ee.updateBlock(startofLubeConfig, (uint8_t *)&LubeConfig, sizeof(LubeConfig)); | ||||||
| #else | #else | ||||||
|   EEPROM.begin(512); |   EEPROM.begin(512); | ||||||
|   EEPROM.put(startofLubeConfig, LubeConfig); |   EEPROM.put(startofLubeConfig, LubeConfig); | ||||||
| @@ -86,7 +86,7 @@ void GetConfig_EEPROM() | |||||||
|  |  | ||||||
| void StorePersistence_EEPROM() | void StorePersistence_EEPROM() | ||||||
| { | { | ||||||
|   if (PersistenceData.writeCycleCounter == 0xFFFF) |   if (PersistenceData.writeCycleCounter >= 0xFFF0) | ||||||
|     MovePersistencePage_EEPROM(false); |     MovePersistencePage_EEPROM(false); | ||||||
|   else |   else | ||||||
|     PersistenceData.writeCycleCounter++; |     PersistenceData.writeCycleCounter++; | ||||||
|   | |||||||
| @@ -62,7 +62,7 @@ typedef struct | |||||||
| { | { | ||||||
|   uint16_t writeCycleCounter = 0; |   uint16_t writeCycleCounter = 0; | ||||||
|   uint32_t tankRemain_µl = 0; |   uint32_t tankRemain_µl = 0; | ||||||
|   uint32_t distanceTraveled_m = 0; |   uint32_t TravelDistance_highRes = 0; | ||||||
|   uint32_t checksum = 0; |   uint32_t checksum = 0; | ||||||
| } persistenceData_t; | } persistenceData_t; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -32,6 +32,5 @@ typedef struct Globals_s | |||||||
| } Globals_t; | } Globals_t; | ||||||
|  |  | ||||||
| extern Globals_t globals; | extern Globals_t globals; | ||||||
| extern uint32_t TravelDistance_highRes; |  | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
| @@ -5,7 +5,7 @@ uint32_t lubePulseTimestamp = 0; | |||||||
| void RunLubeApp(uint32_t add_milimeters) | void RunLubeApp(uint32_t add_milimeters) | ||||||
| { | { | ||||||
|     // Add traveled Distance in mm |     // Add traveled Distance in mm | ||||||
|     TravelDistance_highRes += add_milimeters; |     PersistenceData.TravelDistance_highRes += add_milimeters; | ||||||
|  |  | ||||||
|     switch (globals.systemStatus) |     switch (globals.systemStatus) | ||||||
|     { |     { | ||||||
| @@ -18,18 +18,18 @@ void RunLubeApp(uint32_t add_milimeters) | |||||||
|         break; |         break; | ||||||
|  |  | ||||||
|     case sysStat_Normal: |     case sysStat_Normal: | ||||||
|         if (TravelDistance_highRes / 1000 > LubeConfig.DistancePerLube_Default) |         if (PersistenceData.TravelDistance_highRes / 1000 > LubeConfig.DistancePerLube_Default) | ||||||
|         { |         { | ||||||
|             LubePulse(); |             LubePulse(); | ||||||
|             TravelDistance_highRes = 0; |             PersistenceData.TravelDistance_highRes = 0; | ||||||
|         } |         } | ||||||
|         break; |         break; | ||||||
|  |  | ||||||
|     case sysStat_Rain: |     case sysStat_Rain: | ||||||
|         if (TravelDistance_highRes / 1000 > LubeConfig.DistancePerLube_Rain) |         if (PersistenceData.TravelDistance_highRes / 1000 > LubeConfig.DistancePerLube_Rain) | ||||||
|         { |         { | ||||||
|             LubePulse(); |             LubePulse(); | ||||||
|             TravelDistance_highRes = 0; |             PersistenceData.TravelDistance_highRes = 0; | ||||||
|         } |         } | ||||||
|         break; |         break; | ||||||
|     case sysStat_Purge: |     case sysStat_Purge: | ||||||
|   | |||||||
| @@ -61,12 +61,14 @@ void Button_Process(); | |||||||
| void toggleWiFiAP(boolean shutdown = false); | void toggleWiFiAP(boolean shutdown = false); | ||||||
| void SystemShutdown(); | void SystemShutdown(); | ||||||
| uint32_t Process_Impulse_WheelSpeed(); | uint32_t Process_Impulse_WheelSpeed(); | ||||||
|  | void EEPROMCyclicPDS_callback(); | ||||||
|  |  | ||||||
| #ifdef WIFI_CLIENT | #ifdef WIFI_CLIENT | ||||||
| void wifiMaintainConnectionTicker_callback(); | void wifiMaintainConnectionTicker_callback(); | ||||||
| Ticker WiFiMaintainConnectionTicker(wifiMaintainConnectionTicker_callback, 1000, 0, MILLIS); | Ticker WiFiMaintainConnectionTicker(wifiMaintainConnectionTicker_callback, 1000, 0, MILLIS); | ||||||
| #endif | #endif | ||||||
| Ticker UpdateWebUITicker(updateWebUITicker_callback, 5000, 0, MILLIS); | Ticker UpdateWebUITicker(updateWebUITicker_callback, 5000, 0, MILLIS); | ||||||
|  | Ticker EEPROMCyclicPDSTicker(EEPROMCyclicPDS_callback, 60000, 0, MILLIS); | ||||||
|  |  | ||||||
| void setup() | void setup() | ||||||
| { | { | ||||||
| @@ -155,8 +157,7 @@ void setup() | |||||||
|   ArduinoOTA.begin(); |   ArduinoOTA.begin(); | ||||||
|  |  | ||||||
|   u8x8.clearDisplay(); |   u8x8.clearDisplay(); | ||||||
|   u8x8.drawString(4, 0, "Souko's"); |   u8x8.drawString(0, 0, "KTM ChainLube V1"); | ||||||
|   u8x8.drawString(1, 1, "ChainLube Mk1"); |  | ||||||
|   u8x8.refreshDisplay(); |   u8x8.refreshDisplay(); | ||||||
|  |  | ||||||
| #if PCB_REVISION >= 13 | #if PCB_REVISION >= 13 | ||||||
| @@ -165,6 +166,7 @@ void setup() | |||||||
|  |  | ||||||
|   initWebUI(); |   initWebUI(); | ||||||
|   UpdateWebUITicker.start(); |   UpdateWebUITicker.start(); | ||||||
|  |   EEPROMCyclicPDSTicker.start(); | ||||||
|   Serial.println("Setup Done"); |   Serial.println("Setup Done"); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -188,6 +190,7 @@ void loop() | |||||||
|  |  | ||||||
|   RunLubeApp(wheelDistance); |   RunLubeApp(wheelDistance); | ||||||
|   UpdateWebUITicker.update(); |   UpdateWebUITicker.update(); | ||||||
|  |   EEPROMCyclicPDSTicker.update(); | ||||||
|   Display_Process(); |   Display_Process(); | ||||||
|   Button_Process(); |   Button_Process(); | ||||||
|   LED_Process(); |   LED_Process(); | ||||||
| @@ -298,7 +301,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("distanceTraveled_m: %d", PersistenceData.distanceTraveled_m); |   debugA("TravelDistance_highRes: %d", PersistenceData.TravelDistance_highRes); | ||||||
|   debugA("checksum: %d", PersistenceData.checksum); |   debugA("checksum: %d", PersistenceData.checksum); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -366,6 +369,11 @@ void updateWebUITicker_callback() | |||||||
|   UpdateWebUI(); |   UpdateWebUI(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void EEPROMCyclicPDS_callback() | ||||||
|  | { | ||||||
|  |   StorePersistence_EEPROM(); | ||||||
|  | } | ||||||
|  |  | ||||||
| void trigger_ISR() | void trigger_ISR() | ||||||
| { | { | ||||||
|   wheel_pulse++; |   wheel_pulse++; | ||||||
| @@ -528,7 +536,7 @@ void LED_Process(uint8_t override, CRGB SetColor) | |||||||
|  |  | ||||||
| void Display_Process() | void Display_Process() | ||||||
| { | { | ||||||
|   u8x8.setCursor(0, 2); |   u8x8.setCursor(0, 1); | ||||||
|   uint32_t DistRemain = globals.systemStatus == sysStat_Normal ? LubeConfig.DistancePerLube_Default : LubeConfig.DistancePerLube_Rain; |   uint32_t DistRemain = globals.systemStatus == sysStat_Normal ? LubeConfig.DistancePerLube_Default : LubeConfig.DistancePerLube_Rain; | ||||||
|   DistRemain -= TravelDistance_highRes / 1000; |   DistRemain -= TravelDistance_highRes / 1000; | ||||||
|   u8x8.printf("Mode: %10s\n", globals.systemStatustxt); |   u8x8.printf("Mode: %10s\n", globals.systemStatustxt); | ||||||
| @@ -538,6 +546,7 @@ void Display_Process() | |||||||
|                                                               : WiFi.getMode() == WIFI_STA   ? "CLIENT" |                                                               : WiFi.getMode() == WIFI_STA   ? "CLIENT" | ||||||
|                                                                                              : "UNKNOWN")); |                                                                                              : "UNKNOWN")); | ||||||
|   u8x8.printf("Source: %8s\n", SpeedSourceString[LubeConfig.SpeedSource]); |   u8x8.printf("Source: %8s\n", SpeedSourceString[LubeConfig.SpeedSource]); | ||||||
|  |   u8x8.printf("EE_PDS: %6d s\n", EEPROMCyclicPDSTicker.remaining() / 1000); | ||||||
|   u8x8.refreshDisplay(); |   u8x8.refreshDisplay(); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user