Skip to content

Commit ce4a891

Browse files
committed
fix(nimble): Fix client
1 parent f2bd5e3 commit ce4a891

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

libraries/BLE/src/BLEClient.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,11 @@ bool BLEClient::connect(BLEAddress address, uint8_t type, uint32_t timeoutMs) {
895895
*/
896896
int BLEClient::serviceDiscoveredCB(uint16_t conn_handle, const struct ble_gatt_error *error, const struct ble_gatt_svc *service, void *arg)
897897
{
898+
if (error == nullptr || service == nullptr) {
899+
log_e("serviceDiscoveredCB: error or service is nullptr");
900+
return 0;
901+
}
902+
898903
log_d("Service Discovered >> status: %d handle: %d", error->status, (error->status == 0) ? service->start_handle : -1);
899904

900905
ble_task_data_t *pTaskData = (ble_task_data_t*)arg;
@@ -936,7 +941,7 @@ std::map<std::string, BLERemoteService *> *BLEClient::getServices() {
936941
*/
937942
log_v(">> getServices");
938943
// TODO implement retrieving services from cache
939-
m_semaphoreSearchCmplEvt.take("getServices");
944+
//m_semaphoreSearchCmplEvt.take("getServices");
940945
clearServices(); // Clear any services that may exist.
941946

942947
int errRc = 0;
@@ -947,12 +952,12 @@ std::map<std::string, BLERemoteService *> *BLEClient::getServices() {
947952
if (errRc != 0) {
948953
log_e("ble_gattc_disc_all_svcs: rc=%d %s", errRc, BLEUtils::returnCodeToString(errRc));
949954
m_lastErr = errRc;
950-
m_semaphoreSearchCmplEvt.give();
955+
//m_semaphoreSearchCmplEvt.give();
951956
return &m_servicesMap;
952957
}
953958
// If successful, remember that we now have services.
954959
m_haveServices = m_servicesMap.size() > 0;
955-
m_semaphoreSearchCmplEvt.give();
960+
//m_semaphoreSearchCmplEvt.give();
956961
log_v("<< getServices");
957962
return &m_servicesMap;
958963
} // getServices
@@ -1249,6 +1254,7 @@ int BLEClient::handleGAPEvent(struct ble_gap_event *event, void *arg) {
12491254
int BLEClient::disconnect(uint8_t reason) {
12501255
log_d(">> disconnect()");
12511256
int rc = 0;
1257+
12521258
if(isConnected()) {
12531259
// If the timer was already started, ignore this call.
12541260
if(ble_npl_callout_is_active(&m_dcTimer)) {
@@ -1278,9 +1284,9 @@ int BLEClient::disconnect(uint8_t reason) {
12781284
ble_npl_callout_stop(&m_dcTimer);
12791285
}
12801286
log_e("ble_gap_terminate failed: rc=%d %s", rc, BLEUtils::returnCodeToString(rc));
1281-
} else {
1282-
log_d("Not connected to any peers");
12831287
}
1288+
} else {
1289+
log_d("Not connected to any peers");
12841290
}
12851291

12861292
log_d("<< disconnect()");

0 commit comments

Comments
 (0)