From 1c244a995d54332649c1643aa0a3178f169406e4 Mon Sep 17 00:00:00 2001 From: Per Lindgren Date: Fri, 23 Oct 2020 10:35:56 +0200 Subject: move dispatchers to app argument --- macros/src/analyze.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'macros/src/analyze.rs') diff --git a/macros/src/analyze.rs b/macros/src/analyze.rs index 2301167..6b26138 100644 --- a/macros/src/analyze.rs +++ b/macros/src/analyze.rs @@ -3,7 +3,7 @@ use std::collections::{BTreeMap, BTreeSet}; use rtic_syntax::{ analyze::{self, Priority}, - ast::App, + ast::{App, ExternInterrupt}, P, }; use syn::Ident; @@ -11,7 +11,7 @@ use syn::Ident; /// Extend the upstream `Analysis` struct with our field pub struct Analysis { parent: P, - pub interrupts: BTreeMap, + pub interrupts: BTreeMap, } impl ops::Deref for Analysis { @@ -22,23 +22,23 @@ impl ops::Deref for Analysis { } } -// Assign an `extern` interrupt to each priority level +// Assign an interrupt to each priority level pub fn app(analysis: P, app: &App) -> P { - let mut interrupts = BTreeMap::new(); + // the set of priorities (each priority only once) let priorities = app .software_tasks .values() .map(|task| task.args.priority) .collect::>(); - if !priorities.is_empty() { - interrupts = priorities - .iter() - .cloned() - .rev() - .zip(app.extern_interrupts.keys().cloned()) - .collect(); - } + // map from priorities to interrupts (holding name and attributes) + let interrupts: BTreeMap = priorities + .iter() + .cloned() + .rev() + .zip(&app.args.extern_interrupts) + .map(|(p, (id, ext))| (p, (id.clone(), ext.clone()))) + .collect(); P::new(Analysis { parent: analysis, -- cgit v1.2.3