Andrew Bates / Mbed OS pdiot-ble-notify-array

Fork of mbed-os-example-ble-Button by mbed-os-examples

Revision:
46:dfdf7d1ebde2
Parent:
0:3fe9d5124576
--- a/source/ButtonService.h	Fri Sep 29 17:15:25 2017 +0100
+++ b/source/ButtonService.h	Tue Oct 03 08:46:39 2017 +0000
@@ -23,7 +23,7 @@
     const static uint16_t BUTTON_STATE_CHARACTERISTIC_UUID = 0xA001;
 
     ButtonService(BLE &_ble, bool buttonPressedInitial) :
-        ble(_ble), buttonState(BUTTON_STATE_CHARACTERISTIC_UUID, &buttonPressedInitial, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY)
+        ble(_ble), buttonState(BUTTON_STATE_CHARACTERISTIC_UUID, (uint8_t []){0,0}, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY)
     {
         GattCharacteristic *charTable[] = {&buttonState};
         GattService         buttonService(ButtonService::BUTTON_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *));
@@ -31,12 +31,42 @@
     }
 
     void updateButtonState(bool newState) {
-        ble.gattServer().write(buttonState.getValueHandle(), (uint8_t *)&newState, sizeof(bool));
+        uint8_t v[12] = {0};
+        if (newState) {
+            v[0] = 0;
+            v[1] = 1;
+            v[2] = 2;
+            v[3] = 3;
+            v[4] = 4;
+            v[5] = 5;
+            v[6] = 0;
+            v[7] = 1;
+            v[8] = 2;
+            v[9] = 3;
+            v[10] = 4;
+            v[11] = 5;
+            }
+        else {
+            v[0] = 6;
+            v[1] = 7;
+            v[2] = 8;
+            v[3] = 9;
+            v[4] = 10;
+            v[5] = 11;
+            v[6] = 6;
+            v[7] = 7;
+            v[8] = 8;
+            v[9] = 9;
+            v[10] = 10;
+            v[11] = 11;
+            }
+        //ble.gattServer().write(buttonState.getValueHandle(), (uint8_t *)v, sizeof(v));
+        ble.updateCharacteristicValue(buttonState.getValueHandle(), (uint8_t *)v ,sizeof(v));
     }
 
 private:
     BLE                              &ble;
-    ReadOnlyGattCharacteristic<bool>  buttonState;
+    ReadOnlyArrayGattCharacteristic<uint8_t, sizeof(uint8_t[12])>  buttonState;
 };
 
 #endif /* #ifndef __BLE_BUTTON_SERVICE_H__ */