Skip to content

Commit 49691b4

Browse files
committed
readValue(): refactoring
1 parent 956adb2 commit 49691b4

File tree

4 files changed

+39
-12
lines changed

4 files changed

+39
-12
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,16 @@ int readValue(void *buff, unsigned int byteNum);
2222
cdbResult close();
2323
```
2424
25-
## Usage example
25+
## Usage examples
2626
2727
`examples` folder contains `airports.ino` Arduino IDE sketch, Python converter `airports.py` script and data files.
2828
2929
<img src="https://github.com/JulStrat/uCDB/blob/master/examples/airports/airports.png">
3030
31+
`benchmark` sketch.
32+
33+
<img src="https://github.com/JulStrat/uCDB/blob/master/examples/benchmark/benchmark.png">
34+
3135
## License
3236
3337
`uCDB` source code released into the public domain.

examples/benchmark/benchmark.ino

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ void loop() {
3535
long key;
3636
unsigned long startMillis;
3737
cdbResult rt;
38+
int br;
3839

3940
Serial.println("Press any key to start test");
4041
while (!Serial.available()) {
@@ -47,7 +48,7 @@ void loop() {
4748
return;
4849
}
4950

50-
Serial.println("Querying 1000 random keys from interval [0..5000000)...");
51+
Serial.println("Querying 1000 random keys from interval [0, 5000000)...");
5152
startMillis = millis();
5253
for (int i = 0; i < 1000; ++i) {
5354
key = random(5000000);
@@ -71,7 +72,7 @@ void loop() {
7172
Serial.print("Query millis: ");
7273
Serial.println(millis() - startMillis);
7374

74-
Serial.println("Querying 1000 random keys from interval [-5000000,0)...");
75+
Serial.println("Querying 1000 random keys from interval [-5000000, 0)...");
7576
startMillis = millis();
7677
for (int i = 0; i < 1000; ++i) {
7778
key = random(-5000000, 0);
@@ -86,7 +87,7 @@ void loop() {
8687
Serial.print("Query millis: ");
8788
Serial.println(millis() - startMillis);
8889

89-
Serial.println("Querying 1000 random keys with findNextValue() from interval [0..5000000)...");
90+
Serial.println("Querying 1000 random keys with findNextValue() from interval [0, 5000000)...");
9091
startMillis = millis();
9192
for (int i = 0; i < 1000; ++i) {
9293
key = random(5000000);
@@ -116,7 +117,7 @@ void loop() {
116117
Serial.print("Query millis: ");
117118
Serial.println(millis() - startMillis);
118119

119-
Serial.println("Querying 1000 random keys with findNextValue() from interval [-5000000,0)...");
120+
Serial.println("Querying 1000 random keys with findNextValue() from interval [-5000000, 0)...");
120121
startMillis = millis();
121122
for (int i = 0; i < 1000; ++i) {
122123
key = random(-5000000, 0);
@@ -137,6 +138,24 @@ void loop() {
137138
Serial.print("Query millis: ");
138139
Serial.println(millis() - startMillis);
139140

141+
Serial.println("readValue() test...");
142+
for (int i = 0; i < 100; ++i) {
143+
sprintf(str, "%ld", (long)5*i);
144+
rt = ucdb.findKey(str, strlen(str));
145+
146+
if (rt == KEY_FOUND) {
147+
br = ucdb.readValue(str, 15);
148+
if (br >= 0) {
149+
str[br] = '\0';
150+
Serial.println(str);
151+
}
152+
}
153+
else {
154+
Serial.print("Error: ");
155+
Serial.println(5*i);
156+
break;
157+
}
158+
}
140159

141160
ucdb.close();
142161
while (Serial.available()) {

examples/benchmark/benchmark.png

3.74 KB
Loading

src/uCDB.cpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -207,16 +207,20 @@ int uCDB::readValue() {
207207
}
208208

209209
int uCDB::readValue(void *buff, unsigned int byteNum) {
210-
if (state != KEY_FOUND) {
211-
return -1;
212-
}
210+
int br;
213211

214-
if (byteNum > valueBytesAvail) {
215-
byteNum = valueBytesAvail;
212+
if (state == KEY_FOUND) {
213+
if (byteNum > valueBytesAvail) {
214+
byteNum = valueBytesAvail;
215+
}
216+
br = cdb.read(buff, byteNum);
217+
if (br > 0) {
218+
valueBytesAvail -= br;
219+
}
220+
return br;
216221
}
217-
valueBytesAvail -= byteNum;
218222

219-
return cdb.read(buff, byteNum);
223+
return -1;
220224
}
221225

222226
cdbResult uCDB::close() {

0 commit comments

Comments
 (0)