diff options
author | 2021-03-11 19:12:02 +0100 | |
---|---|---|
committer | 2021-03-13 10:50:56 +0100 | |
commit | 1087f2ee64a5be1aedf3b702ccb5d86cc64708d9 (patch) | |
tree | 312e099ce019124a40345949491475aaac26a7ce /examples/t-schedule.rs | |
parent | 4bdc1879122d6389adab0bebb14795954c491aaf (diff) | |
download | rtic-1087f2ee64a5be1aedf3b702ccb5d86cc64708d9.tar.gz rtic-1087f2ee64a5be1aedf3b702ccb5d86cc64708d9.tar.zst rtic-1087f2ee64a5be1aedf3b702ccb5d86cc64708d9.zip |
Added interface for cancel/reschedule
Use wrapping add for marker
No need to store handle to queue
Remove unnecessary `SpawnHandle::new`
Fix test
Updated interface to follow proposal
Diffstat (limited to 'examples/t-schedule.rs')
-rw-r--r-- | examples/t-schedule.rs | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/examples/t-schedule.rs b/examples/t-schedule.rs index bd0ab668..6b6245eb 100644 --- a/examples/t-schedule.rs +++ b/examples/t-schedule.rs @@ -26,18 +26,29 @@ mod app { let mono = DwtSystick::new(&mut dcb, dwt, systick, 8_000_000); - let _: Result<(), ()> = foo::spawn_after(Seconds(1_u32)); - let _: Result<(), u32> = bar::spawn_after(Seconds(2_u32), 0); - let _: Result<(), (u32, u32)> = baz::spawn_after(Seconds(3_u32), 0, 1); + 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)); + } + + let b: Result<bar::MyMono::SpawnHandle, u32> = bar::spawn_after(Seconds(2_u32), 0); + if let Ok(handle) = b { + let _: Result<u32, ()> = handle.cancel(); + } + + let _: Result<baz::MyMono::SpawnHandle, (u32, u32)> = + baz::spawn_after(Seconds(3_u32), 0, 1); (init::LateResources {}, init::Monotonics(mono)) } #[idle] fn idle(_: idle::Context) -> ! { - let _: Result<(), ()> = foo::spawn_at(MyMono::now() + Seconds(3_u32)); - let _: Result<(), u32> = bar::spawn_at(MyMono::now() + Seconds(4_u32), 0); - let _: Result<(), (u32, u32)> = baz::spawn_at(MyMono::now() + Seconds(5_u32), 0, 1); + 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(); |