Merge exti macros into one and use simpler recursion
This commit is contained in:
		
							parent
							
								
									56a902c19f
								
							
						
					
					
						commit
						a95c78b8bd
					
				@ -242,7 +242,6 @@ for chip in chips.values():
 | 
				
			|||||||
                    use super::*;
 | 
					                    use super::*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    impl_exti_irq!({','.join(exti_interrupts)});
 | 
					                    impl_exti_irq!({','.join(exti_interrupts)});
 | 
				
			||||||
                    impl_exti_init!({','.join(exti_interrupts)});
 | 
					 | 
				
			||||||
                }}
 | 
					                }}
 | 
				
			||||||
            }}
 | 
					            }}
 | 
				
			||||||
            mod interrupt_vector {{
 | 
					            mod interrupt_vector {{
 | 
				
			||||||
 | 
				
			|||||||
@ -215,29 +215,19 @@ impl_exti!(EXTI14, 14);
 | 
				
			|||||||
impl_exti!(EXTI15, 15);
 | 
					impl_exti!(EXTI15, 15);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
macro_rules! impl_exti_irq {
 | 
					macro_rules! impl_exti_irq {
 | 
				
			||||||
    ($e:ident) => {
 | 
					    ($($e:ident),+) => {
 | 
				
			||||||
 | 
					        /// safety: must be called only once
 | 
				
			||||||
 | 
					        pub(crate) unsafe fn init() {
 | 
				
			||||||
 | 
					            $(
 | 
				
			||||||
 | 
					                crate::interrupt::$e::steal().enable();
 | 
				
			||||||
 | 
					            )+
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $(
 | 
				
			||||||
            #[interrupt]
 | 
					            #[interrupt]
 | 
				
			||||||
            unsafe fn $e() {
 | 
					            unsafe fn $e() {
 | 
				
			||||||
                crate::exti::on_irq()
 | 
					                crate::exti::on_irq()
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
    };
 | 
					        )+
 | 
				
			||||||
 | 
					 | 
				
			||||||
    ($e:ident, $($es:ident),+) => {
 | 
					 | 
				
			||||||
        impl_exti_irq! { $e }
 | 
					 | 
				
			||||||
        impl_exti_irq! { $($es),+ }
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
macro_rules! impl_exti_init {
 | 
					 | 
				
			||||||
    ($e:ident) => {
 | 
					 | 
				
			||||||
        crate::interrupt::$e::steal().enable();
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ($e:ident, $($es:ident),+) => {
 | 
					 | 
				
			||||||
        /// safety: must be called only once
 | 
					 | 
				
			||||||
        pub(crate) unsafe fn init() {
 | 
					 | 
				
			||||||
            impl_exti_init! { $e }
 | 
					 | 
				
			||||||
            impl_exti_init! { $($es),+ }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user