diff options
author | 2020-10-11 19:41:57 +0200 | |
---|---|---|
committer | 2020-10-11 20:35:50 +0200 | |
commit | 5b8e6a22ab68e316e11641dedf5b39e20878c7b7 (patch) | |
tree | 1bdc1812ca24203f3b99f381b1e9f8c89f60be24 /macros/src/codegen | |
parent | 524273c96a978299b64e51a9cdcc007585a0f170 (diff) | |
download | rtic-5b8e6a22ab68e316e11641dedf5b39e20878c7b7.tar.gz rtic-5b8e6a22ab68e316e11641dedf5b39e20878c7b7.tar.zst rtic-5b8e6a22ab68e316e11641dedf5b39e20878c7b7.zip |
Fixing examples and tests, modules now import user imports correctly
Fmt
Correct syntax crate
UI test fix
Fix build script
Cleanup
More cleanup
Diffstat (limited to 'macros/src/codegen')
-rw-r--r-- | macros/src/codegen/hardware_tasks.rs | 4 | ||||
-rw-r--r-- | macros/src/codegen/idle.rs | 9 | ||||
-rw-r--r-- | macros/src/codegen/module.rs | 21 | ||||
-rw-r--r-- | macros/src/codegen/pre_init.rs | 6 | ||||
-rw-r--r-- | macros/src/codegen/software_tasks.rs | 3 | ||||
-rw-r--r-- | macros/src/codegen/timer_queue.rs | 3 |
6 files changed, 21 insertions, 25 deletions
diff --git a/macros/src/codegen/hardware_tasks.rs b/macros/src/codegen/hardware_tasks.rs index d8c228e5..ebfa69b9 100644 --- a/macros/src/codegen/hardware_tasks.rs +++ b/macros/src/codegen/hardware_tasks.rs @@ -32,9 +32,7 @@ pub fn codegen( let mut hardware_tasks_imports = vec![]; for (name, task) in &app.hardware_tasks { - let (let_instant, instant) = if extra.monotonic.is_some() { - let m = extra.monotonic(); - + let (let_instant, instant) = if let Some(m) = extra.monotonic { ( Some(quote!(let instant = <#m as rtic::Monotonic>::now();)), Some(quote!(, instant)), diff --git a/macros/src/codegen/idle.rs b/macros/src/codegen/idle.rs index 78fac96b..5e73329f 100644 --- a/macros/src/codegen/idle.rs +++ b/macros/src/codegen/idle.rs @@ -62,8 +62,13 @@ pub fn codegen( root_idle.push(locals); } - root_idle.push(module::codegen(Context::Idle, needs_lt, app,analysis, extra)); - + root_idle.push(module::codegen( + Context::Idle, + needs_lt, + app, + analysis, + extra, + )); let attrs = &idle.attrs; let context = &idle.context; diff --git a/macros/src/codegen/module.rs b/macros/src/codegen/module.rs index 979c63ca..e3b0ed9b 100644 --- a/macros/src/codegen/module.rs +++ b/macros/src/codegen/module.rs @@ -21,9 +21,7 @@ pub fn codegen( let mut lt = None; match ctxt { Context::Init => { - if extra.monotonic.is_some() { - let m = extra.monotonic(); - + if let Some(m) = extra.monotonic { fields.push(quote!( /// System start time = `Instant(0 /* cycles */)` pub start: <#m as rtic::Monotonic>::Instant @@ -67,9 +65,7 @@ pub fn codegen( Context::Idle => {} Context::HardwareTask(..) => { - if extra.monotonic.is_some() { - let m = extra.monotonic(); - + if let Some(m) = extra.monotonic { fields.push(quote!( /// Time at which this handler started executing pub start: <#m as rtic::Monotonic>::Instant @@ -82,9 +78,7 @@ pub fn codegen( } Context::SoftwareTask(..) => { - if extra.monotonic.is_some() { - let m = extra.monotonic(); - + if let Some(m) = extra.monotonic { fields.push(quote!( /// The time at which this task was scheduled to run pub scheduled: <#m as rtic::Monotonic>::Instant @@ -242,11 +236,10 @@ pub fn codegen( })); // Schedule caller - if extra.monotonic.is_some() { + if let Some(m) = extra.monotonic { let instants = util::instants_ident(name); let tq = util::tq_ident(); - let m = extra.monotonic(); let t = util::schedule_t_ident(); items.push(quote!( @@ -288,10 +281,16 @@ pub fn codegen( } if !items.is_empty() { + let user_imports = &app.user_imports; + quote!( #[allow(non_snake_case)] #[doc = #doc] pub mod #name { + #( + #[allow(unused_imports)] + #user_imports + )* #(#items)* } ) diff --git a/macros/src/codegen/pre_init.rs b/macros/src/codegen/pre_init.rs index bc87b1df..02afdf95 100644 --- a/macros/src/codegen/pre_init.rs +++ b/macros/src/codegen/pre_init.rs @@ -12,12 +12,8 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream stmts.push(quote!(rtic::export::interrupt::disable();)); // Populate the FreeQueue - for fq in &app.software_tasks { - // Get the task name - let name = fq.0; - let task = fq.1; + for (name, task) in &app.software_tasks { let cap = task.args.capacity; - let fq_ident = util::fq_ident(name); stmts.push(quote!( diff --git a/macros/src/codegen/software_tasks.rs b/macros/src/codegen/software_tasks.rs index f841a868..9918dea1 100644 --- a/macros/src/codegen/software_tasks.rs +++ b/macros/src/codegen/software_tasks.rs @@ -60,8 +60,7 @@ pub fn codegen( .map(|_| quote!(core::mem::MaybeUninit::uninit())) .collect::<Vec<_>>(); - if extra.monotonic.is_some() { - let m = extra.monotonic(); + if let Some(m) = extra.monotonic { let instants = util::instants_ident(name); let uninit = mk_uninit(); diff --git a/macros/src/codegen/timer_queue.rs b/macros/src/codegen/timer_queue.rs index e7d710c6..ae864364 100644 --- a/macros/src/codegen/timer_queue.rs +++ b/macros/src/codegen/timer_queue.rs @@ -8,7 +8,7 @@ use crate::{analyze::Analysis, check::Extra, codegen::util}; pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream2> { let mut items = vec![]; - if extra.monotonic.is_some() { + if let Some(m) = extra.monotonic { let t = util::schedule_t_ident(); // Enumeration of `schedule`-able tasks @@ -42,7 +42,6 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream // Static variable and resource proxy { let doc = format!("Timer queue"); - let m = extra.monotonic(); let cap = app .software_tasks .iter() |