Bluetooth Low Energy template with prewritten functions and callbacks for BLE events.
aconnoBLE/aconnoBLE.cpp@0:dbe0ce913311, 2018-06-22 (annotated)
- Committer:
- jurica238814
- Date:
- Fri Jun 22 15:05:42 2018 +0200
- Revision:
- 0:dbe0ce913311
init commit
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| jurica238814 | 0:dbe0ce913311 | 1 | /* |
| jurica238814 | 0:dbe0ce913311 | 2 | * Made by Jurica @ aconno |
| jurica238814 | 0:dbe0ce913311 | 3 | * All rights reserved |
| jurica238814 | 0:dbe0ce913311 | 4 | * |
| jurica238814 | 0:dbe0ce913311 | 5 | */ |
| jurica238814 | 0:dbe0ce913311 | 6 | |
| jurica238814 | 0:dbe0ce913311 | 7 | #include "aconnoBLE.h" |
| jurica238814 | 0:dbe0ce913311 | 8 | #include "BLEConfig.h" |
| jurica238814 | 0:dbe0ce913311 | 9 | #include "ble/BLE.h" |
| jurica238814 | 0:dbe0ce913311 | 10 | #include "GapAdvertisingData.h" |
| jurica238814 | 0:dbe0ce913311 | 11 | #include "BLEData.h" |
| jurica238814 | 0:dbe0ce913311 | 12 | #include "service.h" |
| jurica238814 | 0:dbe0ce913311 | 13 | |
| jurica238814 | 0:dbe0ce913311 | 14 | extern advertisingFormat manufacturerSpecificData; |
| jurica238814 | 0:dbe0ce913311 | 15 | static EventQueue eventQueue(EVENT_COUNT * EVENTS_EVENT_SIZE); |
| jurica238814 | 0:dbe0ce913311 | 16 | Service *service; |
| jurica238814 | 0:dbe0ce913311 | 17 | |
| jurica238814 | 0:dbe0ce913311 | 18 | |
| jurica238814 | 0:dbe0ce913311 | 19 | void onBleInitError(BLE &ble, ble_error_t error) |
| jurica238814 | 0:dbe0ce913311 | 20 | { |
| jurica238814 | 0:dbe0ce913311 | 21 | /* Avoid compiler warnings */ |
| jurica238814 | 0:dbe0ce913311 | 22 | (void) ble; |
| jurica238814 | 0:dbe0ce913311 | 23 | (void) error; |
| jurica238814 | 0:dbe0ce913311 | 24 | /* Initialization error handling should go here */ |
| jurica238814 | 0:dbe0ce913311 | 25 | } |
| jurica238814 | 0:dbe0ce913311 | 26 | |
| jurica238814 | 0:dbe0ce913311 | 27 | void scheduleBleEventsProcessing(BLE::OnEventsToProcessCallbackContext* context) |
| jurica238814 | 0:dbe0ce913311 | 28 | { |
| jurica238814 | 0:dbe0ce913311 | 29 | BLE &ble = context->ble; |
| jurica238814 | 0:dbe0ce913311 | 30 | eventQueue.call(Callback<void()>(&ble, &BLE::processEvents)); |
| jurica238814 | 0:dbe0ce913311 | 31 | } |
| jurica238814 | 0:dbe0ce913311 | 32 | |
| jurica238814 | 0:dbe0ce913311 | 33 | EventQueue *getBLEEventQueue(void) |
| jurica238814 | 0:dbe0ce913311 | 34 | { |
| jurica238814 | 0:dbe0ce913311 | 35 | return &eventQueue; |
| jurica238814 | 0:dbe0ce913311 | 36 | } |
| jurica238814 | 0:dbe0ce913311 | 37 | |
| jurica238814 | 0:dbe0ce913311 | 38 | void bleInitComplete(BLE::InitializationCompleteCallbackContext *params){ |
| jurica238814 | 0:dbe0ce913311 | 39 | BLE &ble = params->ble; |
| jurica238814 | 0:dbe0ce913311 | 40 | |
| jurica238814 | 0:dbe0ce913311 | 41 | /* setup NTP service and characteristic */ |
| jurica238814 | 0:dbe0ce913311 | 42 | service = new Service(ble); |
| jurica238814 | 0:dbe0ce913311 | 43 | ble.gap().onDisconnection(disconnectionCallback); |
| jurica238814 | 0:dbe0ce913311 | 44 | ble.gap().onConnection(onConnectionCallback); |
| jurica238814 | 0:dbe0ce913311 | 45 | ble.gattServer().onDataWritten(onDataCallback); |
| jurica238814 | 0:dbe0ce913311 | 46 | |
| jurica238814 | 0:dbe0ce913311 | 47 | /* setup event handling */ |
| jurica238814 | 0:dbe0ce913311 | 48 | ble.onEventsToProcess(scheduleBleEventsProcessing); |
| jurica238814 | 0:dbe0ce913311 | 49 | |
| jurica238814 | 0:dbe0ce913311 | 50 | /* setup advertising */ |
| jurica238814 | 0:dbe0ce913311 | 51 | ble.gap().accumulateAdvertisingPayload( |
| jurica238814 | 0:dbe0ce913311 | 52 | GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA, |
| jurica238814 | 0:dbe0ce913311 | 53 | (uint8_t *)&manufacturerSpecificData, sizeof(advertisingFormat)); |
| jurica238814 | 0:dbe0ce913311 | 54 | ble.gap().setAdvertisingInterval(A_ADV_INTERVAL_MS); |
| jurica238814 | 0:dbe0ce913311 | 55 | ble.gap().startAdvertising(); |
| jurica238814 | 0:dbe0ce913311 | 56 | } |
| jurica238814 | 0:dbe0ce913311 | 57 | |
| jurica238814 | 0:dbe0ce913311 | 58 | void onConnectionCallback(const Gap::ConnectionCallbackParams_t *params){ |
| jurica238814 | 0:dbe0ce913311 | 59 | //printf("Device is connected.\n"); |
| jurica238814 | 0:dbe0ce913311 | 60 | } |
| jurica238814 | 0:dbe0ce913311 | 61 | |
| jurica238814 | 0:dbe0ce913311 | 62 | void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params){ |
| jurica238814 | 0:dbe0ce913311 | 63 | //printf("Device is disconnected.\n"); |
| jurica238814 | 0:dbe0ce913311 | 64 | BLE::Instance().gap().startAdvertising(); |
| jurica238814 | 0:dbe0ce913311 | 65 | } |
| jurica238814 | 0:dbe0ce913311 | 66 | |
| jurica238814 | 0:dbe0ce913311 | 67 | void onDataCallback(const GattWriteCallbackParams *params){ |
| jurica238814 | 0:dbe0ce913311 | 68 | if(params->handle == service->getTimeCharacteristicHandle()){ |
| jurica238814 | 0:dbe0ce913311 | 69 | } |
| jurica238814 | 0:dbe0ce913311 | 70 | } |