ble nano hid over gatt
Dependencies: BLE_API mbed-dev nRF51822
Diff: HIDController_BLE.cpp
- Revision:
- 27:7370b8994603
- Parent:
- 26:78ee13f69ec3
- Child:
- 28:1f843a3daab0
--- a/HIDController_BLE.cpp Mon Aug 22 22:50:25 2016 +0000 +++ b/HIDController_BLE.cpp Mon Aug 22 23:14:42 2016 +0000 @@ -31,7 +31,9 @@ static DFUService* dfuService; static BLEProtocol::Address_t peerAddress; -static volatile bool connected = false; + + +static volatile Status_t controllerStatus; static void updateBatteryLevel() { if (!batteryService) return; @@ -85,17 +87,18 @@ peerAddress.type = params->peerAddrType; memcpy(peerAddress.address, params->peerAddr, Gap::ADDR_LEN); + controllerStatus = CONNECTING; } static void onDisconnect(const Gap::DisconnectionCallbackParams_t *params) { printf("onDisconnect\r\n"); - connected = false; + controllerStatus = DISCONNECTED; BLE::Instance(BLE::DEFAULT_INSTANCE).gap().startAdvertising(); } static void onTimeout(const Gap::TimeoutSource_t source) { printf("onTimeout\r\n"); - connected = false; + controllerStatus = DISCONNECTED; BLE::Instance(BLE::DEFAULT_INSTANCE).gap().startAdvertising(); } @@ -122,7 +125,7 @@ // BLE::Instance(BLE::DEFAULT_INSTANCE).gap().setAdvertisingPolicyMode(Gap::ADV_POLICY_FILTER_SCAN_REQS); // BLE::Instance(BLE::DEFAULT_INSTANCE).gap().setAdvertisingPolicyMode(Gap::ADV_POLICY_FILTER_CONN_REQS); BLE::Instance(BLE::DEFAULT_INSTANCE).gap().setAdvertisingPolicyMode(Gap::ADV_POLICY_FILTER_ALL_REQS); - connected = true; + controllerStatus = CONNECTED; } else { printf("Security failed %d\r\n", status); } @@ -137,7 +140,7 @@ ble_error_t error; BLE &ble = params->ble; - connected = false; + controllerStatus = DISCONNECTED; /**< Minimum Connection Interval in 1.25 ms units, see BLE_GAP_CP_LIMITS.*/ uint16_t minConnectionInterval = Gap::MSEC_TO_GAP_DURATION_UNITS(24); @@ -252,7 +255,11 @@ } bool HIDController::connected() { - return connected; + return controllerStatus == CONNECTED; +} + +Status_t HIDController::status() { + return controllerStatus; } void HIDController::init() {