@@ -358,13 +358,13 @@ bool ATHandler::fill_buffer(bool wait_for_timeout)
358
358
tr_debug (" %s" , __func__);
359
359
// Reset buffer when full
360
360
if (sizeof (_recv_buff) == _recv_len) {
361
+ tr_error (" AT overflow" );
361
362
reset_buffer ();
362
363
}
363
364
364
365
pollfh fhs;
365
366
fhs.fh = _fileHandle;
366
367
fhs.events = POLLIN;
367
- int timeout = 0 ;
368
368
int count = poll (&fhs, 1 , poll_timeout (wait_for_timeout));
369
369
if (count > 0 && (fhs.revents & POLLIN)) {
370
370
ssize_t len = _fileHandle->read (_recv_buff + _recv_len, sizeof (_recv_buff) - _recv_len);
@@ -374,10 +374,6 @@ bool ATHandler::fill_buffer(bool wait_for_timeout)
374
374
}
375
375
}
376
376
377
- if (wait_for_timeout) {
378
- set_error (NSAPI_ERROR_DEVICE_ERROR);
379
- }
380
-
381
377
return false ;
382
378
}
383
379
@@ -387,7 +383,8 @@ int ATHandler::get_char()
387
383
tr_debug (" %s" , __func__);
388
384
reset_buffer (); // try to read as much as possible
389
385
if (!fill_buffer ()) {
390
- tr_warn (" AT TIMEOUT" );
386
+ tr_warn (" AT timeout" );
387
+ set_error (NSAPI_ERROR_DEVICE_ERROR);
391
388
return -1 ; // timeout to read
392
389
}
393
390
}
@@ -800,7 +797,10 @@ void ATHandler::resp(const char *prefix, bool check_urc)
800
797
if (!prefix && ((_recv_len-_recv_pos) >= _max_resp_length)) {
801
798
return ;
802
799
}
803
- (void )fill_buffer ();
800
+ if (!fill_buffer ()) {
801
+ // if we don't get any match and no data within timeout, set an error to indicate need for recovery
802
+ set_error (NSAPI_ERROR_DEVICE_ERROR);
803
+ }
804
804
}
805
805
}
806
806
0 commit comments