![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
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