8 #ifndef BUFFERED_EEPROM_CLASS_H
9 #define BUFFERED_EEPROM_CLASS_H
11 #if defined(ARDUINO_ARCH_STM32)
46 class BufferedEEPROMClass {
48 BufferedEEPROMClass() =
default;
54 uint8_t read(
int const address) {
55 return eeprom_buffered_read_byte(address);
58 void write(
int const address, uint8_t
const val) {
59 eeprom_buffered_write_byte(address, val);
62 bool commit() { eeprom_buffer_flush();
return true; }
64 void end() { commit(); }
67 T &get(
int address, T &t) {
68 size_t dataSize =
sizeof(T);
69 uint8_t* data = (uint8_t*) &t;
71 *data++ = read(address++);
77 const T &put(
int address,
const T &t) {
78 size_t dataSize =
sizeof(T);
79 uint8_t* data = (uint8_t*) &t;
81 write(address++, *data++);
94 size_t length()
const {
101 uint8_t * getDataPtr();
102 uint8_t
const * getConstDataPtr()
const;
104 uint8_t& operator[](
int const address) {
105 return getDataPtr()[address];
107 uint8_t
const & operator[](
int const address)
const {
108 return getConstDataPtr()[address];
113 #if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_EEPROM)
114 extern BufferedEEPROMClass BufferedEEPROM;