]> granicus.if.org Git - esp-idf/commitdiff
esp_prov : Catch DBus exception when reading/writing to BLE GATT characteristic
authorAnurag Kar <anurag.kar@espressif.com>
Thu, 14 Mar 2019 11:58:26 +0000 (17:28 +0530)
committerAnurag Kar <anurag.kar@espressif.com>
Thu, 14 Mar 2019 13:03:34 +0000 (18:33 +0530)
This is useful in the context of provisioning when server initiates disconnection if secure session establishment fails.

tools/esp_prov/transport/ble_cli.py

index b6ea225c66664dc6ab8f323bbfb7b95450bac31a..04d2921aca711a11669b67bae9c85ddaba91f773 100644 (file)
@@ -162,8 +162,17 @@ class BLE_Bluez_Client:
             path = self.characteristics[characteristic_uuid]
         except KeyError:
             raise RuntimeError("Invalid characteristic : " + characteristic_uuid)
-        path.WriteValue([ord(c) for c in data], {}, dbus_interface='org.bluez.GattCharacteristic1')
-        return ''.join(chr(b) for b in path.ReadValue({}, dbus_interface='org.bluez.GattCharacteristic1'))
+
+        try:
+            path.WriteValue([ord(c) for c in data], {}, dbus_interface='org.bluez.GattCharacteristic1')
+        except dbus.exceptions.DBusException as e:
+            raise RuntimeError("Failed to write value to characteristic " + characteristic_uuid + ": " + str(e))
+
+        try:
+            readval = path.ReadValue({}, dbus_interface='org.bluez.GattCharacteristic1')
+        except dbus.exceptions.DBusException as e:
+            raise RuntimeError("Failed to read value from characteristic " + characteristic_uuid + ": " + str(e))
+        return ''.join(chr(b) for b in readval)
 
 
 # --------------------------------------------------------------------