File tree Expand file tree Collapse file tree 2 files changed +18
-8
lines changed Expand file tree Collapse file tree 2 files changed +18
-8
lines changed Original file line number Diff line number Diff line change @@ -26,6 +26,7 @@ test_mode() {
2626 test_gen i2c1
2727 test_gen rcc
2828 test_gen spi1
29+ test_gen tim2
2930 test_gen tim6
3031}
3132
Original file line number Diff line number Diff line change 1- #![ recursion_limit= "100" ]
1+ #![ recursion_limit = "100" ]
22
33extern crate inflections;
44extern crate svd_parser as svd;
55#[ macro_use]
66extern crate quote;
77extern crate syn;
88
9+ use std:: io;
10+ use std:: io:: Write ;
11+
912use quote:: Tokens ;
1013use syn:: * ;
1114
@@ -23,11 +26,18 @@ pub fn gen_peripheral(p: &Peripheral, d: &Defaults) -> Vec<Tokens> {
2326 . as_ref ( )
2427 . expect ( & format ! ( "{:#?} has no `registers` field" , p) ) ;
2528 for register in registers {
26- let pad = register. address_offset
27- . checked_sub ( offset)
28- . unwrap_or_else ( || {
29- panic ! ( "{:#?} overlapped with other register!" , p)
30- } ) ;
29+ let pad = if let Some ( pad) = register. address_offset
30+ . checked_sub ( offset) {
31+ pad
32+ } else {
33+ writeln ! ( io:: stderr( ) ,
34+ "WARNING {} overlaps with another register at offset \
35+ {}. Ignoring.",
36+ register. name,
37+ register. address_offset)
38+ . ok ( ) ;
39+ continue ;
40+ } ;
3141
3242 if pad != 0 {
3343 let name = Ident :: new ( format ! ( "_reserved{}" , i) ) ;
@@ -38,8 +48,7 @@ pub fn gen_peripheral(p: &Peripheral, d: &Defaults) -> Vec<Tokens> {
3848 i += 1 ;
3949 }
4050
41- let comment =
42- & format ! ( "0x{:02x} - {}" ,
51+ let comment = & format ! ( "0x{:02x} - {}" ,
4352 register. address_offset,
4453 respace( & register. description) ) [ ..] ;
4554
You can’t perform that action at this time.
0 commit comments