-
Notifications
You must be signed in to change notification settings - Fork 0
/
eEEPROM.ino
109 lines (91 loc) · 2.83 KB
/
eEEPROM.ino
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#ifdef ENABLE_EEP
#include <extEEPROM.h>
const uint32_t totalKBytes = 32; //for read and write test functions
extEEPROM eep(kbits_256, 1, 64, 83); //device size, number of devices, page size
void eep_start() {
uint8_t eepStatus = eep.begin(twiClock400kHz); //go fast!
Serial.print(F("<EEP_START="));
Serial.print(eepStatus);
Serial.println(F(">"));
}
void eep_cmd( byte Setting ) {
String size_s;
String addr_s;
String data_s;
long unsigned int d_size;
long unsigned int d_size_c;
long unsigned int addr;
char data_a[32];
int Item_1;
int Item_2;
int Item_3;
// aa,ss,ddddd
// <EEP_WR=10,14,(...)>
// <EEP_RD=10,14>
// <EEP_ER=10,14>
unsigned long cmdtime;
switch (Setting) {
case 0: //write
cmdtime = millis();
Item_1 = value_string.indexOf("=");
Item_2 = value_string.indexOf(",", Item_1 + 1);
Item_3 = value_string.indexOf(",", Item_2 + 1);
addr_s = value_string.substring(Item_1 + 1, Item_2);
size_s = value_string.substring(Item_2 + 1, Item_3);
data_s = value_string.substring(Item_3 + 1);
addr = addr_s.toInt();
d_size = size_s.toInt();
data_s.toCharArray(data_a, d_size+1, 0);
d_size_c = data_s.length();
// Serial.println(value_string);
// Serial.println(addr);
// Serial.println(d_size);
// Serial.println(d_size_c);
// Serial.print("'");
// Serial.print(data_s);
// Serial.println("'");
// Serial.print("'");
// Item_1 = 0;
// while ( Item_1 < d_size+1 ) {
// if ( data_a[Item_1] == 0 ) break;
// Serial.print(data_a[Item_1]);
// Item_1++;
// }
// Serial.println("'");
// Serial.println(millis() - cmdtime);
if ( d_size > 0 ) {
// Serial.println(eep.write( addr, data_a ,d_size+1 ));
eep.write( addr, data_a ,d_size+1 );
}
Serial.print(F("<EEP_WR=DONE>"));
break;
case 1: //read
// cmdtime = millis();
Item_1 = value_string.indexOf("=");
Item_2 = value_string.indexOf(",", Item_1 + 1);
addr_s = value_string.substring(Item_1 + 1, Item_2);
size_s = value_string.substring(Item_2 + 1);
addr = addr_s.toInt();
d_size = size_s.toInt();
// Serial.println(value_string);
// Serial.println(addr);
// Serial.println(d_size);
if ( d_size > 0 ) {
//Serial.println(eep.read( addr, data_a ,d_size+1 ));
eep.read( addr, data_a ,d_size+1 );
}
Serial.print(F("<EEP_DT="));
Item_1 = 0;
while ( Item_1 < d_size+1 ) {
if ( data_a[Item_1] == 0 ) break;
Serial.print(data_a[Item_1]);
Item_1++;
}
Serial.println(F(">"));
// Serial.println(millis() - cmdtime);
break;
case 2: //erase with FF
break;
}
}
#endif