From 484c4bab38825d0012fda04198f0229c955eadb8 Mon Sep 17 00:00:00 2001 From: devyte Date: Mon, 20 Nov 2017 15:20:20 -0300 Subject: [PATCH 1/2] Added length and operator[] methods, added some constness, missed _dirty clear --- libraries/EEPROM/EEPROM.cpp | 5 +++-- libraries/EEPROM/EEPROM.h | 17 +++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/libraries/EEPROM/EEPROM.cpp b/libraries/EEPROM/EEPROM.cpp index b5b8bfc157..3ada364a15 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) diff --git a/libraries/EEPROM/EEPROM.h b/libraries/EEPROM/EEPROM.h index 934a995a03..8f064ac7a2 100644 --- a/libraries/EEPROM/EEPROM.h +++ b/libraries/EEPROM/EEPROM.h @@ -32,8 +32,8 @@ class EEPROMClass { 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(); @@ -41,7 +41,7 @@ class EEPROMClass { uint8_t const * getConstDataPtr(); 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 @@ class EEPROMClass { } 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; From aa34508045301a054d494f04d805addb19bcfe86 Mon Sep 17 00:00:00 2001 From: devyte Date: Mon, 20 Nov 2017 15:31:12 -0300 Subject: [PATCH 2/2] Added forgotten const --- libraries/EEPROM/EEPROM.cpp | 2 +- libraries/EEPROM/EEPROM.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/EEPROM/EEPROM.cpp b/libraries/EEPROM/EEPROM.cpp index 3ada364a15..0ec376abc1 100644 --- a/libraries/EEPROM/EEPROM.cpp +++ b/libraries/EEPROM/EEPROM.cpp @@ -137,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 8f064ac7a2..54a9c1e336 100644 --- a/libraries/EEPROM/EEPROM.h +++ b/libraries/EEPROM/EEPROM.h @@ -38,7 +38,7 @@ class EEPROMClass { void end(); uint8_t * getDataPtr(); - uint8_t const * getConstDataPtr(); + uint8_t const * getConstDataPtr() const; template T &get(int const address, T &t) {