diff options
Diffstat (limited to 'macros/src/codegen')
-rw-r--r-- | macros/src/codegen/dispatchers.rs | 2 | ||||
-rw-r--r-- | macros/src/codegen/post_init.rs | 5 | ||||
-rw-r--r-- | macros/src/codegen/resources.rs | 16 | ||||
-rw-r--r-- | macros/src/codegen/software_tasks.rs | 8 | ||||
-rw-r--r-- | macros/src/codegen/timer_queue.rs | 4 |
5 files changed, 11 insertions, 24 deletions
diff --git a/macros/src/codegen/dispatchers.rs b/macros/src/codegen/dispatchers.rs index bd4061d1..a76f622e 100644 --- a/macros/src/codegen/dispatchers.rs +++ b/macros/src/codegen/dispatchers.rs @@ -57,7 +57,7 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream ); items.push(quote!( #[doc = #doc] - pub static mut #rq: #rq_ty = #rq_expr; + static mut #rq: #rq_ty = #rq_expr; )); let arms = channel diff --git a/macros/src/codegen/post_init.rs b/macros/src/codegen/post_init.rs index c35c6976..8defc85d 100644 --- a/macros/src/codegen/post_init.rs +++ b/macros/src/codegen/post_init.rs @@ -2,7 +2,7 @@ use proc_macro2::TokenStream as TokenStream2; use quote::quote; use rtic_syntax::ast::App; -use crate::analyze::Analysis; +use crate::{analyze::Analysis, codegen::util}; /// Generates code that runs after `#[init]` returns pub fn codegen(app: &App, analysis: &Analysis) -> Vec<TokenStream2> { @@ -12,13 +12,14 @@ pub fn codegen(app: &App, analysis: &Analysis) -> Vec<TokenStream2> { if analysis.late_resources.len() > 0 { // BTreeSet wrapped in a vector for name in analysis.late_resources.first().unwrap() { + let mangled_name = util::mangle_ident(&name); // If it's live let cfgs = app.late_resources[name].cfgs.clone(); if analysis.locations.get(name).is_some() { // Need to also include the cfgs stmts.push(quote!( #(#cfgs)* - #name.as_mut_ptr().write(late.#name); + #mangled_name.as_mut_ptr().write(late.#name); )); } } diff --git a/macros/src/codegen/resources.rs b/macros/src/codegen/resources.rs index d5ec583e..0db4f728 100644 --- a/macros/src/codegen/resources.rs +++ b/macros/src/codegen/resources.rs @@ -14,12 +14,9 @@ pub fn codegen( Vec<TokenStream2>, // mod_resources -- the `resources` module TokenStream2, - // mod_resources_imports -- the `resources` module imports - Vec<TokenStream2>, ) { let mut mod_app = vec![]; let mut mod_resources = vec![]; - let mut mod_resources_imports = vec![]; for (name, res, expr, _) in app.resources(analysis) { let cfgs = &res.cfgs; @@ -86,12 +83,6 @@ pub fn codegen( ) }; - mod_resources_imports.push(quote!( - #[allow(non_camel_case_types)] - #(#cfgs)* - use super::resources::#name; - )); - mod_app.push(util::impl_mutex( extra, cfgs, @@ -107,11 +98,6 @@ pub fn codegen( let mod_resources = if mod_resources.is_empty() { quote!() } else { - // Also import the resource module - mod_resources_imports.push(quote!( - use super::resources; - )); - quote!(mod resources { use rtic::export::Priority; @@ -119,5 +105,5 @@ pub fn codegen( }) }; - (mod_app, mod_resources, mod_resources_imports) + (mod_app, mod_resources) } diff --git a/macros/src/codegen/software_tasks.rs b/macros/src/codegen/software_tasks.rs index f5757a12..323060c4 100644 --- a/macros/src/codegen/software_tasks.rs +++ b/macros/src/codegen/software_tasks.rs @@ -50,7 +50,7 @@ pub fn codegen( mod_app.push(quote!( /// Queue version of a free-list that keeps track of empty slots in /// the following buffers - pub static mut #fq: #fq_ty = #fq_expr; + static mut #fq: #fq_ty = #fq_expr; )); let ref elems = (0..cap) @@ -64,7 +64,7 @@ pub fn codegen( mod_app.push(quote!( #uninit /// Buffer that holds the instants associated to the inputs of a task - pub static mut #instants: + static mut #instants: [core::mem::MaybeUninit<<#m as rtic::Monotonic>::Instant>; #cap_lit] = [#(#elems,)*]; )); @@ -75,7 +75,7 @@ pub fn codegen( mod_app.push(quote!( #uninit /// Buffer that holds the inputs of a task - pub static mut #inputs_ident: [core::mem::MaybeUninit<#input_ty>; #cap_lit] = + static mut #inputs_ident: [core::mem::MaybeUninit<#input_ty>; #cap_lit] = [#(#elems,)*]; )); @@ -113,7 +113,7 @@ pub fn codegen( #(#attrs)* #(#cfgs)* #[allow(non_snake_case)] - pub fn #name(#(#locals_pat,)* #context: #name::Context #(,#inputs)*) { + fn #name(#(#locals_pat,)* #context: #name::Context #(,#inputs)*) { use rtic::Mutex as _; #(#stmts)* diff --git a/macros/src/codegen/timer_queue.rs b/macros/src/codegen/timer_queue.rs index c898a7fd..c081076e 100644 --- a/macros/src/codegen/timer_queue.rs +++ b/macros/src/codegen/timer_queue.rs @@ -31,7 +31,7 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream #[doc = #doc] #[allow(non_camel_case_types)] #[derive(Clone, Copy)] - pub enum #t { + enum #t { #(#variants,)* } )); @@ -52,7 +52,7 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream items.push(quote!( #[doc = #doc] - pub static mut #tq: #tq_ty = rtic::export::TimerQueue( + static mut #tq: #tq_ty = rtic::export::TimerQueue( rtic::export::BinaryHeap( rtic::export::iBinaryHeap::new() ) |