File tree Expand file tree Collapse file tree 1 file changed +19
-3
lines changed Expand file tree Collapse file tree 1 file changed +19
-3
lines changed Original file line number Diff line number Diff line change @@ -187,7 +187,8 @@ pub fn interrupt(
187
187
interrupts. into_iter ( ) . map ( |( _, v) | v) . collect :: < Vec < _ > > ( ) ;
188
188
interrupts. sort_by_key ( |i| i. value ) ;
189
189
190
- let mut arms = vec ! [ ] ;
190
+ let mut nr_arms = vec ! [ ] ;
191
+ let mut from_arms = vec ! [ ] ;
191
192
let mut elements = vec ! [ ] ;
192
193
let mut names = vec ! [ ] ;
193
194
let mut variants = vec ! [ ] ;
@@ -223,10 +224,14 @@ pub fn interrupt(
223
224
#name_uc,
224
225
} ) ;
225
226
226
- arms . push ( quote ! {
227
+ nr_arms . push ( quote ! {
227
228
Interrupt :: #name_uc => #value,
228
229
} ) ;
229
230
231
+ from_arms. push ( quote ! {
232
+ #value => Interrupt :: #name_uc,
233
+ } ) ;
234
+
230
235
elements. push ( quote ! ( Some ( #name_uc) ) ) ;
231
236
names. push ( name_uc) ;
232
237
}
@@ -335,6 +340,7 @@ pub fn interrupt(
335
340
336
341
mod_items. push ( quote ! {
337
342
/// Enumeration of all the interrupts
343
+ #[ derive( Debug ) ]
338
344
pub enum Interrupt {
339
345
#( #variants) *
340
346
}
@@ -343,7 +349,17 @@ pub fn interrupt(
343
349
#[ inline]
344
350
fn nr( & self ) -> u8 {
345
351
match * self {
346
- #( #arms) *
352
+ #( #nr_arms) *
353
+ }
354
+ }
355
+ }
356
+
357
+ impl Interrupt {
358
+ #[ inline( always) ]
359
+ pub fn from( nr: u8 ) -> Interrupt {
360
+ match nr {
361
+ #( #from_arms) *
362
+ _ => unreachable!( ) ,
347
363
}
348
364
}
349
365
}
You can’t perform that action at this time.
0 commit comments