void EEPROM_write_char(uint16_t address, unsigned char data) { //Wait for completion of previous write while(EECR & (1< void EEPROM_write_class(uint16_t address, T& in) { EEPROM_write_string( address, reinterpret_cast(&in), sizeof(in)); } template T EEPROM_read_class(uint16_t address) { char data[sizeof(T)]; EEPROM_read_string( address, data, sizeof(T) ); return *reinterpret_cast(data); } template void EEPROM_read_class(uint16_t address, T* in) { EEPROM_read_string( address, reinterpret_cast(&in), sizeof(T) ); }