@@ -71,11 +71,18 @@ static void ticker_cb(uint32_t ticks_at_expire, uint32_t ticks_drift,
7171static struct ll_adv_aux_set ll_adv_aux_pool [CONFIG_BT_CTLR_ADV_AUX_SET ];
7272static void * adv_aux_free ;
7373
74- #if defined(CONFIG_BT_CTLR_ADV_PERIODIC ) && defined(CONFIG_BT_TICKER_EXT_EXPIRE_INFO )
74+ #if defined(CONFIG_BT_CTLR_ADV_AUX_SLOT_WINDOW_DRIFT ) || \
75+ (defined(CONFIG_BT_CTLR_ADV_PERIODIC ) && \
76+ defined(CONFIG_BT_TICKER_EXT_EXPIRE_INFO ))
77+ #if defined(CONFIG_BT_CTLR_ADV_PERIODIC ) && \
78+ defined(CONFIG_BT_TICKER_EXT_EXPIRE_INFO )
7579static void ticker_update_op_cb (uint32_t status , void * param );
80+ #endif /* CONFIG_BT_CTLR_ADV_PERIODIC && CONFIG_BT_TICKER_EXT_EXPIRE_INFO */
7681
7782static struct ticker_ext ll_adv_aux_ticker_ext [CONFIG_BT_CTLR_ADV_AUX_SET ];
78- #endif /* !CONFIG_BT_CTLR_ADV_PERIODIC && CONFIG_BT_TICKER_EXT_EXPIRE_INFO */
83+ #endif /* CONFIG_BT_CTLR_ADV_AUX_SLOT_WINDOW_DRIFT ||
84+ * (CONFIG_BT_CTLR_ADV_PERIODIC && CONFIG_BT_TICKER_EXT_EXPIRE_INFO)
85+ */
7986#endif /* (CONFIG_BT_CTLR_ADV_AUX_SET > 0) */
8087
8188static uint16_t did_unique [PDU_ADV_SID_COUNT ];
@@ -2600,6 +2607,12 @@ uint32_t ull_adv_aux_start(struct ll_adv_aux_set *aux, uint32_t ticks_anchor,
26002607 aux_handle = ull_adv_aux_handle_get (aux );
26012608 interval_us = aux -> interval * PERIODIC_INT_UNIT_US ;
26022609
2610+ #if defined(CONFIG_BT_CTLR_ADV_AUX_SLOT_WINDOW_DRIFT )
2611+ ll_adv_aux_ticker_ext [aux_handle ].ticks_slot_window =
2612+ ULL_ADV_RANDOM_DELAY + aux -> ull .ticks_slot ;
2613+ ll_adv_aux_ticker_ext [aux_handle ].is_drift_in_window = 1U ;
2614+ #endif /* CONFIG_BT_CTLR_ADV_AUX_SLOT_WINDOW_DRIFT */
2615+
26032616#if defined(CONFIG_BT_CTLR_ADV_PERIODIC ) && defined(CONFIG_BT_TICKER_EXT_EXPIRE_INFO )
26042617 if (aux -> lll .adv -> sync ) {
26052618 const struct ll_adv_sync_set * sync = HDR_LLL2ULL (aux -> lll .adv -> sync );
@@ -2612,14 +2625,22 @@ uint32_t ull_adv_aux_start(struct ll_adv_aux_set *aux, uint32_t ticks_anchor,
26122625 }
26132626
26142627 ll_adv_aux_ticker_ext [aux_handle ].ext_timeout_func = ticker_cb ;
2628+ #endif /* !CONFIG_BT_CTLR_ADV_PERIODIC || !CONFIG_BT_TICKER_EXT_EXPIRE_INFO */
26152629
2630+ #if defined(CONFIG_BT_CTLR_ADV_AUX_SLOT_WINDOW_DRIFT ) || \
2631+ (defined(CONFIG_BT_CTLR_ADV_PERIODIC ) && \
2632+ defined(CONFIG_BT_TICKER_EXT_EXPIRE_INFO ))
26162633 ret_cb = TICKER_STATUS_BUSY ;
26172634 ret = ticker_start_ext (
2618- #else /* !CONFIG_BT_CTLR_ADV_PERIODIC || !CONFIG_BT_TICKER_EXT_EXPIRE_INFO */
2635+ #else /* !CONFIG_BT_CTLR_ADV_AUX_SLOT_WINDOW_DRIFT &&
2636+ * !(CONFIG_BT_CTLR_ADV_PERIODIC && CONFIG_BT_TICKER_EXT_EXPIRE_INFO)
2637+ */
26192638
26202639 ret_cb = TICKER_STATUS_BUSY ;
26212640 ret = ticker_start (
2622- #endif /* !CONFIG_BT_CTLR_ADV_PERIODIC || !CONFIG_BT_TICKER_EXT_EXPIRE_INFO */
2641+ #endif /* !CONFIG_BT_CTLR_ADV_AUX_SLOT_WINDOW_DRIFT &&
2642+ * !(CONFIG_BT_CTLR_ADV_PERIODIC && CONFIG_BT_TICKER_EXT_EXPIRE_INFO)
2643+ */
26232644 TICKER_INSTANCE_ID_CTLR , TICKER_USER_ID_THREAD ,
26242645 (TICKER_ID_ADV_AUX_BASE + aux_handle ),
26252646 ticks_anchor , 0U ,
@@ -2628,10 +2649,14 @@ uint32_t ull_adv_aux_start(struct ll_adv_aux_set *aux, uint32_t ticks_anchor,
26282649 (aux -> ull .ticks_slot + ticks_slot_overhead ),
26292650 ticker_cb , aux ,
26302651 ull_ticker_status_give , (void * )& ret_cb
2631- #if defined(CONFIG_BT_CTLR_ADV_PERIODIC ) && defined (CONFIG_BT_TICKER_EXT_EXPIRE_INFO )
2652+ #if defined(CONFIG_BT_CTLR_ADV_AUX_SLOT_WINDOW_DRIFT ) || \
2653+ (defined (CONFIG_BT_CTLR_ADV_PERIODIC ) && \
2654+ defined (CONFIG_BT_TICKER_EXT_EXPIRE_INFO ))
26322655 ,
26332656 & ll_adv_aux_ticker_ext [aux_handle ]
2634- #endif /* !CONFIG_BT_CTLR_ADV_PERIODIC || !CONFIG_BT_TICKER_EXT_EXPIRE_INFO */
2657+ #endif /* CONFIG_BT_CTLR_ADV_AUX_SLOT_WINDOW_DRIFT ||
2658+ * (CONFIG_BT_CTLR_ADV_PERIODIC && CONFIG_BT_TICKER_EXT_EXPIRE_INFO)
2659+ */
26352660 );
26362661 ret = ull_ticker_status_take (ret , & ret_cb );
26372662
0 commit comments