From 85a34cbd10e4b376563563aa4880d03cbab29129 Mon Sep 17 00:00:00 2001 From: chegewara Date: Tue, 9 Jul 2019 18:43:55 +0200 Subject: [PATCH] Fix issue with semaphores --- libraries/BLE/src/BLEClient.cpp | 3 ++- libraries/BLE/src/BLERemoteCharacteristic.cpp | 4 ++-- libraries/BLE/src/BLERemoteDescriptor.cpp | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/libraries/BLE/src/BLEClient.cpp b/libraries/BLE/src/BLEClient.cpp index f5f82bcd9c9..18e40c3eebc 100644 --- a/libraries/BLE/src/BLEClient.cpp +++ b/libraries/BLE/src/BLEClient.cpp @@ -184,10 +184,11 @@ void BLEClient::gattClientEventHandler( if (m_pClientCallbacks != nullptr) { m_pClientCallbacks->onDisconnect(this); } - BLEDevice::removePeerDevice(m_appId, true); esp_ble_gattc_app_unregister(m_gattc_if); + m_semaphoreOpenEvt.give(ESP_GATT_IF_NONE); m_semaphoreRssiCmplEvt.give(); m_semaphoreSearchCmplEvt.give(1); + BLEDevice::removePeerDevice(m_appId, true); break; } // ESP_GATTC_DISCONNECT_EVT diff --git a/libraries/BLE/src/BLERemoteCharacteristic.cpp b/libraries/BLE/src/BLERemoteCharacteristic.cpp index 4d723752f82..d274e998565 100644 --- a/libraries/BLE/src/BLERemoteCharacteristic.cpp +++ b/libraries/BLE/src/BLERemoteCharacteristic.cpp @@ -400,7 +400,7 @@ std::string BLERemoteCharacteristic::readValue() { // Check to see that we are connected. if (!getRemoteService()->getClient()->isConnected()) { log_e("Disconnected"); - throw BLEDisconnectedException(); + return NULL; } m_semaphoreReadCharEvt.take("readValue"); @@ -546,7 +546,7 @@ void BLERemoteCharacteristic::writeValue(uint8_t* data, size_t length, bool resp // Check to see that we are connected. if (!getRemoteService()->getClient()->isConnected()) { log_e("Disconnected"); - throw BLEDisconnectedException(); + return; } m_semaphoreWriteCharEvt.take("writeValue"); diff --git a/libraries/BLE/src/BLERemoteDescriptor.cpp b/libraries/BLE/src/BLERemoteDescriptor.cpp index 3669b636264..5b990e068ac 100644 --- a/libraries/BLE/src/BLERemoteDescriptor.cpp +++ b/libraries/BLE/src/BLERemoteDescriptor.cpp @@ -55,7 +55,7 @@ std::string BLERemoteDescriptor::readValue() { // Check to see that we are connected. if (!getRemoteCharacteristic()->getRemoteService()->getClient()->isConnected()) { log_e("Disconnected"); - throw BLEDisconnectedException(); + return NULL; } m_semaphoreReadDescrEvt.take("readValue"); @@ -130,7 +130,7 @@ void BLERemoteDescriptor::writeValue(uint8_t* data, size_t length, bool response // Check to see that we are connected. if (!getRemoteCharacteristic()->getRemoteService()->getClient()->isConnected()) { log_e("Disconnected"); - throw BLEDisconnectedException(); + return; } esp_err_t errRc = ::esp_ble_gattc_write_char_descr(