@@ -150,15 +150,38 @@ static void _dio1_isr(void *arg)
150150}
151151#endif
152152#if IS_USED (MODULE_SX126X_DIO2 )
153- static void _dio2_isr (void * arg )
153+ __attribute__((weak ))
154+ void sx126x_dio2_isr (void * dev , sx126x_irq_mask_t irq_mask )
154155{
155- netdev_trigger_event_isr (arg );
156+ (void )dev ;
157+ (void )irq_mask ;
158+ }
159+ static void _dio2_isr (void * dev )
160+ {
161+ (void )dev ;
162+ sx126x_t * sx126x = (sx126x_t * )dev ;
163+ sx126x_irq_mask_t irq_mask ;
164+ sx126x_get_irq_status (sx126x , & irq_mask );
165+ irq_mask &= sx126x -> params -> dio2_arg .dio2_irq_mask ; /* only process events from DIO2 */
166+ sx126x_clear_irq_status (sx126x , irq_mask );
167+ sx126x_dio2_isr (sx126x , irq_mask );
156168}
157169#endif
158170#if IS_USED (MODULE_SX126X_DIO3 )
159- static void _dio3_isr (void * arg )
171+ __attribute__((weak ))
172+ void sx126x_dio3_isr (void * dev , sx126x_irq_mask_t irq_mask )
160173{
161- netdev_trigger_event_isr (arg );
174+ (void )dev ;
175+ (void )irq_mask ;
176+ }
177+ static void _dio3_isr (void * dev )
178+ {
179+ sx126x_t * sx126x = (sx126x_t * )dev ;
180+ sx126x_irq_mask_t irq_mask ;
181+ sx126x_get_irq_status (sx126x , & irq_mask );
182+ irq_mask &= sx126x -> params -> u_dio3_arg .dio3_irq_mask ; /* only process events from DIO3 */
183+ sx126x_clear_irq_status (sx126x , irq_mask );
184+ sx126x_dio3_isr (sx126x , irq_mask );
162185}
163186#endif
164187
0 commit comments