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() {
26
26
test_gen i2c1
27
27
test_gen rcc
28
28
test_gen spi1
29
+ test_gen tim2
29
30
test_gen tim6
30
31
}
31
32
Original file line number Diff line number Diff line change 1
- #![ recursion_limit= "100" ]
1
+ #![ recursion_limit = "100" ]
2
2
3
3
extern crate inflections;
4
4
extern crate svd_parser as svd;
5
5
#[ macro_use]
6
6
extern crate quote;
7
7
extern crate syn;
8
8
9
+ use std:: io;
10
+ use std:: io:: Write ;
11
+
9
12
use quote:: Tokens ;
10
13
use syn:: * ;
11
14
@@ -23,11 +26,18 @@ pub fn gen_peripheral(p: &Peripheral, d: &Defaults) -> Vec<Tokens> {
23
26
. as_ref ( )
24
27
. expect ( & format ! ( "{:#?} has no `registers` field" , p) ) ;
25
28
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
+ } ;
31
41
32
42
if pad != 0 {
33
43
let name = Ident :: new ( format ! ( "_reserved{}" , i) ) ;
@@ -38,8 +48,7 @@ pub fn gen_peripheral(p: &Peripheral, d: &Defaults) -> Vec<Tokens> {
38
48
i += 1 ;
39
49
}
40
50
41
- let comment =
42
- & format ! ( "0x{:02x} - {}" ,
51
+ let comment = & format ! ( "0x{:02x} - {}" ,
43
52
register. address_offset,
44
53
respace( & register. description) ) [ ..] ;
45
54
You can’t perform that action at this time.
0 commit comments