aboutsummaryrefslogtreecommitdiff
path: root/macros/src/codegen
diff options
context:
space:
mode:
authorGravatar Emil Fresk <emil.fresk@gmail.com> 2020-10-11 19:41:57 +0200
committerGravatar Emil Fresk <emil.fresk@gmail.com> 2020-10-11 20:35:50 +0200
commit5b8e6a22ab68e316e11641dedf5b39e20878c7b7 (patch)
tree1bdc1812ca24203f3b99f381b1e9f8c89f60be24 /macros/src/codegen
parent524273c96a978299b64e51a9cdcc007585a0f170 (diff)
downloadrtic-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.rs4
-rw-r--r--macros/src/codegen/idle.rs9
-rw-r--r--macros/src/codegen/module.rs21
-rw-r--r--macros/src/codegen/pre_init.rs6
-rw-r--r--macros/src/codegen/software_tasks.rs3
-rw-r--r--macros/src/codegen/timer_queue.rs3
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()