Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define EEPROM_START 0
- boolean setEEPROM = false;
- uint32_t memcrc;
- struct eeprom_data_t {
- bool STAenabled;
- char STAssid[32];
- char STApass[32];
- } eeprom_data;
- static PROGMEM prog_uint32_t crc_table[16] = {
- 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c,
- 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c
- };
- // ----------------------------------- read_settings -----------------------------------
- void read_settings() {
- DBG_PRINTLN("Read settings from EEPROM ");
- int i = EEPROM_START;
- uint32_t datacrc;
- EEPROM.begin(sizeof(eeprom_data) + sizeof(memcrc));
- while (i < sizeof(eeprom_data)) *((byte *)&eeprom_data + i) = EEPROM.read(i++);
- *((byte*)&memcrc) = EEPROM.read(i++);
- *((byte*)&memcrc + 1) = EEPROM.read(i++);
- *((byte*)&memcrc + 2) = EEPROM.read(i++);
- *((byte*)&memcrc + 3) = EEPROM.read(i);
- datacrc = crc_byte((byte *)&eeprom_data, sizeof(eeprom_data));
- if (!(setEEPROM = (memcrc == datacrc))) reset_settings();
- }
- //----------------------------------------reset_settings
- void reset_settings() {
- DBG_PRINTLN("Set defaults settings");
- eeprom_data.STAenabled = DEFAULT_STA_ENABLED;
- strncpy(eeprom_data.STAssid, STA_SSID_DEFAULT, sizeof(STA_SSID_DEFAULT));
- strncpy(eeprom_data.STApass, STA_PASSWORD_DEFAULT, sizeof(STA_PASSWORD_DEFAULT));
- write_settings();
- }
- // ----------------------------------- write_settings -----------------------------------
- void write_settings() {
- DBG_PRINTLN("Write settings to EEPROM");
- int i = EEPROM_START;
- EEPROM.begin(sizeof(eeprom_data) + sizeof(memcrc));
- while (i < sizeof(eeprom_data)) {
- EEPROM.write(i, *((byte *)&eeprom_data + i));
- i++ ;
- }
- memcrc = crc_byte((byte *)&eeprom_data, sizeof(eeprom_data));
- EEPROM.write(i++, *((byte*)&memcrc));
- EEPROM.write(i++, *((byte*)&memcrc + 1));
- EEPROM.write(i++, *((byte*)&memcrc + 2));
- EEPROM.write(i, *((byte*)&memcrc + 3));
- EEPROM.commit();
- }
- //######################################################################EEPROM_END##########################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement