ble nano hid over gatt

Dependencies:   BLE_API mbed-dev nRF51822

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() {