Repository: incubator-mynewt-larva Updated Branches: refs/heads/master faa7814db -> 063324d36
MYNEWT-95: fix whitelist enable/disable in the controller code. Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/commit/8b94064d Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/tree/8b94064d Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/diff/8b94064d Branch: refs/heads/master Commit: 8b94064d7e45e7bc9336a8c25f3df6fdf96d553c Parents: 8bc63a5 Author: wes3 <w...@micosa.io> Authored: Thu Mar 3 16:32:59 2016 -0800 Committer: wes3 <w...@micosa.io> Committed: Thu Mar 3 16:33:16 2016 -0800 ---------------------------------------------------------------------- net/nimble/controller/src/ble_ll_adv.c | 18 +++++++----------- net/nimble/controller/src/ble_ll_conn.c | 3 +++ net/nimble/controller/src/ble_ll_scan.c | 17 +++++++---------- project/bletest/src/main.c | 4 ++-- 4 files changed, 19 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/8b94064d/net/nimble/controller/src/ble_ll_adv.c ---------------------------------------------------------------------- diff --git a/net/nimble/controller/src/ble_ll_adv.c b/net/nimble/controller/src/ble_ll_adv.c index c8a3255..352cfb1 100644 --- a/net/nimble/controller/src/ble_ll_adv.c +++ b/net/nimble/controller/src/ble_ll_adv.c @@ -387,6 +387,13 @@ ble_ll_adv_tx_start_cb(struct ble_ll_sched_item *sch) STATS_INC(ble_ll_stats, adv_late_starts); } + /* Enable/disable whitelisting based on filter policy */ + if (advsm->adv_filter_policy != BLE_HCI_ADV_FILT_NONE) { + ble_ll_whitelist_enable(); + } else { + ble_ll_whitelist_disable(); + } + /* Set link layer state to advertising */ ble_ll_state_set(BLE_LL_STATE_ADV); @@ -587,9 +594,6 @@ ble_ll_adv_sm_stop(struct ble_ll_adv_sm *advsm) os_sr_t sr; if (advsm->enabled) { - /* Disable whitelisting (just in case) */ - ble_ll_whitelist_disable(); - /* Remove any scheduled advertising items */ ble_ll_sched_rmv_elem(&advsm->adv_sch); os_eventq_remove(&g_ble_ll_data.ll_evq, &advsm->adv_txdone_ev); @@ -660,13 +664,6 @@ ble_ll_adv_sm_start(struct ble_ll_adv_sm *advsm) adv_chan = ble_ll_adv_first_chan(advsm); advsm->adv_chan = adv_chan; - /* Enable/disable whitelisting based on filter policy */ - if (advsm->adv_filter_policy != BLE_HCI_ADV_FILT_NONE) { - ble_ll_whitelist_enable(); - } else { - ble_ll_whitelist_disable(); - } - /* * Schedule advertising. We set the initial schedule start and end * times to the earliest possible start/end. @@ -1197,7 +1194,6 @@ ble_ll_adv_event_done(void *arg) if (advsm->adv_pdu_start_time >= advsm->adv_dir_hd_end_time) { /* Disable advertising */ advsm->enabled = 0; - ble_ll_whitelist_disable(); ble_ll_conn_comp_event_send(NULL, BLE_ERR_DIR_ADV_TMO); ble_ll_scan_chk_resume(); return; http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/8b94064d/net/nimble/controller/src/ble_ll_conn.c ---------------------------------------------------------------------- diff --git a/net/nimble/controller/src/ble_ll_conn.c b/net/nimble/controller/src/ble_ll_conn.c index 1d61c3d..36c63e3 100644 --- a/net/nimble/controller/src/ble_ll_conn.c +++ b/net/nimble/controller/src/ble_ll_conn.c @@ -789,6 +789,9 @@ ble_ll_conn_event_start_cb(struct ble_ll_sched_item *sch) g_ble_ll_conn_cur_sm = connsm; assert(connsm); + /* Disable whitelisting as connections do not use it */ + ble_ll_whitelist_disable(); + /* Set LL state */ ble_ll_state_set(BLE_LL_STATE_CONNECTION); http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/8b94064d/net/nimble/controller/src/ble_ll_scan.c ---------------------------------------------------------------------- diff --git a/net/nimble/controller/src/ble_ll_scan.c b/net/nimble/controller/src/ble_ll_scan.c index 32aee48..1f6704f 100644 --- a/net/nimble/controller/src/ble_ll_scan.c +++ b/net/nimble/controller/src/ble_ll_scan.c @@ -502,6 +502,13 @@ ble_ll_scan_start(struct ble_ll_scan_sm *scansm, uint8_t chan) /* Start receiving */ rc = ble_phy_rx(); if (!rc) { + /* Enable/disable whitelisting */ + if (scansm->scan_filt_policy & 1) { + ble_ll_whitelist_enable(); + } else { + ble_ll_whitelist_disable(); + } + /* Set link layer state to scanning */ if (scansm->scan_type == BLE_SCAN_TYPE_INITIATE) { ble_ll_state_set(BLE_LL_STATE_INITIATING); @@ -590,9 +597,6 @@ ble_ll_scan_sm_stop(int chk_disable) /* Disable phy */ ble_phy_disable(); - /* Disable whitelisting */ - ble_ll_whitelist_disable(); - /* Set LL state to standby */ ble_ll_state_set(BLE_LL_STATE_STANDBY); } @@ -616,13 +620,6 @@ ble_ll_scan_sm_start(struct ble_ll_scan_sm *scansm) } } - /* Enable/disable whitelisting */ - if (scansm->scan_filt_policy & 1) { - ble_ll_whitelist_enable(); - } else { - ble_ll_whitelist_disable(); - } - /* Count # of times started */ STATS_INC(ble_ll_stats, scan_starts); http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/8b94064d/project/bletest/src/main.c ---------------------------------------------------------------------- diff --git a/project/bletest/src/main.c b/project/bletest/src/main.c index a69e966..d004aa9 100755 --- a/project/bletest/src/main.c +++ b/project/bletest/src/main.c @@ -93,11 +93,11 @@ os_membuf_t g_mbuf_buffer[MBUF_MEMPOOL_SIZE]; #define BLETEST_CFG_ROLE (BLETEST_ROLE_INITIATOR) //#define BLETEST_CFG_ROLE (BLETEST_ROLE_ADVERTISER) //#define BLETEST_CFG_ROLE (BLETEST_ROLE_SCANNER) -#define BLETEST_CFG_ADV_OWN_ADDR_TYPE (BLE_HCI_ADV_OWN_ADDR_RANDOM) +#define BLETEST_CFG_ADV_OWN_ADDR_TYPE (BLE_HCI_ADV_OWN_ADDR_PUBLIC) #define BLETEST_CFG_ADV_PEER_ADDR_TYPE (BLE_HCI_ADV_PEER_ADDR_PUBLIC) #define BLETEST_CFG_FILT_DUP_ADV (0) #define BLETEST_CFG_ADV_ITVL (600000 / BLE_HCI_ADV_ITVL) -#define BLETEST_CFG_ADV_TYPE BLE_HCI_ADV_TYPE_ADV_DIRECT_IND_LD +#define BLETEST_CFG_ADV_TYPE BLE_HCI_ADV_TYPE_ADV_IND #define BLETEST_CFG_ADV_FILT_POLICY (BLE_HCI_ADV_FILT_NONE) #define BLETEST_CFG_SCAN_ITVL (700000 / BLE_HCI_SCAN_ITVL) #define BLETEST_CFG_SCAN_WINDOW (700000 / BLE_HCI_SCAN_ITVL)