arduino updated eeprom: writeanything.h
#include <EEPROM.h> // We need this library
#include <Arduino.h> // for type definitions
//We create two fucntions for writing and reading data from the EEPROM
template <class T> int EEPROM_writeAnything(int ee, const T& value)
{
const byte* p = (const byte*)(const void*)&value;
unsigned int i;
for (i = 0; i < sizeof(value); i++)
EEPROM.write(ee++, *p++);
EEPROM.commit(); // comment out on some boards / older versions.
return i;
}
template <class T> int EEPROM_readAnything(int ee, T& value)
{
byte* p = (byte*)(void*)&value;
unsigned int i;
for (i = 0; i < sizeof(value); i++)
*p++ = EEPROM.read(ee++);
return i;
}
Usage
struct {
char ssid[20];
char passwd[20];
} wifiConfig;
void setup() {
// write struct to eeprom
EEPROM_writeAnything(0, wifiConfig);
// read from eeprom to struct
EEPROM_readAnything(0, wifiConfig);
}
Happy using ;)