prova

Fork of BLE_API by Bluetooth Low Energy

Revision:
1135:22aada733dbd
Parent:
1131:692ddf04fc42
--- a/source/DiscoveredCharacteristic.cpp	Wed Apr 06 19:13:52 2016 +0100
+++ b/source/DiscoveredCharacteristic.cpp	Wed Apr 06 19:13:54 2016 +0100
@@ -31,29 +31,29 @@
     return gattc->read(connHandle, valueHandle, offset);
 }
 
-struct OneShotReadCallback { 
-    static void launch(GattClient* client, Gap::Handle_t connHandle, 
-                       GattAttribute::Handle_t handle, const GattClient::ReadCallback_t& cb) { 
+struct OneShotReadCallback {
+    static void launch(GattClient* client, Gap::Handle_t connHandle,
+                       GattAttribute::Handle_t handle, const GattClient::ReadCallback_t& cb) {
         OneShotReadCallback* oneShot = new OneShotReadCallback(client, connHandle, handle, cb);
         oneShot->attach();
         // delete will be made when this callback is called
     }
 
 private:
-    OneShotReadCallback(GattClient* client, Gap::Handle_t connHandle, 
-                        GattAttribute::Handle_t handle, const GattClient::ReadCallback_t& cb) : 
+    OneShotReadCallback(GattClient* client, Gap::Handle_t connHandle,
+                        GattAttribute::Handle_t handle, const GattClient::ReadCallback_t& cb) :
         _client(client),
         _connHandle(connHandle),
-        _handle(handle), 
-        _callback(cb) { } 
+        _handle(handle),
+        _callback(cb) { }
 
-    void attach() { 
+    void attach() {
         _client->onDataRead(makeFunctionPointer(this, &OneShotReadCallback::call));
     }
 
     void call(const GattReadCallbackParams* params) {
         // verifiy that it is the right characteristic on the right connection
-        if (params->connHandle == _connHandle && params->handle == _handle) { 
+        if (params->connHandle == _connHandle && params->handle == _handle) {
             _callback(params);
             _client->onDataRead().detach(makeFunctionPointer(this, &OneShotReadCallback::call));
             delete this;
@@ -68,7 +68,7 @@
 
 ble_error_t DiscoveredCharacteristic::read(uint16_t offset, const GattClient::ReadCallback_t& onRead) const {
     ble_error_t error = read(offset);
-    if (error) { 
+    if (error) {
         return error;
     }
 
@@ -105,29 +105,29 @@
     return gattc->write(GattClient::GATT_OP_WRITE_CMD, connHandle, valueHandle, length, value);
 }
 
-struct OneShotWriteCallback { 
-    static void launch(GattClient* client, Gap::Handle_t connHandle, 
-                       GattAttribute::Handle_t handle, const GattClient::WriteCallback_t& cb) { 
+struct OneShotWriteCallback {
+    static void launch(GattClient* client, Gap::Handle_t connHandle,
+                       GattAttribute::Handle_t handle, const GattClient::WriteCallback_t& cb) {
         OneShotWriteCallback* oneShot = new OneShotWriteCallback(client, connHandle, handle, cb);
         oneShot->attach();
         // delete will be made when this callback is called
     }
 
 private:
-    OneShotWriteCallback(GattClient* client, Gap::Handle_t connHandle, 
-                        GattAttribute::Handle_t handle, const GattClient::WriteCallback_t& cb) : 
+    OneShotWriteCallback(GattClient* client, Gap::Handle_t connHandle,
+                        GattAttribute::Handle_t handle, const GattClient::WriteCallback_t& cb) :
         _client(client),
         _connHandle(connHandle),
-        _handle(handle), 
-        _callback(cb) { } 
+        _handle(handle),
+        _callback(cb) { }
 
-    void attach() { 
+    void attach() {
         _client->onDataWritten(makeFunctionPointer(this, &OneShotWriteCallback::call));
     }
 
     void call(const GattWriteCallbackParams* params) {
         // verifiy that it is the right characteristic on the right connection
-        if (params->connHandle == _connHandle && params->handle == _handle) { 
+        if (params->connHandle == _connHandle && params->handle == _handle) {
             _callback(params);
             _client->onDataWritten().detach(makeFunctionPointer(this, &OneShotWriteCallback::call));
             delete this;
@@ -142,7 +142,7 @@
 
 ble_error_t DiscoveredCharacteristic::write(uint16_t length, const uint8_t *value, const GattClient::WriteCallback_t& onRead) const {
     ble_error_t error = write(length, value);
-    if (error) { 
+    if (error) {
         return error;
     }
 
@@ -151,8 +151,17 @@
     return error;
 }
 
-ble_error_t
-DiscoveredCharacteristic::discoverDescriptors(DescriptorCallback_t callback, const UUID &matchingUUID) const
-{
-    return BLE_ERROR_NOT_IMPLEMENTED; /* TODO: this needs to be filled in. */
+ble_error_t DiscoveredCharacteristic::discoverDescriptors(
+    const CharacteristicDescriptorDiscovery::DiscoveryCallback_t& onCharacteristicDiscovered, 
+    const CharacteristicDescriptorDiscovery::TerminationCallback_t& onTermination) const {
+
+    if(!gattc) {
+        return BLE_ERROR_INVALID_STATE;
+    }
+
+    ble_error_t err = gattc->discoverCharacteristicDescriptors(
+        *this, onCharacteristicDiscovered, onTermination
+    );
+
+    return err;
 }
\ No newline at end of file