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