nimble/ll: Disallow periodic adv on incompatible ext adv instance

We shall not allow enabling periodic advertising on an incompatible
extended advertising instance, i.e. scannable, connectable, legacy or
anonymous.

This fixes HCI/DDI/BI-37-C, HCI/DDI/BI-38-C, HCI/DDI/BI-39-C,
HCI/DDI/BI-40-C, HCI/DDI/BI-41-C, HCI/DDI/BI-42-C, HCI/DDI/BI-43-C,
HCI/DDI/BI-44-C, HCI/DDI/BI-45-C, HCI/DDI/BI-46-C, HCI/DDI/BI-47-C,
HCI/DDI/BI-53-C, HCI/DDI/BI-54-C, HCI/DDI/BI-55-C, HCI/DDI/BI-56-C,
HCI/DDI/BI-57-C, HCI/DDI/BI-58-C, HCI/DDI/BI-59-C, HCI/DDI/BI-60-C,
HCI/DDI/BI-61-C.

(yup, there are so many test cases for testing the same scenario)
This commit is contained in:
Andrzej Kaczmarek
2022-04-22 10:26:11 +02:00
parent e7fb525b6a
commit 352d4792cf
+7
View File
@@ -3975,6 +3975,13 @@ ble_ll_adv_periodic_enable(const uint8_t *cmdbuf, uint8_t len)
#endif
if (cmd->enable) {
if (advsm->props & (BLE_HCI_LE_SET_EXT_ADV_PROP_ANON_ADV |
BLE_HCI_LE_SET_EXT_ADV_PROP_SCANNABLE |
BLE_HCI_LE_SET_EXT_ADV_PROP_CONNECTABLE |
BLE_HCI_LE_SET_EXT_ADV_PROP_LEGACY)) {
return BLE_ERR_CMD_DISALLOWED;
}
if (advsm->flags & BLE_LL_ADV_SM_FLAG_PERIODIC_DATA_INCOMPLETE) {
return BLE_ERR_CMD_DISALLOWED;
}