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"
4040log = { version = " ~0.4" , features = [" std" ] }
4141quote = " 0.3.15"
4242svd-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 ;
24use crate :: svd:: Device ;
35use syn:: Ident ;
46
57use crate :: errors:: * ;
68use crate :: util:: { self , ToSanitizedUpperCase } ;
79use crate :: Target ;
810
9- use crate :: generate:: { interrupt, peripheral, generic } ;
11+ use crate :: generate:: { interrupt, peripheral} ;
1012
1113/// Whole device generation
1214pub fn render (
1315 d : & Device ,
1416 target : Target ,
1517 nightly : bool ,
18+ generic_mod : bool ,
1619 device_x : & mut String ,
1720) -> Result < Vec < Tokens > > {
1821 let mut out = vec ! [ ] ;
@@ -136,7 +139,22 @@ pub fn render(
136139 }
137140 }
138141
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+ }
140158
141159 for p in & d. peripherals {
142160 if target == Target :: CortexM && core_peripherals. contains ( & & * p. name . to_uppercase ( ) ) {
You can’t perform that action at this time.
0 commit comments