diff --git a/examples/platforms/nrf52840/platform-nrf5.h b/examples/platforms/nrf52840/platform-nrf5.h index ee9ca435a..03d24cb91 100644 --- a/examples/platforms/nrf52840/platform-nrf5.h +++ b/examples/platforms/nrf52840/platform-nrf5.h @@ -53,6 +53,12 @@ void nrf5UartInit(void); */ void nrf5UartDeinit(void); +/** + * Clear pending UART data. + * + */ +void nrf5UartClearPendingData(void); + /** * This function performs UART driver processing. * diff --git a/examples/platforms/nrf52840/system.c b/examples/platforms/nrf52840/system.c index 20b21896c..9db75688a 100644 --- a/examples/platforms/nrf52840/system.c +++ b/examples/platforms/nrf52840/system.c @@ -81,6 +81,11 @@ void otSysInit(int argc, char *argv[]) nrf5UartInit(); nrf5CryptoInit(); } + else + { + nrf5UartClearPendingData(); + } + #ifndef SPIS_TRANSPORT_DISABLE nrf5SpiSlaveInit(); #endif diff --git a/examples/platforms/nrf52840/uart.c b/examples/platforms/nrf52840/uart.c index 2caf9552e..b95c47554 100644 --- a/examples/platforms/nrf52840/uart.c +++ b/examples/platforms/nrf52840/uart.c @@ -150,6 +150,11 @@ void nrf5UartInit(void) // Intentionally empty. } +void nrf5UartClearPendingData(void) +{ + // Intentionally empty. +} + void nrf5UartDeinit(void) { if (sUartEnabled) diff --git a/examples/platforms/nrf52840/usb-cdc-uart.c b/examples/platforms/nrf52840/usb-cdc-uart.c index 9b44acd3c..6df6cd094 100644 --- a/examples/platforms/nrf52840/usb-cdc-uart.c +++ b/examples/platforms/nrf52840/usb-cdc-uart.c @@ -290,6 +290,13 @@ void nrf5UartDeinit(void) app_usbd_uninit(); } +void nrf5UartClearPendingData(void) +{ + sUsbState.mTransferInProgress = false; + sUsbState.mTxBuffer = NULL; + sUsbState.mTxSize = 0; +} + void nrf5UartProcess(void) { while (app_usbd_event_queue_process())