#include #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; }