diff options
author | 2019-04-16 21:54:19 +0200 | |
---|---|---|
committer | 2019-04-21 18:00:22 +0200 | |
commit | e865cbb2e59a95962d7e4d45c31f9ff1e4ba6579 (patch) | |
tree | 20ee060345b788d3f05c7174672abdead0b935bd /examples/shared-with-init.rs | |
parent | c4bad51deb75efc033431be513e264c3247b64cb (diff) | |
download | rtic-e865cbb2e59a95962d7e4d45c31f9ff1e4ba6579.tar.gz rtic-e865cbb2e59a95962d7e4d45c31f9ff1e4ba6579.tar.zst rtic-e865cbb2e59a95962d7e4d45c31f9ff1e4ba6579.zip |
book: resources shared with init must also be `Send`
Diffstat (limited to 'examples/shared-with-init.rs')
-rw-r--r-- | examples/shared-with-init.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/examples/shared-with-init.rs b/examples/shared-with-init.rs new file mode 100644 index 00000000..5ddd2cc3 --- /dev/null +++ b/examples/shared-with-init.rs @@ -0,0 +1,38 @@ +//! `examples/shared-with-init.rs` + +#![deny(unsafe_code)] +#![deny(warnings)] +#![no_main] +#![no_std] + +extern crate panic_halt; + +use cortex_m_semihosting::debug; +use lm3s6965::Interrupt; +use rtfm::app; + +pub struct MustBeSend; + +#[app(device = lm3s6965)] +const APP: () = { + static mut SHARED: Option<MustBeSend> = None; + + #[init(resources = [SHARED])] + fn init() { + // this `message` will be sent to task `UART0` + let message = MustBeSend; + *resources.SHARED = Some(message); + + rtfm::pend(Interrupt::UART0); + } + + #[interrupt(resources = [SHARED])] + fn UART0() { + if let Some(message) = resources.SHARED.take() { + // `message` has been received + drop(message); + + debug::exit(debug::EXIT_SUCCESS); + } + } +}; |