Advertisement
Guest User

Untitled

a guest
Aug 28th, 2015
877
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.11 KB | None | 0 0
  1. #define EEPROM_START 0
  2. boolean setEEPROM = false;
  3. uint32_t memcrc;
  4.  
  5. struct eeprom_data_t {
  6.   bool STAenabled;
  7.   char STAssid[32];
  8.   char STApass[32];
  9. } eeprom_data;
  10.  
  11. static PROGMEM prog_uint32_t crc_table[16] = {
  12.   0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c,
  13.   0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c
  14. };
  15.  
  16. // ----------------------------------- read_settings -----------------------------------
  17. void read_settings() {
  18.   DBG_PRINTLN("Read settings from EEPROM ");
  19.   int i = EEPROM_START;
  20.   uint32_t datacrc;
  21.   EEPROM.begin(sizeof(eeprom_data) + sizeof(memcrc));
  22.   while (i < sizeof(eeprom_data)) *((byte *)&eeprom_data + i) = EEPROM.read(i++);
  23.   *((byte*)&memcrc) = EEPROM.read(i++);
  24.   *((byte*)&memcrc + 1) = EEPROM.read(i++);
  25.   *((byte*)&memcrc + 2) = EEPROM.read(i++);
  26.   *((byte*)&memcrc + 3) = EEPROM.read(i);
  27.   datacrc = crc_byte((byte *)&eeprom_data, sizeof(eeprom_data));
  28.   if (!(setEEPROM = (memcrc == datacrc))) reset_settings();
  29.  
  30. }
  31. //----------------------------------------reset_settings
  32. void reset_settings() {
  33.   DBG_PRINTLN("Set defaults settings");
  34.   eeprom_data.STAenabled = DEFAULT_STA_ENABLED;
  35.   strncpy(eeprom_data.STAssid, STA_SSID_DEFAULT, sizeof(STA_SSID_DEFAULT));
  36.   strncpy(eeprom_data.STApass, STA_PASSWORD_DEFAULT, sizeof(STA_PASSWORD_DEFAULT));
  37.   write_settings();
  38. }
  39.  
  40. // ----------------------------------- write_settings -----------------------------------
  41. void write_settings() {
  42.   DBG_PRINTLN("Write settings to EEPROM");
  43.   int i = EEPROM_START;
  44.   EEPROM.begin(sizeof(eeprom_data) + sizeof(memcrc));
  45.   while (i < sizeof(eeprom_data))   {
  46.     EEPROM.write(i, *((byte *)&eeprom_data + i));
  47.     i++  ;
  48.   }
  49.   memcrc = crc_byte((byte *)&eeprom_data, sizeof(eeprom_data));
  50.   EEPROM.write(i++, *((byte*)&memcrc));
  51.   EEPROM.write(i++, *((byte*)&memcrc + 1));
  52.   EEPROM.write(i++, *((byte*)&memcrc + 2));
  53.   EEPROM.write(i, *((byte*)&memcrc + 3));
  54.   EEPROM.commit();
  55. }
  56. //######################################################################EEPROM_END##########################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement