Datacollection on microbit with bluetooth uart transfer

Dependencies:   BLE_API mbed

Revision:
0:91cacb081de7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Feb 19 23:29:39 2018 +0000
@@ -0,0 +1,97 @@
+#include "MicroBit.h"
+#include "MicroBitSamples.h"
+#include "MicroBitUARTService.h"
+MicroBit uBit;
+MicroBitUARTService *uart;
+
+int connected = 0;
+
+void onConnected(MicroBitEvent e)
+{
+    uBit.display.scroll("C");
+
+    connected = 1;
+
+    // my client will send ASCII strings terminated with the colon character
+    ManagedString eom(":");
+
+    while (connected == 1) {
+        ManagedString msg = uart->readUntil(eom);
+        uBit.display.scroll(msg);
+    }
+
+}
+
+void onDisconnected(MicroBitEvent e)
+{
+    uBit.display.scroll("D");
+    connected = 0;
+}
+
+void onButtonA(MicroBitEvent e)
+{
+    if (connected == 0) {
+        uBit.display.scroll("NC");
+        return;
+    }
+    uart->send("YES");
+    uBit.display.scroll("YES");
+}
+
+void onButtonB(MicroBitEvent e)
+{
+    if (connected == 0) {
+        uBit.display.scroll("NC");
+        return;
+    }
+    uart->send("NO");
+    uBit.display.scroll("NO");
+}
+
+void onButtonAB(MicroBitEvent e)
+{
+    if (connected == 0) {
+        uBit.display.scroll("NC");
+        return;
+    }
+    uart->send("GOT IT!!");
+    uBit.display.scroll("GOT IT!!");
+}
+
+/*
+Recommend disabling the DFU and Event services in MicroBitConfig.h since they are not needed here:
+
+#ifndef MICROBIT_BLE_DFU_SERVICE
+#define MICROBIT_BLE_DFU_SERVICE                0
+#endif
+
+#ifndef MICROBIT_BLE_EVENT_SERVICE
+#define MICROBIT_BLE_EVENT_SERVICE              0
+#endif
+*/
+
+int main()
+{
+    // Initialise the micro:bit runtime.
+    uBit.init();
+
+    // listen for Bluetooth connection state changes
+    uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_CONNECTED, onConnected);
+    uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, onDisconnected);
+
+    // listen for user button interactions
+    uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_CLICK, onButtonA);
+    uBit.messageBus.listen(MICROBIT_ID_BUTTON_B, MICROBIT_BUTTON_EVT_CLICK, onButtonB);
+    uBit.messageBus.listen(MICROBIT_ID_BUTTON_AB, MICROBIT_BUTTON_EVT_CLICK, onButtonAB);
+
+
+    // Note GATT table size increased from default in MicroBitConfig.h
+    // #define MICROBIT_SD_GATT_TABLE_SIZE             0x500
+    uart = new MicroBitUARTService(*uBit.ble, 32, 32); 
+    uBit.display.scroll("AVM");
+
+    // If main exits, there may still be other fibers running or registered event handlers etc.
+    // Simply release this fiber, which will mean we enter the scheduler. Worse case, we then
+    // sit in the idle task forever, in a power efficient sleep.
+    release_fiber();
+}
\ No newline at end of file