Datacollection on microbit with bluetooth uart transfer

Dependencies:   BLE_API mbed

Committer:
aziobro
Date:
Mon Feb 19 23:29:39 2018 +0000
Revision:
0:91cacb081de7
First Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aziobro 0:91cacb081de7 1 #include "MicroBit.h"
aziobro 0:91cacb081de7 2 #include "MicroBitSamples.h"
aziobro 0:91cacb081de7 3 #include "MicroBitUARTService.h"
aziobro 0:91cacb081de7 4 MicroBit uBit;
aziobro 0:91cacb081de7 5 MicroBitUARTService *uart;
aziobro 0:91cacb081de7 6
aziobro 0:91cacb081de7 7 int connected = 0;
aziobro 0:91cacb081de7 8
aziobro 0:91cacb081de7 9 void onConnected(MicroBitEvent e)
aziobro 0:91cacb081de7 10 {
aziobro 0:91cacb081de7 11 uBit.display.scroll("C");
aziobro 0:91cacb081de7 12
aziobro 0:91cacb081de7 13 connected = 1;
aziobro 0:91cacb081de7 14
aziobro 0:91cacb081de7 15 // my client will send ASCII strings terminated with the colon character
aziobro 0:91cacb081de7 16 ManagedString eom(":");
aziobro 0:91cacb081de7 17
aziobro 0:91cacb081de7 18 while (connected == 1) {
aziobro 0:91cacb081de7 19 ManagedString msg = uart->readUntil(eom);
aziobro 0:91cacb081de7 20 uBit.display.scroll(msg);
aziobro 0:91cacb081de7 21 }
aziobro 0:91cacb081de7 22
aziobro 0:91cacb081de7 23 }
aziobro 0:91cacb081de7 24
aziobro 0:91cacb081de7 25 void onDisconnected(MicroBitEvent e)
aziobro 0:91cacb081de7 26 {
aziobro 0:91cacb081de7 27 uBit.display.scroll("D");
aziobro 0:91cacb081de7 28 connected = 0;
aziobro 0:91cacb081de7 29 }
aziobro 0:91cacb081de7 30
aziobro 0:91cacb081de7 31 void onButtonA(MicroBitEvent e)
aziobro 0:91cacb081de7 32 {
aziobro 0:91cacb081de7 33 if (connected == 0) {
aziobro 0:91cacb081de7 34 uBit.display.scroll("NC");
aziobro 0:91cacb081de7 35 return;
aziobro 0:91cacb081de7 36 }
aziobro 0:91cacb081de7 37 uart->send("YES");
aziobro 0:91cacb081de7 38 uBit.display.scroll("YES");
aziobro 0:91cacb081de7 39 }
aziobro 0:91cacb081de7 40
aziobro 0:91cacb081de7 41 void onButtonB(MicroBitEvent e)
aziobro 0:91cacb081de7 42 {
aziobro 0:91cacb081de7 43 if (connected == 0) {
aziobro 0:91cacb081de7 44 uBit.display.scroll("NC");
aziobro 0:91cacb081de7 45 return;
aziobro 0:91cacb081de7 46 }
aziobro 0:91cacb081de7 47 uart->send("NO");
aziobro 0:91cacb081de7 48 uBit.display.scroll("NO");
aziobro 0:91cacb081de7 49 }
aziobro 0:91cacb081de7 50
aziobro 0:91cacb081de7 51 void onButtonAB(MicroBitEvent e)
aziobro 0:91cacb081de7 52 {
aziobro 0:91cacb081de7 53 if (connected == 0) {
aziobro 0:91cacb081de7 54 uBit.display.scroll("NC");
aziobro 0:91cacb081de7 55 return;
aziobro 0:91cacb081de7 56 }
aziobro 0:91cacb081de7 57 uart->send("GOT IT!!");
aziobro 0:91cacb081de7 58 uBit.display.scroll("GOT IT!!");
aziobro 0:91cacb081de7 59 }
aziobro 0:91cacb081de7 60
aziobro 0:91cacb081de7 61 /*
aziobro 0:91cacb081de7 62 Recommend disabling the DFU and Event services in MicroBitConfig.h since they are not needed here:
aziobro 0:91cacb081de7 63
aziobro 0:91cacb081de7 64 #ifndef MICROBIT_BLE_DFU_SERVICE
aziobro 0:91cacb081de7 65 #define MICROBIT_BLE_DFU_SERVICE 0
aziobro 0:91cacb081de7 66 #endif
aziobro 0:91cacb081de7 67
aziobro 0:91cacb081de7 68 #ifndef MICROBIT_BLE_EVENT_SERVICE
aziobro 0:91cacb081de7 69 #define MICROBIT_BLE_EVENT_SERVICE 0
aziobro 0:91cacb081de7 70 #endif
aziobro 0:91cacb081de7 71 */
aziobro 0:91cacb081de7 72
aziobro 0:91cacb081de7 73 int main()
aziobro 0:91cacb081de7 74 {
aziobro 0:91cacb081de7 75 // Initialise the micro:bit runtime.
aziobro 0:91cacb081de7 76 uBit.init();
aziobro 0:91cacb081de7 77
aziobro 0:91cacb081de7 78 // listen for Bluetooth connection state changes
aziobro 0:91cacb081de7 79 uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_CONNECTED, onConnected);
aziobro 0:91cacb081de7 80 uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, onDisconnected);
aziobro 0:91cacb081de7 81
aziobro 0:91cacb081de7 82 // listen for user button interactions
aziobro 0:91cacb081de7 83 uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_CLICK, onButtonA);
aziobro 0:91cacb081de7 84 uBit.messageBus.listen(MICROBIT_ID_BUTTON_B, MICROBIT_BUTTON_EVT_CLICK, onButtonB);
aziobro 0:91cacb081de7 85 uBit.messageBus.listen(MICROBIT_ID_BUTTON_AB, MICROBIT_BUTTON_EVT_CLICK, onButtonAB);
aziobro 0:91cacb081de7 86
aziobro 0:91cacb081de7 87
aziobro 0:91cacb081de7 88 // Note GATT table size increased from default in MicroBitConfig.h
aziobro 0:91cacb081de7 89 // #define MICROBIT_SD_GATT_TABLE_SIZE 0x500
aziobro 0:91cacb081de7 90 uart = new MicroBitUARTService(*uBit.ble, 32, 32);
aziobro 0:91cacb081de7 91 uBit.display.scroll("AVM");
aziobro 0:91cacb081de7 92
aziobro 0:91cacb081de7 93 // If main exits, there may still be other fibers running or registered event handlers etc.
aziobro 0:91cacb081de7 94 // Simply release this fiber, which will mean we enter the scheduler. Worse case, we then
aziobro 0:91cacb081de7 95 // sit in the idle task forever, in a power efficient sleep.
aziobro 0:91cacb081de7 96 release_fiber();
aziobro 0:91cacb081de7 97 }