This is an automated email from the ASF dual-hosted git repository.

andk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 352d4792cfee96ed15397fa2cb06259156540c5a
Author: Andrzej Kaczmarek <andrzej.kaczma...@codecoup.pl>
AuthorDate: Fri Apr 22 00:43:29 2022 +0200

    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)
---
 nimble/controller/src/ble_ll_adv.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/nimble/controller/src/ble_ll_adv.c 
b/nimble/controller/src/ble_ll_adv.c
index 74e8bf56..7c13743b 100644
--- a/nimble/controller/src/ble_ll_adv.c
+++ b/nimble/controller/src/ble_ll_adv.c
@@ -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;
         }

Reply via email to