ANDREW ZIOBRO
/
microbit_datacollection2
Datacollection on microbit with bluetooth uart transfer
main.cpp@0:91cacb081de7, 2018-02-19 (annotated)
- Committer:
- aziobro
- Date:
- Mon Feb 19 23:29:39 2018 +0000
- Revision:
- 0:91cacb081de7
First Test
Who changed what in which revision?
User | Revision | Line number | New 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 | } |