2727# include < climits>
2828
2929struct NimBLEDescriptorFilter {
30- NimBLERemoteDescriptor* dsc;
3130 const NimBLEUUID* uuid;
32- void * taskData;
31+ NimBLERemoteDescriptor* dsc{nullptr };
32+ void * taskData{nullptr };
3333};
3434
3535static const char * LOG_TAG = " NimBLERemoteCharacteristic" ;
@@ -120,6 +120,8 @@ bool NimBLERemoteCharacteristic::retrieveDescriptors(NimBLEDescriptorFilter* pFi
120120 NimBLEDescriptorFilter defaultFilter{nullptr , nullptr , &taskData};
121121 if (pFilter == nullptr ) {
122122 pFilter = &defaultFilter;
123+ } else {
124+ pFilter->taskData = &taskData;
123125 }
124126
125127 int rc = ble_gattc_disc_all_dscs (getClient ()->getConnHandle (),
@@ -134,7 +136,7 @@ bool NimBLERemoteCharacteristic::retrieveDescriptors(NimBLEDescriptorFilter* pFi
134136
135137 auto prevDscCount = m_vDescriptors.size ();
136138 NimBLEUtils::taskWait (taskData, BLE_NPL_TIME_FOREVER );
137- rc = ((NimBLEUtils::TaskData*)pFilter-> taskData )-> m_flags ;
139+ rc = taskData. m_flags ;
138140 if (rc != BLE_HS_EDONE ) {
139141 NIMBLE_LOGE (LOG_TAG , " << retrieveDescriptors(): failed: rc=%d %s" , rc, NimBLEUtils::returnCodeToString (rc));
140142 return false ;
@@ -156,8 +158,7 @@ bool NimBLERemoteCharacteristic::retrieveDescriptors(NimBLEDescriptorFilter* pFi
156158NimBLERemoteDescriptor* NimBLERemoteCharacteristic::getDescriptor (const NimBLEUUID& uuid) const {
157159 NIMBLE_LOGD (LOG_TAG , " >> getDescriptor: uuid: %s" , uuid.toString ().c_str ());
158160 NimBLEUUID uuidTmp{uuid};
159- NimBLEUtils::TaskData taskData (const_cast <NimBLERemoteCharacteristic*>(this ));
160- NimBLEDescriptorFilter filter{nullptr , &uuidTmp, &taskData};
161+ NimBLEDescriptorFilter filter{&uuidTmp};
161162
162163 for (const auto & dsc : m_vDescriptors) {
163164 if (dsc->getUUID () == uuid) {
0 commit comments