Skip to content

Commit 5793063

Browse files
fixup! [WIP] Improving parse function in modem class
1 parent 1586d1b commit 5793063

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

libraries/WiFiS3/src/Modem.cpp

+13-8
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ bool ModemClass::passthrough(const uint8_t *data, size_t size) {
5757
_serial_debug->println(data_res.c_str());
5858
if(res == Ok) {
5959
_serial_debug->println(" Result: OK");
60-
} else if(res = Error) {
60+
} else if(res == Error) {
6161
_serial_debug->println(" Result: ERROR");
62-
} else if(res = Timeout) {
62+
} else if(res == Timeout) {
6363
_serial_debug->println(" Result: TIMEOUT");
6464
} else {
6565
_serial_debug->println(" Result: ParseError");
@@ -112,9 +112,9 @@ bool ModemClass::write(const string &prompt, string &data_res, const char * fmt,
112112
_serial_debug->println(data_res.c_str());
113113
if(res == Ok) {
114114
_serial_debug->println(" Result: OK");
115-
} else if(res = Error) {
115+
} else if(res == Error) {
116116
_serial_debug->println(" Result: ERROR");
117-
} else if(res = Timeout) {
117+
} else if(res == Timeout) {
118118
_serial_debug->println(" Result: TIMEOUT");
119119
} else {
120120
_serial_debug->println(" Result: ParseError");
@@ -167,13 +167,16 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
167167
}
168168

169169
unsigned long start_time = millis();
170-
while(state != at_parse_state_t::Completed) {
170+
while(state != at_parse_state_t::Completed &&
171+
state != at_parse_state_t::ParseError) {
171172
if(millis() - start_time > _timeout) {
172173
res = Timeout;
173174
break;
174175
}
175176

176-
while(_serial->available() && state != at_parse_state_t::Completed) {
177+
while(_serial->available() &&
178+
state != at_parse_state_t::Completed &&
179+
state != at_parse_state_t::ParseError) {
177180
char c = _serial->read();
178181
if(_serial_debug && _debug_level >= 1) {
179182
if(c == '\n') {
@@ -207,8 +210,10 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
207210
state = at_parse_state_t::Cmd;
208211
} else if(c == RESULT_OK[result_parse]) { // FIXME this should also account for following characters
209212
state = at_parse_state_t::Ok;
213+
result_parse++;
210214
} else if(c == RESULT_ERROR[result_parse]) { // FIXME this should also account for following characters
211215
state = at_parse_state_t::Error;
216+
result_parse++;
212217
} else {
213218
data_res = "";
214219
}
@@ -290,11 +295,9 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
290295
res = Error;
291296
state = at_parse_state_t::Completed;
292297
} if(c == RESULT_OK[0]) { // OK response
293-
res = Ok;
294298
state = at_parse_state_t::Ok;
295299
result_parse = 1;
296300
} else if(c == RESULT_ERROR[0]) { // Error response
297-
res = Error;
298301
state = at_parse_state_t::Error;
299302
result_parse = 1;
300303
}
@@ -313,6 +316,7 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
313316
}
314317

315318
if(result_parse == strlen(RESULT_OK)) {
319+
res = Ok;
316320
state = at_parse_state_t::Completed;
317321
}
318322
break;
@@ -326,6 +330,7 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
326330
}
327331

328332
if(result_parse == strlen(RESULT_ERROR)) {
333+
res = Error;
329334
state = at_parse_state_t::Completed;
330335
}
331336
break;

0 commit comments

Comments
 (0)