ble nano hid over gatt

Dependencies:   BLE_API mbed-dev nRF51822

Revision:
20:d8840ac38434
Parent:
19:cd7f2fe05ae4
Child:
21:d801c32231b0
--- a/HIDController_BLE.cpp	Mon Aug 22 13:08:40 2016 +0000
+++ b/HIDController_BLE.cpp	Mon Aug 22 14:37:16 2016 +0000
@@ -31,6 +31,7 @@
 static DFUService* dfuService;
 
 static BLEProtocol::Address_t peerAddress;
+static volatile bool connected = false;
 
 static void updateBatteryLevel() {
 	if (!batteryService) return;
@@ -83,11 +84,13 @@
 
 static void onDisconnect(const Gap::DisconnectionCallbackParams_t *params) {
 	printf("onDisconnect\r\n");
+	connected = false;
 	BLE::Instance(BLE::DEFAULT_INSTANCE).gap().startAdvertising();
 }
 
 static void onTimeout(const Gap::TimeoutSource_t source) {
 	printf("onTimeout\r\n");
+	connected = false;
 	BLE::Instance(BLE::DEFAULT_INSTANCE).gap().startAdvertising();
 }
 
@@ -115,6 +118,7 @@
 		// 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;
 	} else {
 		printf("Security failed %d\r\n", status);
 	}
@@ -238,6 +242,10 @@
 	return;
 }
 
+bool HIDController::connected() {
+	return connected;
+}
+
 void HIDController::init() {
 	// https://github.com/jpbrucker/BLE_HID/blob/master/examples/examples_common.cpp
 	printf("ble.init\r\n");
@@ -268,6 +276,7 @@
 }
 
 void HIDController::queueCurrentReportData() {
+	if (!connected) return;
 	if (keyboardService) {
 		keyboardService->queueCurrentReportData();
 	}