Skip to content

Commit

Permalink
gps: fix Septentrino serial read (#22936)
Browse files Browse the repository at this point in the history
For Septententrino we seem to sometimes fill the buffer pretty full.

If we ask for too much, readAtLeast will fail completely and make the
GPS discovery logic fall over. Therefore, let's not ask for too much and
just read what we can given the available buffer.

Signed-off-by: Julian Oes <[email protected]>
  • Loading branch information
julianoes authored Apr 2, 2024
1 parent 71b074b commit 0283dc2
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/drivers/gps/gps.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -471,14 +471,14 @@ int GPS::callback(GPSCallbackType type, void *data1, int data2, void *user)
int GPS::pollOrRead(uint8_t *buf, size_t buf_length, int timeout)
{
int ret = 0;
const unsigned character_count = 32; // minimum bytes that we want to read
const size_t character_count = 32; // minimum bytes that we want to read
const int max_timeout = 50;
int timeout_adjusted = math::min(max_timeout, timeout);

handleInjectDataTopic();

if (_interface == GPSHelper::Interface::UART) {
ret = _uart.readAtLeast(buf, buf_length, character_count, timeout_adjusted);
ret = _uart.readAtLeast(buf, buf_length, math::min(character_count, buf_length), timeout_adjusted);

// SPI is only supported on LInux
#if defined(__PX4_LINUX)
Expand Down Expand Up @@ -1560,4 +1560,4 @@ int
gps_main(int argc, char *argv[])
{
return GPS::main(argc, argv);
}
}

0 comments on commit 0283dc2

Please sign in to comment.