10000 Call give() to all m_semaphore***CmplEvt on disconnect · breadchris/esp32-snippets@70dbad1 · GitHub
[go: up one dir, main page]

Skip to content

Commit 70dbad1

Browse files
committed
Call give() to all m_semaphore***CmplEvt on disconnect
This allows to avoid infinit lock in situations, where DISCONNECT occurs during long calls
1 parent 3770118 commit 70dbad1

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

cpp_utils/BLEClient.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@ void BLEClient::gattClientEventHandler(
167167
m_pClientCallbacks->onDisconnect(this);
168168
}
169169
m_isConnected = false;
170+
m_semaphoreRssiCmplEvt.give();
171+
m_semaphoreSearchCmplEvt.give(1);
170172
break;
171173
} // ESP_GATTC_DISCONNECT_EVT
172174

@@ -214,7 +216,7 @@ void BLEClient::gattClientEventHandler(
214216
// - uint16_t conn_id
215217
//
216218
case ESP_GATTC_SEARCH_CMPL_EVT: {
217-
m_semaphoreSearchCmplEvt.give();
219+
m_semaphoreSearchCmplEvt.give(0);
218220
break;
219221
} // ESP_GATTC_SEARCH_CMPL_EVT
220222

@@ -367,8 +369,8 @@ std::map<std::string, BLERemoteService*>* BLEClient::getServices() {
367369
ESP_LOGE(LOG_TAG, "esp_ble_gattc_search_service: rc=%d %s", errRc, GeneralUtils::errorToString(errRc));
368370
return &m_servicesMap;
369371
}
370-
m_semaphoreSearchCmplEvt.wait("getServices");
371-
m_haveServices = true; // Remember that we now have services.
372+
// If sucessfull, remember that we now have services.
373+
m_haveServices = (m_semaphoreSearchCmplEvt.wait("getServices") == 0);
372374
ESP_LOGD(LOG_TAG, "<< getServices");
373375
return &m_servicesMap;
374376
} // getServices

0 commit comments

Comments
 (0)
0