Browse Source

Bluetooth: Controller: Single timer use Extended Advertising nRF54L support

Update Extended Advertising for single timer use support
required for nRF54L Series SoCs.

As the timer is reset on every radio end, add implementation
to accumulate the last_pdu_end_us.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
pull/84184/head
Vinayak Kariappa Chettimada 1 year ago committed by Benjamin Cabé
parent
commit
373dc0db71
  1. 9
      subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio.c
  2. 1
      subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio.h
  3. 5
      subsys/bluetooth/controller/ll_sw/nordic/lll/lll_adv.c
  4. 5
      subsys/bluetooth/controller/ll_sw/nordic/lll/lll_adv_aux.c

9
subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio.c

@ -641,6 +641,15 @@ uint32_t radio_is_done(void) @@ -641,6 +641,15 @@ uint32_t radio_is_done(void)
}
#endif /* !CONFIG_BT_CTLR_SW_SWITCH_SINGLE_TIMER */
uint32_t radio_is_tx_done(void)
{
if (IS_ENABLED(CONFIG_BT_CTLR_SW_SWITCH_SINGLE_TIMER)) {
return radio_is_done();
} else {
return 1U;
}
}
uint32_t radio_has_disabled(void)
{
return (NRF_RADIO->EVENTS_DISABLED != 0);

1
subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio.h

@ -86,6 +86,7 @@ void radio_status_reset(void); @@ -86,6 +86,7 @@ void radio_status_reset(void);
uint32_t radio_is_ready(void);
uint32_t radio_is_address(void);
uint32_t radio_is_done(void);
uint32_t radio_is_tx_done(void);
uint32_t radio_has_disabled(void);
uint32_t radio_is_idle(void);

5
subsys/bluetooth/controller/ll_sw/nordic/lll/lll_adv.c

@ -1303,6 +1303,11 @@ static void isr_done(void *param) @@ -1303,6 +1303,11 @@ static void isr_done(void *param)
{
struct lll_adv *lll;
/* Call to ensure packet/event timer accumulates the elapsed time
* under single timer use.
*/
(void)radio_is_tx_done();
/* Clear radio status and events */
lll_isr_status_reset();

5
subsys/bluetooth/controller/ll_sw/nordic/lll/lll_adv_aux.c

@ -581,6 +581,11 @@ static void isr_tx_rx(void *param) @@ -581,6 +581,11 @@ static void isr_tx_rx(void *param)
node_rx_prof = lll_prof_reserve();
}
/* Call to ensure packet/event timer accumulates the elapsed time
* under single timer use.
*/
(void)radio_is_tx_done();
/* Clear radio tx status and events */
lll_isr_tx_status_reset();

Loading…
Cancel
Save