@@ -274,14 +274,14 @@ where
274274 Self {
275275 _timer_group : PhantomData ,
276276 timer0 : Timer {
277- timer : 0 ,
277+ timer : TimerId :: Timer0 ,
278278 tg : T :: id ( ) ,
279279 register_block : T :: register_block ( ) ,
280280 _lifetime : PhantomData ,
281281 } ,
282282 #[ cfg( timergroup_timg_has_timer1) ]
283283 timer1 : Timer {
284- timer : 1 ,
284+ timer : TimerId :: Timer1 ,
285285 tg : T :: id ( ) ,
286286 register_block : T :: register_block ( ) ,
287287 _lifetime : PhantomData ,
@@ -380,10 +380,18 @@ impl super::Timer for Timer<'_> {
380380pub struct Timer < ' d > {
381381 register_block : * const RegisterBlock ,
382382 _lifetime : PhantomData < & ' d mut ( ) > ,
383- timer : u8 ,
383+ timer : TimerId ,
384384 tg : u8 ,
385385}
386386
387+ #[ derive( Debug , Clone , Copy , PartialEq , Eq ) ]
388+ #[ cfg_attr( feature = "defmt" , derive( defmt:: Format ) ) ]
389+ enum TimerId {
390+ Timer0 ,
391+ #[ cfg( timergroup_timg_has_timer1) ]
392+ Timer1 ,
393+ }
394+
387395impl Sealed for Timer < ' _ > { }
388396unsafe impl Send for Timer < ' _ > { }
389397
@@ -444,7 +452,7 @@ impl Timer<'_> {
444452 }
445453
446454 fn timer_number ( & self ) -> u8 {
447- self . timer
455+ self . timer as u8
448456 }
449457
450458 fn t ( & self ) -> & crate :: pac:: timg0:: T {
@@ -517,7 +525,7 @@ impl Timer<'_> {
517525 fn clear_interrupt ( & self ) {
518526 self . register_block ( )
519527 . int_clr ( )
520- . write ( |w| w. t ( self . timer ) . clear_bit_by_one ( ) ) ;
528+ . write ( |w| w. t ( self . timer as _ ) . clear_bit_by_one ( ) ) ;
521529 let periodic = self . t ( ) . config ( ) . read ( ) . autoreload ( ) . bit_is_set ( ) ;
522530 self . set_alarm_active ( periodic) ;
523531 }
@@ -567,7 +575,7 @@ impl Timer<'_> {
567575 self . register_block ( )
568576 . int_raw ( )
569577 . read ( )
570- . t ( self . timer )
578+ . t ( self . timer as _ )
571579 . bit_is_set ( )
572580 }
573581
@@ -577,8 +585,7 @@ impl Timer<'_> {
577585 // On ESP32 and S2, the `int_ena` register is ineffective - interrupts fire even
578586 // without int_ena enabling them. We use level interrupts so that we have a status
579587 // bit available.
580- self . register_block( )
581- . t( self . timer as usize )
588+ self . t( )
582589 . config( )
583590 . modify( |_, w| w. level_int_en( ) . bit( state) ) ;
584591 } else if #[ cfg( timergroup_timg_has_timer1) ] {
@@ -868,7 +875,7 @@ mod asynch {
868875 handle_irq ( Timer {
869876 register_block : TIMG0 :: regs ( ) ,
870877 _lifetime : PhantomData ,
871- timer : 0 ,
878+ timer : TimerId :: Timer0 ,
872879 tg : 0 ,
873880 } ) ;
874881 }
@@ -879,7 +886,7 @@ mod asynch {
879886 handle_irq ( Timer {
880887 register_block : TIMG1 :: regs ( ) ,
881888 _lifetime : PhantomData ,
882- timer : 0 ,
889+ timer : TimerId :: Timer0 ,
883890 tg : 1 ,
884891 } ) ;
885892 }
@@ -890,7 +897,7 @@ mod asynch {
890897 handle_irq ( Timer {
891898 register_block : TIMG0 :: regs ( ) ,
892899 _lifetime : PhantomData ,
893- timer : 1 ,
900+ timer : TimerId :: Timer1 ,
894901 tg : 0 ,
895902 } ) ;
896903 }
@@ -901,7 +908,7 @@ mod asynch {
901908 handle_irq ( Timer {
902909 register_block : TIMG1 :: regs ( ) ,
903910 _lifetime : PhantomData ,
904- timer : 1 ,
911+ timer : TimerId :: Timer1 ,
905912 tg : 1 ,
906913 } ) ;
907914 }
0 commit comments