mirror of https://github.com/ArduPilot/ardupilot
GCS_MAVLink: Avoid serial passthrough buffer exhausted/lost data
Just don't read more than we can write.
This commit is contained in:
parent
bcf63326ea
commit
e8d2097ec4
|
@ -6767,14 +6767,14 @@ void GCS::passthru_timer(void)
|
||||||
uint8_t buf[64];
|
uint8_t buf[64];
|
||||||
|
|
||||||
// read from port1, and write to port2
|
// read from port1, and write to port2
|
||||||
int16_t nbytes = _passthru.port1->read_locked(buf, sizeof(buf), lock_key);
|
int16_t nbytes = _passthru.port1->read_locked(buf, MIN(sizeof(buf),_passthru.port2->txspace()), lock_key);
|
||||||
if (nbytes > 0) {
|
if (nbytes > 0) {
|
||||||
_passthru.last_port1_data_ms = AP_HAL::millis();
|
_passthru.last_port1_data_ms = AP_HAL::millis();
|
||||||
_passthru.port2->write_locked(buf, nbytes, lock_key);
|
_passthru.port2->write_locked(buf, nbytes, lock_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
// read from port2, and write to port1
|
// read from port2, and write to port1
|
||||||
nbytes = _passthru.port2->read_locked(buf, sizeof(buf), lock_key);
|
nbytes = _passthru.port2->read_locked(buf, MIN(sizeof(buf),_passthru.port1->txspace()), lock_key);
|
||||||
if (nbytes > 0) {
|
if (nbytes > 0) {
|
||||||
_passthru.port1->write_locked(buf, nbytes, lock_key);
|
_passthru.port1->write_locked(buf, nbytes, lock_key);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue