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)) {

Reply via email to