Browse Source

AP_HAL_Linux: make Ublox transactions shorter

master
Staroselskii Georgii 10 years ago committed by Andrew Tridgell
parent
commit
5b21bd2f1d
  1. 17
      libraries/AP_HAL_Linux/SPIUARTDriver.cpp

17
libraries/AP_HAL_Linux/SPIUARTDriver.cpp

@ -165,7 +165,7 @@ int LinuxSPIUARTDriver::_write_fd(const uint8_t *buf, uint16_t size)
} }
static const uint8_t ff_stub[3000] = {0xff}; static const uint8_t ff_stub[300] = {0xff};
int LinuxSPIUARTDriver::_read_fd(uint8_t *buf, uint16_t n) int LinuxSPIUARTDriver::_read_fd(uint8_t *buf, uint16_t n)
{ {
if (_external) { if (_external) {
@ -176,11 +176,22 @@ int LinuxSPIUARTDriver::_read_fd(uint8_t *buf, uint16_t n)
return 0; return 0;
} }
/* Make SPI transactions shorter. It can save SPI bus from keeping too
* long. It's essential for NavIO as MPU9250 is on the same bus and
* doesn't like to be waiting. Making transactions more frequent but shorter
* is a win.
*/
if (n > 100) {
n = 100;
}
_spi->transaction(ff_stub, buf, n); _spi->transaction(ff_stub, buf, n);
sem_give();
BUF_ADVANCETAIL(_readbuf, n); BUF_ADVANCETAIL(_readbuf, n);
sem_give();
return n; return n;
} }
@ -191,7 +202,7 @@ void LinuxSPIUARTDriver::_timer_tick(void)
return; return;
} }
/* lower the update rate */ /* lower the update rate */
if (hal.scheduler->micros() - _last_update_timestamp < 50000) { if (hal.scheduler->micros() - _last_update_timestamp < 10000) {
return; return;
} }

Loading…
Cancel
Save