Basic debug library
Dependents: modem_ref_helper_for_v5_3_217 modem_ref_helper
Diff: WizziDebug.cpp
- Revision:
- 7:8e75991f65e5
- Parent:
- 6:70e985e34364
- Child:
- 8:87a867b8a129
--- a/WizziDebug.cpp Thu Sep 20 09:35:19 2018 +0000 +++ b/WizziDebug.cpp Tue Apr 02 08:54:07 2019 +0000 @@ -17,9 +17,25 @@ static uint32_t g_dbg_nb_mallocs; static PinName __attribute__((unused)) g_dbg_led; static uint32_t g_dbg_missing; +static void (*g_dbg_rx_callback)(char c) = NULL; void dbg_print_thread(); +static void dbg_serial_rx_isr(void) +{ + if (!g_dbg_rx_callback) + { + PRINT("%c", g_dbg_serial->getc()); + return; + } + + // Loop just in case more than one character is in UART's receive FIFO buffer + while (g_dbg_serial->readable()) + { + g_dbg_rx_callback(g_dbg_serial->getc()); + } +} + // Redefine mbed error function void error(const char* format, ...) { @@ -43,6 +59,7 @@ g_dbg_serial = new RawSerial(tx, rx, 115200); g_dbg_serial->format(8, SerialBase::None, 1); + g_dbg_serial->attach(callback(&dbg_serial_rx_isr), Serial::RxIrq); g_dbg_thread.start(dbg_print_thread); } @@ -261,6 +278,11 @@ } } +void dbg_set_rx_callback(void (*rx_isr)(char c)) +{ + g_dbg_rx_callback = rx_isr; +} + // Reset_Handler // NMI_Handler // HardFault_Handler