#include <EEPROM.h>
#include <Arduino.h>  // for type definitions

 template <class T> int eepromw(int ee, const T& value, unsigned char len)
{
     const byte* p = (const byte*)(const void*)&value;
     unsigned int i;

     for (i = 0; i < len; i++)
           EEPROM.write(ee++, *p++);
     return i;
}

 template <class T> int eepromr(int ee, T& value, unsigned char len)
{
     byte* p = (byte*)(void*)&value;
     unsigned int i;

     for (i = 0; i < len; i++)
           *p++ = EEPROM.read(ee++);
     return i;
}
