diff --git a/src/GPS/GPSProvider.cc b/src/GPS/GPSProvider.cc index a991ad689e1c4a64eceb612872d52739dd1003a8..f8c836b489f3ae9551d83ceb4b483b8b93fe57ff 100644 --- a/src/GPS/GPSProvider.cc +++ b/src/GPS/GPSProvider.cc @@ -141,10 +141,11 @@ int GPSProvider::callback(GPSCallbackType type, void *data1, int data2) { switch (type) { case GPSCallbackType::readDeviceData: { - int timeout = *((int *) data1); - if (!_serial->waitForReadyRead(timeout)) - return 0; //timeout - msleep(10); //give some more time to buffer data + if (_serial->bytesAvailable() == 0) { + int timeout = *((int *) data1); + if (!_serial->waitForReadyRead(timeout)) + return 0; //timeout + } return (int)_serial->read((char*) data1, data2); } case GPSCallbackType::writeDeviceData: