BLE: Fix create and destroy advertising set.

pull/8738/head
Vincent Coubard 2018-11-10 14:21:52 +00:00
parent 7882bb3016
commit ed012adab3
1 changed files with 14 additions and 15 deletions

View File

@ -1594,23 +1594,25 @@ ble_error_t GenericGap::createAdvertisingSet(AdvHandle_t* handle)
} }
uint8_t new_handle = LEGACY_ADVERTISING_HANDLE + 1; uint8_t new_handle = LEGACY_ADVERTISING_HANDLE + 1;
uint8_t end = getMaxAdvertisingSetNumber();
while (get_adv_set_bit(_existing_sets, new_handle)) { for (; new_handle < end; ++new_handle) {
new_handle++; if (get_adv_set_bit(_existing_sets, new_handle)) {
} set_adv_set_bit(_existing_sets, new_handle);
*handle = new_handle;
/* if we went over the limit this set will fail safely */ return BLE_ERROR_NONE;
if (set_adv_set_bit(_existing_sets, new_handle)) { }
*handle = new_handle;
return BLE_ERROR_NONE;
} }
*handle = INVALID_ADVERTISING_HANDLE; *handle = INVALID_ADVERTISING_HANDLE;
return BLE_ERROR_NO_MEM;
return BLE_ERROR_OPERATION_NOT_PERMITTED;
} }
ble_error_t GenericGap::destroyAdvertisingSet(AdvHandle_t handle) { ble_error_t GenericGap::destroyAdvertisingSet(AdvHandle_t handle) {
if (handle >= getMaxAdvertisingSetNumber()) {
return BLE_ERROR_INVALID_PARAM;
}
if (get_adv_set_bit(_existing_sets, handle)) { if (get_adv_set_bit(_existing_sets, handle)) {
return BLE_ERROR_INVALID_PARAM; return BLE_ERROR_INVALID_PARAM;
} }
@ -1619,11 +1621,8 @@ ble_error_t GenericGap::destroyAdvertisingSet(AdvHandle_t handle) {
return BLE_ERROR_OPERATION_NOT_PERMITTED; return BLE_ERROR_OPERATION_NOT_PERMITTED;
} }
if (set_adv_set_bit(_existing_sets, handle)) { clear_adv_set_bit(_existing_sets, handle);
return _pal_gap.remove_advertising_set(handle); return BLE_ERROR_NONE;
}
return BLE_ERROR_INVALID_PARAM;
} }
ble_error_t GenericGap::setAdvertisingParams( ble_error_t GenericGap::setAdvertisingParams(