1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
/* 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, 319}; }
else {
Serial.println("");
Serial.print("UNKNOWN MEMNAME: ");
Serial.println(varName);
}
return tmp;
}
void memoryAccess::write(int location, byte val) {
EEPROM.write(location, val);
}
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) != cChar) {
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));
}
}
|