diff options
| author | Emil Fresk <emil.fresk@gmail.com> | 2023-03-29 20:43:27 +0200 |
|---|---|---|
| committer | Emil Fresk <emil.fresk@gmail.com> | 2023-03-29 20:46:24 +0200 |
| commit | 323b847bf692a0054647536a6495f20373f6d9c7 (patch) | |
| tree | b5bcd9047d6feac883098ee4f85e4aced8c51a72 /rtic-macros/src/analyze.rs | |
| parent | 3a0e2ac92438c818f7f12d894c576de9af9fcc01 (diff) | |
Adding a limit that async HALs can read and have as max prio
Diffstat (limited to 'rtic-macros/src/analyze.rs')
| -rw-r--r-- | rtic-macros/src/analyze.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/rtic-macros/src/analyze.rs b/rtic-macros/src/analyze.rs index 65774f6..2227308 100644 --- a/rtic-macros/src/analyze.rs +++ b/rtic-macros/src/analyze.rs @@ -11,6 +11,7 @@ use syn::Ident; pub struct Analysis { parent: analyze::Analysis, pub interrupts: BTreeMap<Priority, (Ident, Dispatcher)>, + pub max_async_prio: Option<u8>, } impl ops::Deref for Analysis { @@ -42,8 +43,16 @@ pub fn app(analysis: analyze::Analysis, app: &App) -> Analysis { .map(|p| (p, available_interrupt.pop().expect("UNREACHABLE"))) .collect(); + let max_async_prio = app + .hardware_tasks + .iter() + .map(|(_, task)| task.args.priority) + .min() + .map(|v| v - 1); // One less than the smallest HW task + Analysis { parent: analysis, interrupts, + max_async_prio, } } |
