@@ -141,16 +141,16 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
141
141
* + "+COMMAND: 4| 123OK<CR><LF>"
142
142
*/
143
143
enum class at_parse_state_t {
144
- Begin,
145
- Cmd,
146
- Data,
147
- Sized,
148
- ResWaitLF,
149
- Res,
150
- Error,
151
- ParseError,
152
- Ok,
153
- Completed,
144
+ Begin = 0 ,
145
+ Cmd = 1 ,
146
+ Data = 2 ,
147
+ Sized = 3 ,
148
+ ResWaitLF = 4 ,
149
+ Res = 5 ,
150
+ Error = 6 ,
151
+ ParseError = 7 ,
152
+ Ok = 8 ,
153
+ Completed = 9 ,
154
154
};
155
155
156
156
at_parse_state_t state = at_parse_state_t ::Begin;
@@ -189,6 +189,9 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
189
189
} else {
190
190
_serial_debug->print (c);
191
191
}
192
+ } else if (_serial_debug && _debug_level >= 2 ) {
193
+ _serial_debug->print (" State " );
194
+ _serial_debug->println ((int )state);
192
195
}
193
196
194
197
switch (state) {
@@ -289,9 +292,11 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
289
292
} if (c == RESULT_OK[0 ]) { // OK response
290
293
res = Ok;
291
294
state = at_parse_state_t ::Ok;
295
+ result_parse = 1 ;
292
296
} else if (c == RESULT_ERROR[0 ]) { // Error response
293
297
res = Error;
294
298
state = at_parse_state_t ::Error;
299
+ result_parse = 1 ;
295
300
}
296
301
// if we uncomment this we can force strict response matching
297
302
// else {
@@ -303,8 +308,7 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
303
308
* In this state we want to match the exact 'K<CR><LF>' response
304
309
*/
305
310
306
- if (c != RESULT_OK[++result_parse]) {
307
- _serial_debug->println (" pippo" );
311
+ if (c != RESULT_OK[result_parse++]) {
308
312
state = at_parse_state_t ::ParseError;
309
313
}
310
314
@@ -317,7 +321,7 @@ ModemClass::ParseResult ModemClass::buf_read(const string &prompt, string &data_
317
321
* In this state we want to match the exact 'RROR<CR><LF>' response
318
322
*/
319
323
320
- if (c != RESULT_ERROR[++result_parse ]) {
324
+ if (c != RESULT_ERROR[result_parse++ ]) {
321
325
state = at_parse_state_t ::ParseError;
322
326
}
323
327
0 commit comments