Bluetooth: controller: split: Refactor node_rx_ftr
Remove us_radio_rdy field in the footer structure as its always a constant value which can be obtained using a functional interface to HAL. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
parent
0681c80573
commit
5d6c4a6cb5
9 changed files with 40 additions and 24 deletions
|
@ -200,8 +200,7 @@ struct node_rx_ftr {
|
|||
void *param;
|
||||
void *extra;
|
||||
uint32_t ticks_anchor;
|
||||
uint32_t us_radio_end;
|
||||
uint32_t us_radio_rdy;
|
||||
uint32_t radio_end_us;
|
||||
uint8_t rssi;
|
||||
#if defined(CONFIG_BT_CTLR_PRIVACY)
|
||||
uint8_t lrpa_used:1;
|
||||
|
@ -304,6 +303,8 @@ int lll_reset(void);
|
|||
void lll_resume(void *param);
|
||||
void lll_disable(void *param);
|
||||
uint32_t lll_radio_is_idle(void);
|
||||
uint32_t lll_radio_tx_ready_delay_get(uint8_t phy, uint8_t flags);
|
||||
uint32_t lll_radio_rx_ready_delay_get(uint8_t phy, uint8_t flags);
|
||||
int8_t lll_radio_tx_pwr_min_get(void);
|
||||
int8_t lll_radio_tx_pwr_max_get(void);
|
||||
int8_t lll_radio_tx_pwr_floor(int8_t tx_pwr_lvl);
|
||||
|
|
|
@ -383,6 +383,16 @@ uint32_t lll_radio_is_idle(void)
|
|||
return radio_is_idle();
|
||||
}
|
||||
|
||||
uint32_t lll_radio_tx_ready_delay_get(uint8_t phy, uint8_t flags)
|
||||
{
|
||||
return radio_tx_ready_delay_get(phy, flags);
|
||||
}
|
||||
|
||||
uint32_t lll_radio_rx_ready_delay_get(uint8_t phy, uint8_t flags)
|
||||
{
|
||||
return radio_rx_ready_delay_get(phy, flags);
|
||||
}
|
||||
|
||||
int8_t lll_radio_tx_pwr_min_get(void)
|
||||
{
|
||||
return radio_tx_power_min_get();
|
||||
|
|
|
@ -730,9 +730,8 @@ static inline int isr_rx_pdu(struct lll_adv *lll,
|
|||
ftr = &(rx->hdr.rx_ftr);
|
||||
ftr->param = lll;
|
||||
ftr->ticks_anchor = radio_tmr_start_get();
|
||||
ftr->us_radio_end = radio_tmr_end_get() -
|
||||
ftr->radio_end_us = radio_tmr_end_get() -
|
||||
radio_tx_chain_delay_get(0, 0);
|
||||
ftr->us_radio_rdy = radio_rx_ready_delay_get(0, 0);
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_PRIVACY)
|
||||
ftr->rl_idx = irkmatch_ok ? rl_idx : FILTER_IDX_NONE;
|
||||
|
|
|
@ -836,9 +836,8 @@ static inline uint32_t isr_rx_pdu(struct lll_scan *lll, uint8_t devmatch_ok,
|
|||
|
||||
ftr->param = lll;
|
||||
ftr->ticks_anchor = radio_tmr_start_get();
|
||||
ftr->us_radio_end = conn_space_us -
|
||||
ftr->radio_end_us = conn_space_us -
|
||||
radio_tx_chain_delay_get(0, 0);
|
||||
ftr->us_radio_rdy = radio_tx_ready_delay_get(0, 0);
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_PRIVACY)
|
||||
ftr->rl_idx = irkmatch_ok ? rl_idx : FILTER_IDX_NONE;
|
||||
|
|
|
@ -17,10 +17,6 @@
|
|||
#include "hal/ccm.h"
|
||||
#include "hal/ticker.h"
|
||||
|
||||
#if defined(CONFIG_SOC_FAMILY_NRF)
|
||||
#include "hal/radio.h"
|
||||
#endif /* CONFIG_SOC_FAMILY_NRF */
|
||||
|
||||
#include "util/util.h"
|
||||
#include "util/mem.h"
|
||||
#include "util/mfifo.h"
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
|
||||
#include "hal/ccm.h"
|
||||
#include "hal/ticker.h"
|
||||
#include "hal/radio.h"
|
||||
|
||||
#include "util/util.h"
|
||||
#include "util/mem.h"
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
|
||||
#include "hal/ticker.h"
|
||||
#include "hal/ccm.h"
|
||||
#include "hal/radio.h"
|
||||
|
||||
#include "ticker/ticker.h"
|
||||
|
||||
|
@ -529,11 +528,12 @@ void ull_master_setup(memq_link_t *link, struct node_rx_hdr *rx,
|
|||
uint8_t ticker_id_scan, ticker_id_conn;
|
||||
uint8_t peer_addr[BDADDR_SIZE];
|
||||
uint32_t ticks_slot_overhead;
|
||||
uint32_t ticks_slot_offset;
|
||||
struct ll_scan_set *scan;
|
||||
uint32_t ticks_slot_offset;
|
||||
struct pdu_adv *pdu_tx;
|
||||
struct node_rx_cc *cc;
|
||||
struct ll_conn *conn;
|
||||
struct pdu_adv *pdu_tx;
|
||||
uint32_t ready_delay_us;
|
||||
uint8_t peer_addr_type;
|
||||
uint32_t ticker_status;
|
||||
uint8_t chan_sel;
|
||||
|
@ -635,6 +635,13 @@ void ull_master_setup(memq_link_t *link, struct node_rx_hdr *rx,
|
|||
ll_rx_put(link, rx);
|
||||
ll_rx_sched();
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_PHY)
|
||||
ready_delay_us = lll_radio_tx_ready_delay_get(lll->phy_tx,
|
||||
lll->phy_flags);
|
||||
#else
|
||||
ready_delay_us = lll_radio_tx_ready_delay_get(0, 0);
|
||||
#endif
|
||||
|
||||
/* TODO: active_to_start feature port */
|
||||
conn->evt.ticks_active_to_start = 0U;
|
||||
conn->evt.ticks_xtal_to_start =
|
||||
|
@ -643,8 +650,8 @@ void ull_master_setup(memq_link_t *link, struct node_rx_hdr *rx,
|
|||
HAL_TICKER_US_TO_TICKS(EVENT_OVERHEAD_PREEMPT_MIN_US);
|
||||
conn->evt.ticks_slot =
|
||||
HAL_TICKER_US_TO_TICKS(EVENT_OVERHEAD_START_US +
|
||||
ftr->us_radio_rdy + 328 + EVENT_IFS_US +
|
||||
328);
|
||||
ready_delay_us +
|
||||
328 + EVENT_IFS_US + 328);
|
||||
|
||||
ticks_slot_offset = MAX(conn->evt.ticks_active_to_start,
|
||||
conn->evt.ticks_xtal_to_start);
|
||||
|
@ -656,10 +663,10 @@ void ull_master_setup(memq_link_t *link, struct node_rx_hdr *rx,
|
|||
}
|
||||
|
||||
conn_interval_us = lll->interval * 1250;
|
||||
conn_offset_us = ftr->us_radio_end;
|
||||
conn_offset_us = ftr->radio_end_us;
|
||||
conn_offset_us += HAL_TICKER_TICKS_TO_US(1);
|
||||
conn_offset_us -= EVENT_OVERHEAD_START_US;
|
||||
conn_offset_us -= ftr->us_radio_rdy;
|
||||
conn_offset_us -= ready_delay_us;
|
||||
|
||||
#if (CONFIG_BT_CTLR_ULL_HIGH_PRIO == CONFIG_BT_CTLR_ULL_LOW_PRIO)
|
||||
/* disable ticker job, in order to chain stop and start to avoid RTC
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
|
||||
#include "hal/ccm.h"
|
||||
#include "hal/ticker.h"
|
||||
#include "hal/radio.h"
|
||||
|
||||
#include "util/util.h"
|
||||
#include "util/mem.h"
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
|
||||
#include "hal/ticker.h"
|
||||
#include "hal/ccm.h"
|
||||
#include "hal/radio.h"
|
||||
|
||||
#include "ticker/ticker.h"
|
||||
|
||||
|
@ -59,6 +58,7 @@ void ull_slave_setup(memq_link_t *link, struct node_rx_hdr *rx,
|
|||
struct ll_adv_set *adv;
|
||||
struct node_rx_cc *cc;
|
||||
struct ll_conn *conn;
|
||||
uint32_t ready_delay_us;
|
||||
uint32_t ticker_status;
|
||||
uint8_t peer_addr_type;
|
||||
uint16_t win_offset;
|
||||
|
@ -216,6 +216,12 @@ void ull_slave_setup(memq_link_t *link, struct node_rx_hdr *rx,
|
|||
ll_rx_put(link, rx);
|
||||
ll_rx_sched();
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_PHY)
|
||||
ready_delay_us = lll_radio_rx_ready_delay_get(lll->phy_rx, 1);
|
||||
#else
|
||||
ready_delay_us = lll_radio_rx_ready_delay_get(0, 0);
|
||||
#endif
|
||||
|
||||
/* TODO: active_to_start feature port */
|
||||
conn->evt.ticks_active_to_start = 0U;
|
||||
conn->evt.ticks_xtal_to_start =
|
||||
|
@ -224,8 +230,8 @@ void ull_slave_setup(memq_link_t *link, struct node_rx_hdr *rx,
|
|||
HAL_TICKER_US_TO_TICKS(EVENT_OVERHEAD_PREEMPT_MIN_US);
|
||||
conn->evt.ticks_slot =
|
||||
HAL_TICKER_US_TO_TICKS(EVENT_OVERHEAD_START_US +
|
||||
ftr->us_radio_rdy + 328 + EVENT_IFS_US +
|
||||
328);
|
||||
ready_delay_us +
|
||||
328 + EVENT_IFS_US + 328);
|
||||
|
||||
ticks_slot_offset = MAX(conn->evt.ticks_active_to_start,
|
||||
conn->evt.ticks_xtal_to_start);
|
||||
|
@ -238,12 +244,12 @@ void ull_slave_setup(memq_link_t *link, struct node_rx_hdr *rx,
|
|||
|
||||
conn_interval_us -= lll->slave.window_widening_periodic_us;
|
||||
|
||||
conn_offset_us = ftr->us_radio_end;
|
||||
conn_offset_us = ftr->radio_end_us;
|
||||
conn_offset_us += ((uint64_t)win_offset + 1) * 1250U;
|
||||
conn_offset_us -= EVENT_OVERHEAD_START_US;
|
||||
conn_offset_us -= EVENT_TICKER_RES_MARGIN_US;
|
||||
conn_offset_us -= EVENT_JITTER_US;
|
||||
conn_offset_us -= ftr->us_radio_rdy;
|
||||
conn_offset_us -= ready_delay_us;
|
||||
|
||||
#if (CONFIG_BT_CTLR_ULL_HIGH_PRIO == CONFIG_BT_CTLR_ULL_LOW_PRIO)
|
||||
/* disable ticker job, in order to chain stop and start to avoid RTC
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue