From d1134fd45ec82193c9a754599b5b0f4ec54dd618 Mon Sep 17 00:00:00 2001 From: chegewara Date: Wed, 10 Jul 2019 08:11:35 +0200 Subject: [PATCH] Fix issue with semaphores (#2974) --- libraries/BLE/src/BLEClient.cpp | 3 ++- libraries/BLE/src/BLERemoteCharacteristic.cpp | 3 +-- libraries/BLE/src/BLERemoteDescriptor.cpp | 2 -- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/libraries/BLE/src/BLEClient.cpp b/libraries/BLE/src/BLEClient.cpp index 40affbf6..436813f8 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 767258cd..840076f8 100644 --- a/libraries/BLE/src/BLERemoteCharacteristic.cpp +++ b/libraries/BLE/src/BLERemoteCharacteristic.cpp @@ -400,7 +400,6 @@ std::string BLERemoteCharacteristic::readValue() { // Check to see that we are connected. if (!getRemoteService()->getClient()->isConnected()) { log_e("Disconnected"); -// throw BLEDisconnectedException(); TODO:: think about error reporting mechanism return std::string(); } @@ -552,7 +551,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 7d5a95d0..54e59759 100644 --- a/libraries/BLE/src/BLERemoteDescriptor.cpp +++ b/libraries/BLE/src/BLERemoteDescriptor.cpp @@ -55,7 +55,6 @@ std::string BLERemoteDescriptor::readValue() { // Check to see that we are connected. if (!getRemoteCharacteristic()->getRemoteService()->getClient()->isConnected()) { log_e("Disconnected"); -// throw BLEDisconnectedException(); TODO:: think about error reporting mechanism return std::string(); } @@ -134,7 +133,6 @@ 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(); TODO:: think about error reporting mechanism return; }