aboutsummaryrefslogtreecommitdiff
path: root/macros/src/codegen/pre_init.rs
diff options
context:
space:
mode:
authorGravatar Emil Fresk <emil.fresk@gmail.com> 2022-09-21 21:33:31 +0200
committerGravatar Emil Fresk <emil.fresk@gmail.com> 2022-09-24 14:07:33 +0200
commit1341cc5bbe912d3cafcdd87f30ff75627829f0f5 (patch)
treed0a9569a2cf34cb59c0932709d219ecfac56cfad /macros/src/codegen/pre_init.rs
parentb1d499a74416ce03bde2d88b6944f64a5cd55f26 (diff)
downloadrtic-1341cc5bbe912d3cafcdd87f30ff75627829f0f5.tar.gz
rtic-1341cc5bbe912d3cafcdd87f30ff75627829f0f5.tar.zst
rtic-1341cc5bbe912d3cafcdd87f30ff75627829f0f5.zip
Broke out async dispatchers into their own place
Diffstat (limited to 'macros/src/codegen/pre_init.rs')
-rw-r--r--macros/src/codegen/pre_init.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/macros/src/codegen/pre_init.rs b/macros/src/codegen/pre_init.rs
index 3d541a47..5708c0f1 100644
--- a/macros/src/codegen/pre_init.rs
+++ b/macros/src/codegen/pre_init.rs
@@ -15,6 +15,10 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
// Populate the FreeQueue
for (name, task) in &app.software_tasks {
+ if task.is_async {
+ continue;
+ }
+
let cap = task.args.capacity;
let fq_ident = util::fq_ident(name);
@@ -38,7 +42,11 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
stmts.push(quote!(let _ = #rt_err::#interrupt::#name;));
}
- let interrupt_ids = analysis.interrupts.iter().map(|(p, (id, _))| (p, id));
+ let interrupt_ids = analysis
+ .interrupts_normal
+ .iter()
+ .map(|(p, (id, _))| (p, id))
+ .chain(analysis.interrupts_async.iter().map(|(p, (id, _))| (p, id)));
// Unmask interrupts and set their priorities
for (&priority, name) in interrupt_ids.chain(app.hardware_tasks.values().filter_map(|task| {