BLE
Dependencies: ADT7410 BLE_API mbed nRF51822
See https://developer.mbed.org/users/yasuyuki/notebook/BLE/
Revision 2:d5bdd080d451, committed 2015-09-09
- Comitter:
- yasuyuki
- Date:
- Wed Sep 09 17:26:34 2015 +0000
- Parent:
- 1:6458709fb459
- Commit message:
- update
Changed in this revision
--- 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