diff options
| author | Emil Fresk <emil.fresk@gmail.com> | 2021-03-20 08:38:37 +0100 |
|---|---|---|
| committer | Emil Fresk <emil.fresk@gmail.com> | 2021-03-22 08:24:18 +0100 |
| commit | 3adda3c7664b92e0a14ceb446a2082933647ba52 (patch) | |
| tree | 6f80d0de1f86889954bb14c42a4383912d7ca478 /examples/t-schedule.rs | |
| parent | 53c407017f50d0fde17d38afed714b2fcb54194b (diff) | |
Updated schedule example with all combinations
Diffstat (limited to 'examples/t-schedule.rs')
| -rw-r--r-- | examples/t-schedule.rs | 93 |
1 files changed, 78 insertions, 15 deletions
diff --git a/examples/t-schedule.rs b/examples/t-schedule.rs index 6b6245e..890b316 100644 --- a/examples/t-schedule.rs +++ b/examples/t-schedule.rs @@ -26,30 +26,93 @@ mod app { let mono = DwtSystick::new(&mut dcb, dwt, systick, 8_000_000); - let a: Result<foo::MyMono::SpawnHandle, ()> = foo::spawn_after(Seconds(1_u32)); - if let Ok(handle) = a { - let _: Result<foo::MyMono::SpawnHandle, ()> = handle.reschedule_after(Seconds(1_u32)); - } + // Task without message passing - let b: Result<bar::MyMono::SpawnHandle, u32> = bar::spawn_after(Seconds(2_u32), 0); - if let Ok(handle) = b { - let _: Result<u32, ()> = handle.cancel(); - } + // Not default + let _: Result<foo::MyMono::SpawnHandle, ()> = foo::MyMono::spawn_at(MyMono::now()); + let handle: Result<foo::MyMono::SpawnHandle, ()> = foo::MyMono::spawn_after(Seconds(1_u32)); + let _: Result<foo::MyMono::SpawnHandle, ()> = + handle.unwrap().reschedule_after(Seconds(1_u32)); + + let handle: Result<foo::MyMono::SpawnHandle, ()> = foo::MyMono::spawn_after(Seconds(1_u32)); + let _: Result<foo::MyMono::SpawnHandle, ()> = handle.unwrap().reschedule_at(MyMono::now()); + + let handle: Result<foo::MyMono::SpawnHandle, ()> = foo::MyMono::spawn_after(Seconds(1_u32)); + let _: Result<(), ()> = handle.unwrap().cancel(); + + // Using default + let _: Result<foo::SpawnHandle, ()> = foo::spawn_at(MyMono::now()); + let handle: Result<foo::SpawnHandle, ()> = foo::spawn_after(Seconds(1_u32)); + let _: Result<foo::SpawnHandle, ()> = handle.unwrap().reschedule_after(Seconds(1_u32)); + + let handle: Result<foo::SpawnHandle, ()> = foo::spawn_after(Seconds(1_u32)); + let _: Result<foo::SpawnHandle, ()> = handle.unwrap().reschedule_at(MyMono::now()); + + let handle: Result<foo::SpawnHandle, ()> = foo::spawn_after(Seconds(1_u32)); + let _: Result<(), ()> = handle.unwrap().cancel(); + + // Task with single message passing + + // Not default + let _: Result<bar::MyMono::SpawnHandle, u32> = bar::MyMono::spawn_at(MyMono::now(), 0); + let handle: Result<bar::MyMono::SpawnHandle, u32> = + bar::MyMono::spawn_after(Seconds(1_u32), 0); + let _: Result<bar::MyMono::SpawnHandle, ()> = + handle.unwrap().reschedule_after(Seconds(1_u32)); + + let handle: Result<bar::MyMono::SpawnHandle, u32> = + bar::MyMono::spawn_after(Seconds(1_u32), 0); + let _: Result<bar::MyMono::SpawnHandle, ()> = handle.unwrap().reschedule_at(MyMono::now()); + + let handle: Result<bar::MyMono::SpawnHandle, u32> = + bar::MyMono::spawn_after(Seconds(1_u32), 0); + let _: Result<u32, ()> = handle.unwrap().cancel(); + // Using default + let _: Result<bar::SpawnHandle, u32> = bar::spawn_at(MyMono::now(), 0); + let handle: Result<bar::SpawnHandle, u32> = bar::spawn_after(Seconds(1_u32), 0); + let _: Result<bar::SpawnHandle, ()> = handle.unwrap().reschedule_after(Seconds(1_u32)); + + let handle: Result<bar::SpawnHandle, u32> = bar::spawn_after(Seconds(1_u32), 0); + let _: Result<bar::SpawnHandle, ()> = handle.unwrap().reschedule_at(MyMono::now()); + + let handle: Result<bar::SpawnHandle, u32> = bar::spawn_after(Seconds(1_u32), 0); + let _: Result<u32, ()> = handle.unwrap().cancel(); + + // Task with multiple message passing + + // Not default let _: Result<baz::MyMono::SpawnHandle, (u32, u32)> = - baz::spawn_after(Seconds(3_u32), 0, 1); + baz::MyMono::spawn_at(MyMono::now(), 0, 1); + let handle: Result<baz::MyMono::SpawnHandle, (u32, u32)> = + baz::MyMono::spawn_after(Seconds(1_u32), 0, 1); + let _: Result<baz::MyMono::SpawnHandle, ()> = + handle.unwrap().reschedule_after(Seconds(1_u32)); + + let handle: Result<baz::MyMono::SpawnHandle, (u32, u32)> = + baz::MyMono::spawn_after(Seconds(1_u32), 0, 1); + let _: Result<baz::MyMono::SpawnHandle, ()> = handle.unwrap().reschedule_at(MyMono::now()); + + let handle: Result<baz::MyMono::SpawnHandle, (u32, u32)> = + baz::MyMono::spawn_after(Seconds(1_u32), 0, 1); + let _: Result<(u32, u32), ()> = handle.unwrap().cancel(); + + // Using default + let _: Result<baz::SpawnHandle, (u32, u32)> = baz::spawn_at(MyMono::now(), 0, 1); + let handle: Result<baz::SpawnHandle, (u32, u32)> = baz::spawn_after(Seconds(1_u32), 0, 1); + let _: Result<baz::SpawnHandle, ()> = handle.unwrap().reschedule_after(Seconds(1_u32)); + + let handle: Result<baz::SpawnHandle, (u32, u32)> = baz::spawn_after(Seconds(1_u32), 0, 1); + let _: Result<baz::SpawnHandle, ()> = handle.unwrap().reschedule_at(MyMono::now()); + + let handle: Result<baz::SpawnHandle, (u32, u32)> = baz::spawn_after(Seconds(1_u32), 0, 1); + let _: Result<(u32, u32), ()> = handle.unwrap().cancel(); (init::LateResources {}, init::Monotonics(mono)) } #[idle] fn idle(_: idle::Context) -> ! { - let _: Result<foo::MyMono::SpawnHandle, ()> = foo::spawn_at(MyMono::now() + Seconds(3_u32)); - let _: Result<bar::MyMono::SpawnHandle, u32> = - bar::spawn_at(MyMono::now() + Seconds(4_u32), 0); - let _: Result<baz::MyMono::SpawnHandle, (u32, u32)> = - baz::spawn_at(MyMono::now() + Seconds(5_u32), 0, 1); - loop { cortex_m::asm::nop(); } |
