This is an automated email from the ASF dual-hosted git repository. janc pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git
commit 2f966d2068e656450c7a0d31de9f31db5ab785c3 Author: Szymon Janc <[email protected]> AuthorDate: Wed Oct 9 11:17:43 2019 +0200 nimble/ll: Obey PHYs scan window on continuous multi-phy scan --- nimble/controller/src/ble_ll_scan.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/nimble/controller/src/ble_ll_scan.c b/nimble/controller/src/ble_ll_scan.c index 3ccc888..94dfba3 100644 --- a/nimble/controller/src/ble_ll_scan.c +++ b/nimble/controller/src/ble_ll_scan.c @@ -3483,16 +3483,17 @@ ble_ll_set_ext_scan_params(const uint8_t *cmdbuf, uint8_t len) } #endif - /* If host requests continuous scan for 2 PHYs, we double scan interval - * and split it for two equal scan windows between 2 PHYs + /* if any of PHYs is configured for continuous scan we alter interval to + * fit other PHY */ - if ((coded->configured && uncoded->configured) && - ((uncoded->scan_itvl == uncoded->scan_window) || - (coded->scan_itvl == coded-> scan_window))) { + if (coded->configured && uncoded->configured) { + if (coded->scan_itvl == coded->scan_window) { + coded->scan_itvl += uncoded->scan_window; + } - uncoded->scan_itvl *= 2; - coded-> scan_itvl = uncoded->scan_itvl; - coded->scan_window = uncoded->scan_window; + if (uncoded->scan_itvl == uncoded->scan_window) { + uncoded->scan_itvl += coded->scan_window; + } } memcpy(g_ble_ll_scan_params, new_params, sizeof(new_params)); @@ -3828,16 +3829,17 @@ ble_ll_scan_ext_initiator_start(struct hci_ext_create_conn *hcc, } } - /* If host request for continuous scan if 2 PHYs are requested, we split - * time on two + /* if any of PHYs is configured for continuous scan we alter interval to + * fit other PHY */ - if ((scansm->next_phy != PHY_NOT_CONFIGURED) && - ((uncoded->scan_itvl == uncoded->scan_window) || - (coded->scan_itvl == coded-> scan_window))) { + if (coded->configured && uncoded->configured) { + if (coded->scan_itvl == coded->scan_window) { + coded->scan_itvl += uncoded->scan_window; + } - uncoded->scan_itvl *= 2; - coded-> scan_itvl = uncoded->scan_itvl; - coded->scan_window = uncoded->scan_window; + if (uncoded->scan_itvl == uncoded->scan_window) { + uncoded->scan_itvl += coded->scan_window; + } } rc = ble_ll_scan_sm_start(scansm);
