From 422f35938a68b6343c1bf0c03d6a1c4636b8bc7b Mon Sep 17 00:00:00 2001 From: Develo Date: Mon, 20 Nov 2017 16:25:52 -0300 Subject: [PATCH] Added length and operator[] methods, added some constness, missed dirty clear (#3855) * Added length and operator[] methods, added some constness, missed _dirty clear * Added forgotten const --- libraries/EEPROM/EEPROM.cpp | 7 ++++--- libraries/EEPROM/EEPROM.h | 19 ++++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/libraries/EEPROM/EEPROM.cpp b/libraries/EEPROM/EEPROM.cpp index b5b8bfc15..0ec376abc 100644 --- a/libraries/EEPROM/EEPROM.cpp +++ b/libraries/EEPROM/EEPROM.cpp @@ -83,10 +83,11 @@ void EEPROMClass::end() { } _data = 0; _size = 0; + _dirty = false; } -uint8_t EEPROMClass::read(int address) { +uint8_t EEPROMClass::read(int const address) { if (address < 0 || (size_t)address >= _size) return 0; if(!_data) @@ -95,7 +96,7 @@ uint8_t EEPROMClass::read(int address) { return _data[address]; } -void EEPROMClass::write(int address, uint8_t value) { +void EEPROMClass::write(int const address, uint8_t const value) { if (address < 0 || (size_t)address >= _size) return; if(!_data) @@ -136,7 +137,7 @@ uint8_t * EEPROMClass::getDataPtr() { return &_data[0]; } -uint8_t const * EEPROMClass::getConstDataPtr() { +uint8_t const * EEPROMClass::getConstDataPtr() const { return &_data[0]; } diff --git a/libraries/EEPROM/EEPROM.h b/libraries/EEPROM/EEPROM.h index 934a995a0..54a9c1e33 100644 --- a/libraries/EEPROM/EEPROM.h +++ b/libraries/EEPROM/EEPROM.h @@ -32,16 +32,16 @@ public: EEPROMClass(void); void begin(size_t size); - uint8_t read(int address); - void write(int address, uint8_t val); + uint8_t read(int const address); + void write(int const address, uint8_t const val); bool commit(); void end(); uint8_t * getDataPtr(); - uint8_t const * getConstDataPtr(); + uint8_t const * getConstDataPtr() const; template - T &get(int address, T &t) { + T &get(int const address, T &t) { if (address < 0 || address + sizeof(T) > _size) return t; @@ -50,17 +50,22 @@ public: } template - const T &put(int address, const T &t) { + const T &put(int const address, const T &t) { if (address < 0 || address + sizeof(T) > _size) return t; if (memcmp(_data + address, (const uint8_t*)&t, sizeof(T)) != 0) { - _dirty = true; - memcpy(_data + address, (const uint8_t*)&t, sizeof(T)); + _dirty = true; + memcpy(_data + address, (const uint8_t*)&t, sizeof(T)); } return t; } + size_t length() {return _size;} + + uint8_t& operator[](int const address) {return getDataPtr()[address];} + uint8_t const & operator[](int const address) const {return getConstDataPtr()[address];} + protected: uint32_t _sector; uint8_t* _data;