@@ -115,7 +115,13 @@ bool NimBLERemoteCharacteristic::retrieveDescriptors(NimBLEDescriptorFilter* fil
115
115
return false ;
116
116
}
117
117
118
- NimBLEUtils::taskWait (filter->taskData , BLE_NPL_TIME_FOREVER);
118
+ if (filter == nullptr ) {
119
+ NimBLETaskData taskData (const_cast <NimBLERemoteCharacteristic*>(this ));
120
+ NimBLEDescriptorFilter filter{nullptr , nullptr , &taskData};
121
+ NimBLEUtils::taskWait (filter.taskData , BLE_NPL_TIME_FOREVER);
122
+ } else {
123
+ NimBLEUtils::taskWait (filter->taskData , BLE_NPL_TIME_FOREVER);
124
+ }
119
125
rc = ((NimBLETaskData*)filter->taskData )->m_flags ;
120
126
if (rc != BLE_HS_EDONE) {
121
127
NIMBLE_LOGE (LOG_TAG, " << retrieveDescriptors(): failed: rc=%d %s" , rc, NimBLEUtils::returnCodeToString (rc));
@@ -135,7 +141,7 @@ bool NimBLERemoteCharacteristic::retrieveDescriptors(NimBLEDescriptorFilter* fil
135
141
NimBLERemoteDescriptor* NimBLERemoteCharacteristic::getDescriptor (const NimBLEUUID& uuid) const {
136
142
NIMBLE_LOGD (LOG_TAG, " >> getDescriptor: uuid: %s" , uuid.toString ().c_str ());
137
143
NimBLETaskData taskData (const_cast <NimBLERemoteCharacteristic*>(this ));
138
- NimBLEDescriptorFilter filter = {nullptr , &uuid, &taskData};
144
+ NimBLEDescriptorFilter filter{nullptr , &uuid, &taskData};
139
145
NimBLEUUID uuidTmp;
140
146
141
147
for (const auto & dsc : m_vDescriptors) {
0 commit comments