Basic debug library

Dependents:   modem_ref_helper_for_v5_3_217 modem_ref_helper

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