diff --git a/epicardium/modules/serial.c b/epicardium/modules/serial.c index a7392056f31705e9c6f334f60952ece4dee22d10..b7be0594f3fcacbee9ac3ed7ab6ff0163c74f1a8 100644 --- a/epicardium/modules/serial.c +++ b/epicardium/modules/serial.c @@ -27,7 +27,21 @@ static QueueHandle_t read_queue; */ void epic_uart_write_str(const char *str, intptr_t length) { + uint32_t basepri = __get_BASEPRI(); + if (xPortIsInsideInterrupt()) { + taskENTER_CRITICAL_FROM_ISR(); + } else { + taskENTER_CRITICAL(); + } + UART_Write(ConsoleUart, (uint8_t *)str, length); + + if (xPortIsInsideInterrupt()) { + taskEXIT_CRITICAL_FROM_ISR(basepri); + } else { + taskEXIT_CRITICAL(); + } + cdcacm_write((uint8_t *)str, length); ble_uart_write((uint8_t *)str, length); }