WebUI config stuff
This commit is contained in:
44
Software/ChainLube/src/config.cpp
Normal file
44
Software/ChainLube/src/config.cpp
Normal file
@@ -0,0 +1,44 @@
|
||||
#include <Arduino.h>
|
||||
#include "config.h"
|
||||
|
||||
LubeConfig_t LubeConfig;
|
||||
|
||||
void StoreConfig_EEPROM()
|
||||
{
|
||||
LubeConfig.checksum = 0;
|
||||
LubeConfig.checksum = Checksum_EEPROM((uint8_t *)&LubeConfig, sizeof(LubeConfig));
|
||||
|
||||
EEPROM.begin(512);
|
||||
EEPROM.put(0, LubeConfig);
|
||||
EEPROM.commit();
|
||||
EEPROM.end();
|
||||
}
|
||||
|
||||
void GetConfig_EEPROM()
|
||||
{
|
||||
EEPROM.begin(512);
|
||||
EEPROM.get(0, LubeConfig);
|
||||
EEPROM.end();
|
||||
|
||||
uint32_t checksum = LubeConfig.checksum;
|
||||
LubeConfig.checksum = 0;
|
||||
|
||||
if (Checksum_EEPROM((uint8_t *)&LubeConfig, sizeof(LubeConfig)) == checksum)
|
||||
Serial.printf("Checksum OK");
|
||||
else
|
||||
Serial.printf("Checksum BAD");
|
||||
}
|
||||
|
||||
uint32_t Checksum_EEPROM(uint8_t const *data, size_t len)
|
||||
{
|
||||
if (data == NULL)
|
||||
return 0;
|
||||
uint32_t crc = 0;
|
||||
while (len--)
|
||||
{
|
||||
crc ^= *data++;
|
||||
for (uint8_t k = 0; k < 8; k++)
|
||||
crc = crc & 1 ? (crc >> 1) ^ 0xb2 : crc >> 1;
|
||||
}
|
||||
return crc ^ 0xff;
|
||||
}
|
Reference in New Issue
Block a user