From 1f616d3bc1bc75bce31d2d2010d34acf59dce8b7 Mon Sep 17 00:00:00 2001 From: Szymon Janc Date: Tue, 20 Jun 2017 21:51:20 +0200 Subject: [PATCH] nimble/controller: Adjust slave anchor point based on PHY used Anchor point depends on PHY used and should be adjusted accordingly. X-Original-Commit: 7915aef02c5cd496a37401a52e53902c9ba79d70 --- nimble/controller/src/ble_ll_conn.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/nimble/controller/src/ble_ll_conn.c b/nimble/controller/src/ble_ll_conn.c index 438484495..e9e010492 100644 --- a/nimble/controller/src/ble_ll_conn.c +++ b/nimble/controller/src/ble_ll_conn.c @@ -2291,9 +2291,24 @@ ble_ll_conn_created(struct ble_ll_conn_sm *connsm, struct ble_mbuf_hdr *rxhdr) connsm->last_anchor_point = rxhdr->beg_cputime; usecs = rxhdr->rem_usecs + 1250 + - (connsm->tx_win_off * BLE_LL_CONN_TX_WIN_USECS) + - ble_ll_pdu_tx_time_get(BLE_CONNECT_REQ_LEN, - connsm->phy_data.tx_phy_mode); + (connsm->tx_win_off * BLE_LL_CONN_TX_WIN_USECS) + + ble_ll_pdu_tx_time_get(BLE_CONNECT_REQ_LEN, + connsm->phy_data.rx_phy_mode); + + if (rxhdr->rxinfo.channel < BLE_PHY_NUM_DATA_CHANS) { + switch (rxhdr->rxinfo.phy) { + case BLE_PHY_1M: + usecs += 1250; + break; + case BLE_PHY_CODED: + usecs += 2500; + break; + case BLE_PHY_2M: + default: + assert(0); + break; + } + } /* Anchor point is cputime. */ endtime = os_cputime_usecs_to_ticks(usecs);