diff options
| author | hathach <thach@tinyusb.org> | 2018-12-13 23:56:06 +0700 |
|---|---|---|
| committer | hathach <thach@tinyusb.org> | 2018-12-13 23:56:06 +0700 |
| commit | b37b2fa7e72a6a8d04af90b1c8ae52fcf1980350 (patch) | |
| tree | 58181d3c0c410593f06ff0d6784c904d05a30316 | |
| parent | e136222ae23b4a504838f2b413ba29865a73227c (diff) | |
overwrite old data if fifo is full
| -rw-r--r-- | ports/nrf/common-hal/busio/UART.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/ports/nrf/common-hal/busio/UART.c b/ports/nrf/common-hal/busio/UART.c index 294957fd3..a291af578 100644 --- a/ports/nrf/common-hal/busio/UART.c +++ b/ports/nrf/common-hal/busio/UART.c @@ -73,7 +73,11 @@ static void uart_callback_irq (const nrfx_uarte_event_t * event, void * context) switch ( event->type ) { case NRFX_UARTE_EVT_RX_DONE: for(uint8_t i=0; i < event->data.rxtx.bytes; i++) { - ringbuf_put(&self->rbuf, event->data.rxtx.p_data[i]); + if ( ringbuf_put(&self->rbuf, event->data.rxtx.p_data[i]) < 0 ) { + // if full overwrite old data + (void) ringbuf_get(&self->rbuf); + ringbuf_put(&self->rbuf, event->data.rxtx.p_data[i]); + } } // keep receiving |
