diff options
Diffstat (limited to 'memoryAccess.cpp')
-rw-r--r-- | memoryAccess.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/memoryAccess.cpp b/memoryAccess.cpp new file mode 100644 index 0000000..2887b74 --- /dev/null +++ b/memoryAccess.cpp @@ -0,0 +1,77 @@ +/* This class is made spesifically for the IOT-clapSensor + ADRESSES + version and others {0, 9} + deviceGuid {10, 19} + deviceName {20, 69} + deviceLocation {70, 119} + SSID {120, 269} + Password {270, 219} +*/ +#include "Arduino.h" +#include "memoryAccess.h" +#include <EEPROM.h> + +void memoryAccess::init() { + EEPROM.begin(512); +} + +struct memoryAdress memoryAccess::getAdress(String varName) { + memoryAdress tmp; + if ((String) "version" == varName) { tmp = {0, 4}; } + else if ((String) "deviceId" == varName) { tmp = {10, 19}; } + else if ((String) "deviceName" == varName) { tmp = {20, 69}; } + else if ((String) "deviceLocation" == varName) { tmp = {70, 119}; } + else if ((String) "SSID" == varName) { tmp = {120, 269}; } + else if ((String) "Password" == varName) { tmp = {270, 219}; } + else { Serial.println("UNKNOWN MEMNAME"); } + return tmp; +} + +bool memoryAccess::writeAscii(String varName, String data) { + /* Write ascii string to EEPROM */ + struct memoryAdress memAdress = this->getAdress(varName); + int LString = data.length() - 1; + int LMemory = memAdress.endPos - memAdress.startPos; + + if (LString > LMemory) { return false; } + + int o = 0; + for (int i = memAdress.startPos; i <= memAdress.endPos; i++) { + byte Cchar = data.charAt(o); + if (EEPROM.read(i) != Char) { + EEPROM.write(i, Cchar); + } + o++; + } + return true; +} + +String memoryAccess::readAscii(String varName) { + /* Read ascii string from EEPROM */ + struct memoryAdress memAdress = this->getAdress(varName); + String buffer = ""; + + for (int i = memAdress.startPos; i <= memAdress.endPos; i++) { + char tmpByte = EEPROM.read(i); + if (tmpByte != '\0') { + buffer += tmpByte; + } + } + + return buffer; +} + +void memoryAccess::commit() { + EEPROM.commit(); +} + +void memoryAccess::dump() { + Serial.println(""); + Serial.println("EEPROM DUMP:"); + for (int i = 0; i < 512; i++) { + char cChar = EEPROM.read(i); + String cStr = String(cChar); + Serial.print("[" + String(i) + "]: "); + Serial.println(String(cStr)); + } +} |