Bluetooth Low Energy template with prewritten functions and callbacks for BLE events.

Committer:
jurica238814
Date:
Fri Jun 22 15:05:42 2018 +0200
Revision:
0:dbe0ce913311
init commit

Who changed what in which revision?

UserRevisionLine numberNew 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 }