Repository: incubator-mynewt-core Updated Branches: refs/heads/develop 433aab55c -> 797836452
MYNEWT-542: Controller not working if os cputime not 1 MHz. There were additional places that microseconds were not being converted into ticks. Now converted. Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/79783645 Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/79783645 Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/79783645 Branch: refs/heads/develop Commit: 797836452faf6e9317d0389d890e8abd2395a138 Parents: 433aab5 Author: William San Filippo <[email protected]> Authored: Tue Jan 10 21:56:18 2017 -0800 Committer: William San Filippo <[email protected]> Committed: Tue Jan 10 21:58:44 2017 -0800 ---------------------------------------------------------------------- hw/drivers/nimble/nrf51/src/ble_phy.c | 6 +++--- hw/drivers/nimble/nrf52/src/ble_phy.c | 6 +++--- net/nimble/controller/src/ble_ll_adv.c | 2 +- net/nimble/controller/src/ble_ll_conn.c | 4 +++- 4 files changed, 10 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/79783645/hw/drivers/nimble/nrf51/src/ble_phy.c ---------------------------------------------------------------------- diff --git a/hw/drivers/nimble/nrf51/src/ble_phy.c b/hw/drivers/nimble/nrf51/src/ble_phy.c index 65a05ae..a18e73c 100644 --- a/hw/drivers/nimble/nrf51/src/ble_phy.c +++ b/hw/drivers/nimble/nrf51/src/ble_phy.c @@ -425,10 +425,10 @@ ble_phy_tx_end_isr(void) if (txlen && was_encrypted) { txlen += BLE_LL_DATA_MIC_LEN; } - wfr_time = txstart - BLE_TX_LEN_USECS_M(NRF_RX_START_OFFSET); + wfr_time = BLE_LL_WFR_USECS - BLE_TX_LEN_USECS_M(NRF_RX_START_OFFSET); wfr_time += BLE_TX_DUR_USECS_M(txlen); - wfr_time = os_cputime_usecs_to_ticks(BLE_LL_WFR_USECS + wfr_time); - ble_ll_wfr_enable(wfr_time); + wfr_time = os_cputime_usecs_to_ticks(wfr_time); + ble_ll_wfr_enable(txstart + wfr_time); } else { /* Disable automatic TXEN */ NRF_PPI->CHENCLR = PPI_CHEN_CH20_Msk; http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/79783645/hw/drivers/nimble/nrf52/src/ble_phy.c ---------------------------------------------------------------------- diff --git a/hw/drivers/nimble/nrf52/src/ble_phy.c b/hw/drivers/nimble/nrf52/src/ble_phy.c index 9b178e3..8771f49 100644 --- a/hw/drivers/nimble/nrf52/src/ble_phy.c +++ b/hw/drivers/nimble/nrf52/src/ble_phy.c @@ -416,10 +416,10 @@ ble_phy_tx_end_isr(void) if (txlen && was_encrypted) { txlen += BLE_LL_DATA_MIC_LEN; } - wfr_time = txstart - BLE_TX_LEN_USECS_M(NRF_RX_START_OFFSET); + wfr_time = BLE_LL_WFR_USECS - BLE_TX_LEN_USECS_M(NRF_RX_START_OFFSET); wfr_time += BLE_TX_DUR_USECS_M(txlen); - wfr_time = os_cputime_usecs_to_ticks(BLE_LL_WFR_USECS + wfr_time); - ble_ll_wfr_enable(wfr_time); + wfr_time = os_cputime_usecs_to_ticks(wfr_time); + ble_ll_wfr_enable(txstart + wfr_time); } else { /* Disable automatic TXEN */ NRF_PPI->CHENCLR = PPI_CHEN_CH20_Msk; http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/79783645/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 bb1523f..aee474f 100644 --- a/net/nimble/controller/src/ble_ll_adv.c +++ b/net/nimble/controller/src/ble_ll_adv.c @@ -430,7 +430,7 @@ ble_ll_adv_tx_start_cb(struct ble_ll_sched_item *sch) assert(rc == 0); /* Set transmit start time. */ - txstart = sch->start_time + XCVR_PROC_DELAY_USECS; + txstart = sch->start_time + os_cputime_usecs_to_ticks(XCVR_PROC_DELAY_USECS); rc = ble_phy_tx_set_start_time(txstart); if (rc) { STATS_INC(ble_ll_stats, adv_late_starts); http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/79783645/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 7ced9c0..a0a712c 100644 --- a/net/nimble/controller/src/ble_ll_conn.c +++ b/net/nimble/controller/src/ble_ll_conn.c @@ -1122,6 +1122,7 @@ ble_ll_conn_event_start_cb(struct ble_ll_sched_item *sch) int rc; uint32_t usecs; uint32_t wfr_time; + uint32_t txstart; struct ble_ll_conn_sm *connsm; /* XXX: note that we can extend end time here if we want. Look at this */ @@ -1151,7 +1152,8 @@ ble_ll_conn_event_start_cb(struct ble_ll_sched_item *sch) if (connsm->conn_role == BLE_LL_CONN_ROLE_MASTER) { /* Set start time of transmission */ - rc = ble_phy_tx_set_start_time(sch->start_time + XCVR_PROC_DELAY_USECS); + txstart = sch->start_time + os_cputime_usecs_to_ticks(XCVR_PROC_DELAY_USECS); + rc = ble_phy_tx_set_start_time(txstart); if (!rc) { #if MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_ENCRYPTION) if (CONN_F_ENCRYPTED(connsm)) {
