BLE

Dependencies:   ADT7410 BLE_API mbed nRF51822

See https://developer.mbed.org/users/yasuyuki/notebook/BLE/

Files at this revision

API Documentation at this revision

Comitter:
yasuyuki
Date:
Wed Sep 09 17:26:34 2015 +0000
Parent:
1:6458709fb459
Commit message:
update

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	Fri Jul 10 15:19:15 2015 +0000
+++ b/BLE_API.lib	Wed Sep 09 17:26:34 2015 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#9c2edf20ea56
+http://developer.mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#8cea5d9c12c0
--- a/main.cpp	Fri Jul 10 15:19:15 2015 +0000
+++ b/main.cpp	Wed Sep 09 17:26:34 2015 +0000
@@ -2,8 +2,9 @@
 // BLE demo for mbed_HRM1017
 //
 // successful combination
-// mbed=rev.97/BLE_API=rev.341/nRF51822=rev.111
-// mbed=rev.101/BLE_API=rev.738/nRF51822=rev.385
+//#define REV1 // mbed=rev.97/BLE_API=rev.341/nRF51822=rev.111
+//#define REV2 // mbed=rev.101/BLE_API=rev.738/nRF51822=rev.385
+#define REV3 // mbed=rev.106/BLE_API=rev.798/nRF51822=rev.428
 //
 // (C)Copyright 2015 All rights reserved by Y.Onodera
 // http://einstlab.web.fc2.com
@@ -11,11 +12,24 @@
 #if defined(TARGET_HRM1017)
 #include "mbed.h"
 #include "ADT7410.h"
-//#include "BLEDevice.h"            // BLEライブラリのヘッダ BLE_API=rev.341
-#include "BLE.h"                    // BLEライブラリのヘッダ BLE_API=rev.738
-#include "BatteryService.h"         // BatteryServiceのヘッダ
-#include "HeartRateService.h"       // HeartRateServiceのヘッダ
-#include "HealthThermometerService.h" // HealthThermometerServiceのヘッダ
+#ifdef REV1
+#include "BLEDevice.h"                  // BLEライブラリのヘッダ BLE_API=rev.341
+#include "BatteryService.h"             // BatteryServiceのヘッダ
+#include "HeartRateService.h"           // HeartRateServiceのヘッダ
+#include "HealthThermometerService.h"   // HealthThermometerServiceのヘッダ
+#endif
+#ifdef REV2
+#include "BLE.h"                        // BLEライブラリのヘッダ BLE_API=rev.738
+#include "BatteryService.h"             // BatteryServiceのヘッダ
+#include "HeartRateService.h"           // HeartRateServiceのヘッダ
+#include "HealthThermometerService.h"   // HealthThermometerServiceのヘッダ
+#endif
+#ifdef REV3
+#include "ble/BLE.h"                                // BLEライブラリのヘッダ BLE_API=rev.798
+#include "ble/services/BatteryService.h"            // BatteryServiceのヘッダ
+#include "ble/services/HeartRateService.h"          // HeartRateServiceのヘッダ
+#include "ble/services/HealthThermometerService.h"  // HealthThermometerServiceのヘッダ
+#endif
 
 #define THERMO
 //#define HEART
@@ -54,13 +68,12 @@
 
 
 // BLE接続処理
-//#define OLD
-#ifdef OLD
+#ifdef REV1
 // BLE_API=rev.341
 void connectionCallback(
 Gap::Handle_t handle, 
 Gap::addr_type_t peerAddrType, const Gap::address_t peerAddr, 
-const Gap::ConnectionParams_t *params) 
+const Gap::ConnectionParams_t *params)
 #else
 // BLE_API=rev.738
 void connectionCallback(
@@ -68,7 +81,11 @@
 #endif
 {
     led2 = 1;
+#ifdef REV3
+    ble.gap().stopAdvertising();
+#else
     ble.stopAdvertising();
+#endif
 }
 
 
@@ -76,12 +93,12 @@
 void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason) 
 {
     led2 = 0;
-    ble.startAdvertising();
+    ble.gap().startAdvertising();
 }
 
 
 // BLE接続タイムアウト処理
-#ifdef OLD
+#ifdef REV1
 // BLE_API=rev.341
 void connectTimeoutCallback(void)
 {
@@ -108,42 +125,84 @@
     //   LE_LIMITED_DISCOVERABLE = 期間限定で検出可能デバイス
     //   LE_GENERAL_DISCOVERABLE = 検出可能デバイス
     //   BREDR_NOT_SUPPORTED = Bluetooth Classicは未サポート, BLEオンリー
+#ifdef REV3
+    ble.gap().accumulateAdvertisingPayload(
+        GapAdvertisingData::LE_GENERAL_DISCOVERABLE | GapAdvertisingData::BREDR_NOT_SUPPORTED);
+#else
     ble.accumulateAdvertisingPayload(
         GapAdvertisingData::LE_GENERAL_DISCOVERABLE | GapAdvertisingData::BREDR_NOT_SUPPORTED);
+#endif
     // UUIDリストを設定
+#ifdef REV3
+    ble.gap().accumulateAdvertisingPayload(
+        GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS,
+        (uint8_t *)uuid16_list,
+        sizeof(uuid16_list));
+#else
     ble.accumulateAdvertisingPayload(
         GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS,
         (uint8_t *)uuid16_list,
         sizeof(uuid16_list));
+#endif
     // デバイス名を設定(for GAP), default Device Name="nRF5x"
 //    ble.setDeviceName(DEVICE_NAME);
     // デバイス名を設定(for Advertising)
+#ifdef REV3
+    ble.gap().accumulateAdvertisingPayload(
+        GapAdvertisingData::COMPLETE_LOCAL_NAME,
+        (const uint8_t *)DEVICE_NAME, 
+//        strlen(DEVICE_NAME));
+      sizeof(DEVICE_NAME));
+#else
     ble.accumulateAdvertisingPayload(
         GapAdvertisingData::COMPLETE_LOCAL_NAME,
         (const uint8_t *)DEVICE_NAME, 
 //        strlen(DEVICE_NAME));
       sizeof(DEVICE_NAME));
+#endif
 
     // ADV_CONNECTABLE_UNDIRECTED = 接続可能デバイスに設定
+#ifdef REV3
+    ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
+#else
     ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
+#endif
 
     // アドバタイジング間隔の設定=100ms, 0.625ms単位
+#ifdef REV3
+    ble.gap().setAdvertisingInterval(160);  // 0.625ms * 160 = 100ms
+//    ble.gap().setAdvertisingInterval(1600);   // 0.625ms * 1600 = 1000ms
+#else
     ble.setAdvertisingInterval(160);  // 0.625ms * 160 = 100ms
 //    ble.setAdvertisingInterval(1600);   // 0.625ms * 1600 = 1000ms
+#endif
 
     // Appearance
 #ifdef THERMO
+#ifdef REV3
+      ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::THERMOMETER_EAR);
+#else
       ble.accumulateAdvertisingPayload(GapAdvertisingData::THERMOMETER_EAR);
 #endif
+#endif
 #ifdef HEART
+#ifdef REV3
+//    ble.gap().setAppearance(ENERIC_HEART_RATE_SENSOR);
+      ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::GENERIC_HEART_RATE_SENSOR);
+#else
 //    ble.setAppearance(ENERIC_HEART_RATE_SENSOR);
       ble.accumulateAdvertisingPayload(GapAdvertisingData::GENERIC_HEART_RATE_SENSOR);
 #endif
+#endif
     // アドバタイジングタイムアウト=180sec(デフォルトは0でタイムアウトなし)
 //    ble.setAdvertisingTimeout(180);
+
     // アドバタイジング開始
+#ifdef REV3
+    ble.gap().startAdvertising();
+#else
     ble.startAdvertising();
-
+#endif
 }
 
 
@@ -162,9 +221,15 @@
     tick.attach(&tickerCallback, 1);
 
     // BLEのイベント関数を設定
+#ifdef REV3
+    ble.gap().onConnection(connectionCallback);
+    ble.gap().onDisconnection(disconnectionCallback);
+    ble.gap().onTimeout(connectTimeoutCallback);
+#else
     ble.onConnection(connectionCallback);
     ble.onDisconnection(disconnectionCallback);
     ble.onTimeout(connectTimeoutCallback);
+#endif
 
     // BatteryServiceのインスタンス生成=サービスを登録
     uint8_t batt=0;
--- a/mbed.bld	Fri Jul 10 15:19:15 2015 +0000
+++ b/mbed.bld	Wed Sep 09 17:26:34 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/7cff1c4259d7
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/ba1f97679dad
\ No newline at end of file
--- a/nRF51822.lib	Fri Jul 10 15:19:15 2015 +0000
+++ b/nRF51822.lib	Wed Sep 09 17:26:34 2015 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#6c82f06746bb
+http://developer.mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#ca9c9c2cfc6a