44 lines
887 B
C++
Raw Normal View History

2022-01-09 20:51:16 +01:00
#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;
}