File tree Expand file tree Collapse file tree 6 files changed +215
-231
lines changed Expand file tree Collapse file tree 6 files changed +215
-231
lines changed Original file line number Diff line number Diff line change @@ -40,4 +40,7 @@ inflections = "1.1.0"
40
40
log = { version = " ~0.4" , features = [" std" ] }
41
41
quote = " 0.3.15"
42
42
svd-parser = " 0.7"
43
- syn = " 0.11.11"
43
+
44
+ [dependencies .syn ]
45
+ version = " 0.11.11"
46
+ features = [" full" ]
Original file line number Diff line number Diff line change 1
- use quote:: Tokens ;
1
+ use quote:: { Tokens , ToTokens } ;
2
+ use std:: fs:: File ;
3
+ use std:: io:: Write ;
2
4
use crate :: svd:: Device ;
3
5
use syn:: Ident ;
4
6
5
7
use crate :: errors:: * ;
6
8
use crate :: util:: { self , ToSanitizedUpperCase } ;
7
9
use crate :: Target ;
8
10
9
- use crate :: generate:: { interrupt, peripheral, generic } ;
11
+ use crate :: generate:: { interrupt, peripheral} ;
10
12
11
13
/// Whole device generation
12
14
pub fn render (
13
15
d : & Device ,
14
16
target : Target ,
15
17
nightly : bool ,
18
+ generic_mod : bool ,
16
19
device_x : & mut String ,
17
20
) -> Result < Vec < Tokens > > {
18
21
let mut out = vec ! [ ] ;
@@ -136,7 +139,22 @@ pub fn render(
136
139
}
137
140
}
138
141
139
- out. extend ( generic:: render ( ) ?) ;
142
+ let generic_file = std:: str:: from_utf8 ( include_bytes ! ( "generic.rs" ) ) . unwrap ( ) ;
143
+ if generic_mod {
144
+ writeln ! ( File :: create( "generic.rs" ) . unwrap( ) , "{}" , generic_file) . unwrap ( ) ;
145
+ } else {
146
+ let mut tokens = Tokens :: new ( ) ;
147
+ ( syn:: parse_crate ( generic_file) ?) . to_tokens ( & mut tokens) ;
148
+
149
+ out. push ( quote ! {
150
+ #[ allow( unused_imports) ]
151
+ use generic:: * ;
152
+ ///Common register and bit access and modify traits
153
+ pub mod generic {
154
+ #tokens
155
+ }
156
+ } ) ;
157
+ }
140
158
141
159
for p in & d. peripherals {
142
160
if target == Target :: CortexM && core_peripherals. contains ( & & * p. name . to_uppercase ( ) ) {
You can’t perform that action at this time.
0 commit comments