@@ -38,6 +38,8 @@ static uint32_t primask_bit;
3838/* Radio SW low ISR global variable */
3939volatile uint8_t radio_sw_low_isr_is_running_high_prio ;
4040
41+ /* ISR registration state variable */
42+ static uint8_t is_isr_registered = 0 ;
4143
4244void LINKLAYER_PLAT_DelayUs (uint32_t delay )
4345{
@@ -96,27 +98,33 @@ void radio_low_prio_isr(void)
9698}
9799
98100
99- void link_layer_register_isr (void )
101+ void link_layer_register_isr (uint8_t force )
100102{
101- ARM_IRQ_DIRECT_DYNAMIC_CONNECT (RADIO_INTR_NUM , 0 , 0 , reschedule );
102103
103- /* Ensure the IRQ is disabled before enabling it at run time */
104- irq_disable (RADIO_INTR_NUM );
104+ if ((force == 1 ) || (is_isr_registered == 0 )) {
105105
106- irq_connect_dynamic (RADIO_INTR_NUM , RADIO_INTR_PRIO_HIGH_Z ,
107- (void (* )(const void * ))radio_high_prio_isr , NULL , 0 );
106+ is_isr_registered = 1 ;
108107
109- irq_enable (RADIO_INTR_NUM );
108+ ARM_IRQ_DIRECT_DYNAMIC_CONNECT (RADIO_INTR_NUM , 0 , 0 , reschedule );
110109
111- ARM_IRQ_DIRECT_DYNAMIC_CONNECT (RADIO_SW_LOW_INTR_NUM , 0 , 0 , reschedule );
110+ /* Ensure the IRQ is disabled before enabling it at run time */
111+ irq_disable (RADIO_INTR_NUM );
112112
113- /* Ensure the IRQ is disabled before enabling it at run time */
114- irq_disable ( RADIO_SW_LOW_INTR_NUM );
113+ irq_connect_dynamic ( RADIO_INTR_NUM , RADIO_INTR_PRIO_HIGH_Z ,
114+ ( void ( * )( const void * )) radio_high_prio_isr , NULL , 0 );
115115
116- irq_connect_dynamic (RADIO_SW_LOW_INTR_NUM , RADIO_SW_LOW_INTR_PRIO ,
117- (void (* )(const void * ))radio_low_prio_isr , NULL , 0 );
116+ irq_enable (RADIO_INTR_NUM );
118117
119- irq_enable (RADIO_SW_LOW_INTR_NUM );
118+ ARM_IRQ_DIRECT_DYNAMIC_CONNECT (RADIO_SW_LOW_INTR_NUM , 0 , 0 , reschedule );
119+
120+ /* Ensure the IRQ is disabled before enabling it at run time */
121+ irq_disable (RADIO_SW_LOW_INTR_NUM );
122+
123+ irq_connect_dynamic (RADIO_SW_LOW_INTR_NUM , RADIO_SW_LOW_INTR_PRIO ,
124+ (void (* )(const void * ))radio_low_prio_isr , NULL , 0 );
125+
126+ irq_enable (RADIO_SW_LOW_INTR_NUM );
127+ }
120128}
121129
122130
0 commit comments