summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/nrf/common-hal/busio/UART.c6
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