@@ -895,6 +895,11 @@ bool BLEClient::connect(BLEAddress address, uint8_t type, uint32_t timeoutMs) {
895895 */
896896int 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) {
12491254int 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