Browse Source

AP_HAL_ChibiOS: Clear UART buffers when opening a port

master
Michael du Breuil 7 years ago committed by Francisco Ferreira
parent
commit
153ee6ca8e
  1. 15
      libraries/AP_HAL_ChibiOS/UARTDriver.cpp

15
libraries/AP_HAL_ChibiOS/UARTDriver.cpp

@ -148,14 +148,16 @@ void UARTDriver::begin(uint32_t b, uint16_t rxS, uint16_t txS)
thrashing of the heap once we are up. The ttyACM0 driver may not thrashing of the heap once we are up. The ttyACM0 driver may not
connect for some time after boot connect for some time after boot
*/ */
if (rxS != _readbuf.get_size()) {
_initialised = false;
while (_in_timer) { while (_in_timer) {
hal.scheduler->delay(1); hal.scheduler->delay(1);
} }
if (rxS != _readbuf.get_size()) {
_initialised = false;
_readbuf.set_size(rxS); _readbuf.set_size(rxS);
} }
if (hal.console != this) { // don't clear USB buffers (allows early startup messages to escape)
_readbuf.clear();
}
if (b != 0) { if (b != 0) {
_baudrate = b; _baudrate = b;
@ -173,13 +175,16 @@ void UARTDriver::begin(uint32_t b, uint16_t rxS, uint16_t txS)
/* /*
allocate the write buffer allocate the write buffer
*/ */
if (txS != _writebuf.get_size()) {
_initialised = false;
while (_in_timer) { while (_in_timer) {
hal.scheduler->delay(1); hal.scheduler->delay(1);
} }
if (txS != _writebuf.get_size()) {
_initialised = false;
_writebuf.set_size(txS); _writebuf.set_size(txS);
} }
if (hal.console != this) { // don't clear USB buffers (allows early startup messages to escape)
_writebuf.clear();
}
if (sdef.is_usb) { if (sdef.is_usb) {
#ifdef HAVE_USB_SERIAL #ifdef HAVE_USB_SERIAL

Loading…
Cancel
Save