Simple example to demonstrate custom made BLE service and characteristics.

Fork of BLE_GATT_Example by Bluetooth Low Energy

Files at this revision

API Documentation at this revision

Comitter:
andresag
Date:
Tue Oct 20 13:41:38 2015 +0000
Parent:
17:32973972d2dd
Child:
20:fcc752d401ec
Commit message:
Updated BLE and mbed dependencies, also modified demo code to comply with changes to the API.

Changed in this revision

BLE_API.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
nRF51822.lib Show annotated file Show diff for this revision Revisions of this file
--- a/BLE_API.lib	Thu Apr 02 18:30:24 2015 +0000
+++ b/BLE_API.lib	Tue Oct 20 13:41:38 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#8c645f5694b2
+http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#d494ad3e87bd
--- a/main.cpp	Thu Apr 02 18:30:24 2015 +0000
+++ b/main.cpp	Tue Oct 20 13:41:38 2015 +0000
@@ -1,8 +1,8 @@
 #include "mbed.h"
-#include "BLEDevice.h"
+#include "ble/BLE.h"
 
-BLEDevice ble;
-DigitalOut led(LED1);
+BLE ble;
+DigitalOut led(LED1, 1);
 uint16_t customServiceUUID  = 0xA000;
 uint16_t readCharUUID       = 0xA001;
 uint16_t writeCharUUID      = 0xA002;
@@ -24,61 +24,62 @@
 
 /*
  *  Restart advertising when phone app disconnects
-*/ 
-void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason)
+*/
+void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *)
 {
-    ble.startAdvertising(); 
+    ble.gap().startAdvertising();
 }
 
-/* 
+/*
  *  handle writes to writeCharacteristic
 */
-void writeCharCallback(const GattCharacteristicWriteCBParams *params)
+void writeCharCallback(const GattWriteCallbackParams *params)
 {
     // check to see what characteristic was written, by handle
-    if(params->charHandle == writeChar.getValueHandle()) {
+    if(params->handle == writeChar.getValueHandle()) {
         // toggle LED if only 1 byte is written
         if(params->len == 1) {
             led = params->data[0];
-            (params->data[0] == 0x00) ? printf("\n\rled on ") : printf("\n\rled off "); // print led toggle
+            (params->data[0] == 0x00) ? printf("led on\n\r") : printf("led off\n\r"); // print led toggle
         }
         // print the data if more than 1 byte is written
         else {
-            printf("\n\r Data received: length = %d, data = 0x",params->len); 
+            printf("Data received: length = %d, data = 0x",params->len);
             for(int x=0; x < params->len; x++) {
-                printf("%x",params->data[x]);
+                printf("%x", params->data[x]);
             }
+            printf("\n\r");
         }
         // update the readChar with the value of writeChar
-        ble.updateCharacteristicValue(readChar.getValueHandle(),params->data,params->len);
+        ble.updateCharacteristicValue(readChar.getValueHandle(), params->data,params->len);
     }
 }
 
 /*
  *  main loop
-*/ 
+*/
 int
 main(void)
 {
     /* initialize stuff */
     printf("\n\r********* Starting Main Loop *********\n\r");
     ble.init();
-    ble.onDisconnection(disconnectionCallback);
-    ble.onDataWritten(writeCharCallback);
+    ble.gap().onDisconnection(disconnectionCallback);
+    ble.gattServer().onDataWritten(writeCharCallback);
 
     /* setup advertising */
-    ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); // BLE only, no classic BT
-    ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); // advertising type
-    ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); // add name
-    ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list)); // UUID's broadcast in advertising packet
-    ble.setAdvertisingInterval(100); // 100ms. 
+    ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); // BLE only, no classic BT
+    ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); // advertising type
+    ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); // add name
+    ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list)); // UUID's broadcast in advertising packet
+    ble.gap().setAdvertisingInterval(100); // 100ms.
 
     // add our custom service
     ble.addService(customService);
 
     // start advertising
-    ble.startAdvertising(); 
-    
+    ble.gap().startAdvertising();
+
     // infinite loop waiting for BLE interrupt events
     while (true) {
         ble.waitForEvent(); //Save power
--- a/mbed.bld	Thu Apr 02 18:30:24 2015 +0000
+++ b/mbed.bld	Tue Oct 20 13:41:38 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/487b796308b0
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/34e6b704fe68
\ No newline at end of file
--- a/nRF51822.lib	Thu Apr 02 18:30:24 2015 +0000
+++ b/nRF51822.lib	Tue Oct 20 13:41:38 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#bdc690669431
+http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#088f5738bf18