@@ -57,9 +57,9 @@ bool ModemClass::passthrough(const uint8_t *data, size_t size) {
57
57
_serial_debug->println (data_res.c_str ());
58
58
if (res == Ok) {
59
59
_serial_debug->println (" Result: OK" );
60
- } else if (res = Error) {
60
+ } else if (res == Error) {
61
61
_serial_debug->println (" Result: ERROR" );
62
- } else if (res = Timeout) {
62
+ } else if (res == Timeout) {
63
63
_serial_debug->println (" Result: TIMEOUT" );
64
64
} else {
65
65
_serial_debug->println (" Result: ParseError" );
@@ -112,9 +112,9 @@ bool ModemClass::write(const string &prompt, string &data_res, const char * fmt,
112
112
_serial_debug->println (data_res.c_str ());
113
113
if (res == Ok) {
114
114
_serial_debug->println (" Result: OK" );
115
- } else if (res = Error) {
115
+ } else if (res == Error) {
116
116
_serial_debug->println (" Result: ERROR" );
117
- } else if (res = Timeout) {
117
+ } else if (res == Timeout) {
118
118
_serial_debug->println (" Result: TIMEOUT" );
119
119
} else {
120
120
_serial_debug->println (" Result: ParseError" );
@@ -167,13 +167,16 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
167
167
}
168
168
169
169
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) {
171
172
if (millis () - start_time > _timeout) {
172
173
res = Timeout;
173
174
break ;
174
175
}
175
176
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) {
177
180
char c = _serial->read ();
178
181
if (_serial_debug && _debug_level >= 1 ) {
179
182
if (c == ' \n ' ) {
@@ -207,8 +210,10 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
207
210
state = at_parse_state_t ::Cmd;
208
211
} else if (c == RESULT_OK[result_parse]) { // FIXME this should also account for following characters
209
212
state = at_parse_state_t ::Ok;
213
+ result_parse++;
210
214
} else if (c == RESULT_ERROR[result_parse]) { // FIXME this should also account for following characters
211
215
state = at_parse_state_t ::Error;
216
+ result_parse++;
212
217
} else {
213
218
data_res = " " ;
214
219
}
@@ -290,11 +295,9 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
290
295
res = Error;
291
296
state = at_parse_state_t ::Completed;
292
297
} if (c == RESULT_OK[0 ]) { // OK response
293
- res = Ok;
294
298
state = at_parse_state_t ::Ok;
295
299
result_parse = 1 ;
296
300
} else if (c == RESULT_ERROR[0 ]) { // Error response
297
- res = Error;
298
301
state = at_parse_state_t ::Error;
299
302
result_parse = 1 ;
300
303
}
@@ -313,6 +316,7 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
313
316
}
314
317
315
318
if (result_parse == strlen (RESULT_OK)) {
319
+ res = Ok;
316
320
state = at_parse_state_t ::Completed;
317
321
}
318
322
break ;
@@ -326,6 +330,7 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
326
330
}
327
331
328
332
if (result_parse == strlen (RESULT_ERROR)) {
333
+ res = Error;
329
334
state = at_parse_state_t ::Completed;
330
335
}
331
336
break ;
0 commit comments