change tasks! syntax to resemble struct initialization

This commit is contained in:
Jorge Aparicio 2017-04-25 09:29:29 -05:00
parent 62356da0be
commit 39c111a59a
7 changed files with 40 additions and 8 deletions

View file

@ -699,7 +699,11 @@ pub unsafe trait LessThanOrEqual<RHS> {}
#[macro_export]
macro_rules! tasks {
($device:ident, {
$($task:ident: ($Interrupt:ident, $P:ident, $enabled:expr),)*
$($task:ident: Task {
interrupt:$Interrupt:ident,
priority: $P:ident,
enabled: $enabled:expr,
},)*
}) => {
fn main() {
$crate::critical(|cmax| {

View file

@ -11,7 +11,11 @@ use device::interrupt::Exti0;
// WRONG: Tasks can't have a priority of 0.
// Only idle and init can have a priority of 0.
tasks!(device, {
j1: (Exti0, P0),
j1: Task {
interrupt: Exti0,
priority: P0,
enabled: true,
},
});
fn init(_: P0, _: &C16) {}

View file

@ -10,8 +10,16 @@ use device::interrupt::Exti0;
// WRONG: Two tasks mapped to the same interrupt handler
tasks!(device, {
j1: (Exti0, P1),
j2: (Exti0, P2),
j1: Task {
interrupt: Exti0,
priority: P1,
enabled: true,
},
j2: Task {
interrupt: Exti0,
priority: P2,
enabled: true,
},
});
fn init(_: P0, _: &C16) {}

View file

@ -9,7 +9,11 @@ use device::interrupt::Exti0;
use rtfm::{C16, P0, P1};
tasks!(device, {
j1: (Exti0, P1),
j1: Task {
interrupt: Exti0,
priority: P1,
enabled: true,
},
});
fn init(_: P0, _: &C16) {}

View file

@ -9,7 +9,11 @@ use rtfm::{C1, P0, P1};
use device::interrupt::Exti0;
tasks!(device, {
j1: (Exti0, P1),
j1: Task {
interrupt: Exti0,
priority: P1,
enabled: true,
},
});
// WRONG. `init` must have signature `fn(P0, &C16)`

View file

@ -9,7 +9,11 @@ use cortex_m_srp::{C16, P0, P1, P2};
use device::interrupt::Exti1;
tasks!(device, {
j1: (Exti0, P1),
j1: Task {
interrupt: Exti0,
priority: P1,
enabled: true,
},
});
fn init(_: P0, _: &C16) {}

View file

@ -9,7 +9,11 @@ use cortex_mrtfm::{C16, P0, P1};
use device::interrupt::Exti1;
tasks!(device, {
j1: (Exti0, P1),
j1: Task {
interrupt: Exti0,
priority: P1,
enabled: true,
},
});
fn init(_: P0, _: &C16) {}