From e2bde8d21acdfb845554d960536bfb94a7bb1f86 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Thu, 27 Apr 2017 19:06:22 -0500 Subject: make the ceiling part of the task signature remove the P.as_ceiling method --- tests/cfail/tasks-wrong-idle.rs | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) (limited to 'tests/cfail/tasks-wrong-idle.rs') diff --git a/tests/cfail/tasks-wrong-idle.rs b/tests/cfail/tasks-wrong-idle.rs index 9c247a9..954fd22 100644 --- a/tests/cfail/tasks-wrong-idle.rs +++ b/tests/cfail/tasks-wrong-idle.rs @@ -6,7 +6,7 @@ extern crate cortex_m_rtfm as rtfm; use device::interrupt::Exti0; -use rtfm::{C16, P0, P1}; +use rtfm::{C0, C1, C16, P0, P1}; tasks!(device, { j1: Task { @@ -18,12 +18,10 @@ tasks!(device, { fn init(_: P0, _: &C16) {} -// WRONG. `idle` must have signature `fn(P0) -> !` -fn idle(_: P1) -> ! { - loop {} -} +// WRONG. `idle` must have signature `fn(P0, C0) -> !` +fn idle(_: P0, _: C0) {} -fn j1(_task: Exti0, _prio: P1) {} +fn j1(_task: Exti0, _prio: P1, _ceil: C1) {} // fake device crate extern crate core; @@ -31,6 +29,7 @@ extern crate cortex_m; mod device { pub mod interrupt { + use cortex_m::ctxt::Context; use cortex_m::interrupt::Nr; extern "C" fn default_handler(_: T) {} @@ -38,14 +37,17 @@ mod device { pub struct Handlers { pub Exti0: extern "C" fn(Exti0), pub Exti1: extern "C" fn(Exti1), + pub Exti2: extern "C" fn(Exti2), } pub struct Exti0; pub struct Exti1; + pub struct Exti2; pub enum Interrupt { Exti0, Exti1, + Exti2, } unsafe impl Nr for Interrupt { @@ -54,9 +56,34 @@ mod device { } } + unsafe impl Context for Exti0 {} + + unsafe impl Nr for Exti0 { + fn nr(&self) -> u8 { + 0 + } + } + + unsafe impl Context for Exti1 {} + + unsafe impl Nr for Exti1 { + fn nr(&self) -> u8 { + 0 + } + } + + unsafe impl Context for Exti2 {} + + unsafe impl Nr for Exti2 { + fn nr(&self) -> u8 { + 0 + } + } + pub const DEFAULT_HANDLERS: Handlers = Handlers { Exti0: default_handler, Exti1: default_handler, + Exti2: default_handler, }; } } -- cgit v1.2.3