aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Per Lindgren <per.lindgren@ltu.se> 2023-01-07 17:59:39 +0100
committerGravatar Henrik Tjäder <henrik@tjaders.com> 2023-03-01 00:33:24 +0100
commit9a4f97ca5ebf19e6612115db5c763d0d61dd28a1 (patch)
tree1f37d247f715ad3d5215aa7de3aa6d4eb94a7027
parent5606ba3cf38c80be5d3e9c88ad4da9982b114851 (diff)
downloadrtic-9a4f97ca5ebf19e6612115db5c763d0d61dd28a1.tar.gz
rtic-9a4f97ca5ebf19e6612115db5c763d0d61dd28a1.tar.zst
rtic-9a4f97ca5ebf19e6612115db5c763d0d61dd28a1.zip
more examples
-rw-r--r--Cargo.toml11
-rw-r--r--examples/async-delay.no_rs (renamed from examples/async-delay.rs)8
-rw-r--r--examples/async-infinite-loop.no_rs (renamed from examples/async-infinite-loop.rs)8
-rw-r--r--examples/async-task-multiple-prios.rs73
-rw-r--r--examples/async-task.rs6
-rw-r--r--examples/async-timeout.no_rs (renamed from examples/async-timeout.rs)0
-rw-r--r--examples/big-struct-opt.rs34
-rw-r--r--examples/binds.rs4
-rw-r--r--examples/cancel-reschedule.no_rs (renamed from examples/cancel-reschedule.rs)0
-rw-r--r--examples/capacity.no_rs (renamed from examples/capacity.rs)0
-rw-r--r--examples/cfg-whole-task.no_rs (renamed from examples/cfg-whole-task.rs)0
-rw-r--r--examples/common.no_rs (renamed from examples/common.rs)0
-rw-r--r--examples/complex.rs3
-rw-r--r--examples/declared_locals.rs8
-rw-r--r--examples/destructure.rs11
-rw-r--r--examples/extern_binds.rs4
-rw-r--r--examples/extern_spawn.rs19
-rw-r--r--examples/generics.rs4
-rw-r--r--examples/hardware.rs4
-rw-r--r--examples/not-sync.rs32
-rw-r--r--examples/only-shared-access.rs9
-rw-r--r--examples/periodic-at.no_rs (renamed from examples/periodic-at.rs)0
-rw-r--r--examples/periodic-at2.no_rs (renamed from examples/periodic-at2.rs)0
-rw-r--r--examples/periodic.no_rs (renamed from examples/periodic.rs)0
-rw-r--r--examples/peripherals-taken.rs4
-rw-r--r--examples/pool.no_rs (renamed from examples/pool.rs)12
-rw-r--r--examples/preempt.rs11
-rw-r--r--examples/ramfunc.rs10
-rw-r--r--examples/resource-user-struct.rs4
-rw-r--r--examples/schedule.no_rs (renamed from examples/schedule.rs)0
-rw-r--r--examples/shared.rs4
-rw-r--r--examples/smallest.rs4
-rw-r--r--examples/spawn.rs7
-rw-r--r--examples/static.rs7
-rw-r--r--examples/t-binds.rs4
-rw-r--r--examples/t-cfg-resources.rs3
-rw-r--r--examples/t-htask-main.rs4
-rw-r--r--examples/t-idle-main.rs4
-rw-r--r--examples/t-late-not-send.rs3
-rw-r--r--examples/t-schedule.no_rs (renamed from examples/t-schedule.rs)0
-rw-r--r--examples/t-spawn.no_rs (renamed from examples/t-spawn.rs)11
-rw-r--r--examples/task.rs11
42 files changed, 191 insertions, 150 deletions
diff --git a/Cargo.toml b/Cargo.toml
index d995de45..cad92919 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -49,10 +49,7 @@ codegen-units = 1
lto = true
[workspace]
-members = [
- "macros",
- "xtask",
-]
+members = ["macros", "xtask"]
# do not optimize proc-macro deps or build scripts
[profile.dev.build-override]
@@ -76,6 +73,6 @@ lm3s6965 = { git = "https://github.com/japaric/lm3s6965" }
[features]
test-critical-section = ["cortex-m/critical-section-single-core"]
-[[example]]
-name = "pool"
-required-features = ["test-critical-section"]
+# [[example]]
+# name = "pool"
+# required-features = ["test-critical-section"]
diff --git a/examples/async-delay.rs b/examples/async-delay.no_rs
index 7802bda4..fb478c3f 100644
--- a/examples/async-delay.rs
+++ b/examples/async-delay.no_rs
@@ -19,18 +19,14 @@ mod app {
type MyMono = Systick<100>;
#[init]
- fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(cx: init::Context) -> (Shared, Local) {
hprintln!("init").unwrap();
foo::spawn().ok();
bar::spawn().ok();
baz::spawn().ok();
- (
- Shared {},
- Local {},
- init::Monotonics(Systick::new(cx.core.SYST, 12_000_000)),
- )
+ (Shared {}, Local {})
}
#[idle]
diff --git a/examples/async-infinite-loop.rs b/examples/async-infinite-loop.no_rs
index 7615818d..a95f9986 100644
--- a/examples/async-infinite-loop.rs
+++ b/examples/async-infinite-loop.no_rs
@@ -19,16 +19,12 @@ mod app {
type MyMono = Systick<100>;
#[init]
- fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(cx: init::Context) -> (Shared, Local) {
hprintln!("init").unwrap();
foo::spawn().ok();
- (
- Shared {},
- Local {},
- init::Monotonics(Systick::new(cx.core.SYST, 12_000_000)),
- )
+ (Shared {}, Local {})
}
#[idle]
diff --git a/examples/async-task-multiple-prios.rs b/examples/async-task-multiple-prios.rs
index 3e197987..2f3a0f7b 100644
--- a/examples/async-task-multiple-prios.rs
+++ b/examples/async-task-multiple-prios.rs
@@ -6,14 +6,13 @@ use panic_semihosting as _;
// NOTES:
//
-// - Async tasks cannot have `#[lock_free]` resources, as they can interleve and each async
+// - Async tasks cannot have `#[lock_free]` resources, as they can interleave and each async
// task can have a mutable reference stored.
// - Spawning an async task equates to it being polled once.
-#[rtic::app(device = lm3s6965, dispatchers = [SSI0, QEI0, UART0, UART1], peripherals = true)]
+#[rtic::app(device = lm3s6965, dispatchers = [SSI0, QEI0])]
mod app {
use cortex_m_semihosting::{debug, hprintln};
- use systick_monotonic::*;
#[shared]
struct Shared {
@@ -24,53 +23,71 @@ mod app {
#[local]
struct Local {}
- #[monotonic(binds = SysTick, default = true)]
- type MyMono = Systick<100>;
-
#[init]
- fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(cx: init::Context) -> (Shared, Local) {
hprintln!("init").unwrap();
- normal_task::spawn().ok();
- async_task::spawn().ok();
- normal_task2::spawn().ok();
+ async_task1::spawn().ok();
async_task2::spawn().ok();
+ async_task3::spawn().ok();
+ async_task4::spawn().ok();
- (
- Shared { a: 0, b: 0 },
- Local {},
- init::Monotonics(Systick::new(cx.core.SYST, 12_000_000)),
- )
+ (Shared { a: 0, b: 0 }, Local {})
}
#[idle]
fn idle(_: idle::Context) -> ! {
- // debug::exit(debug::EXIT_SUCCESS);
loop {
- // hprintln!("idle");
- cortex_m::asm::wfi(); // put the MCU in sleep mode until interrupt occurs
+ hprintln!("idle");
+ debug::exit(debug::EXIT_SUCCESS);
}
}
#[task(priority = 1, shared = [a, b])]
- fn normal_task(_cx: normal_task::Context) {
- hprintln!("hello from normal 1").ok();
+ async fn async_task1(mut cx: async_task1::Context) {
+ hprintln!(
+ "hello from async 1 a {}",
+ cx.shared.a.lock(|a| {
+ *a += 1;
+ *a
+ })
+ )
+ .ok();
}
#[task(priority = 1, shared = [a, b])]
- async fn async_task(_cx: async_task::Context) {
- hprintln!("hello from async 1").ok();
-
- debug::exit(debug::EXIT_SUCCESS);
+ async fn async_task2(mut cx: async_task2::Context) {
+ hprintln!(
+ "hello from async 2 a {}",
+ cx.shared.a.lock(|a| {
+ *a += 1;
+ *a
+ })
+ )
+ .ok();
}
#[task(priority = 2, shared = [a, b])]
- fn normal_task2(_cx: normal_task2::Context) {
- hprintln!("hello from normal 2").ok();
+ async fn async_task3(mut cx: async_task3::Context) {
+ hprintln!(
+ "hello from async 3 a {}",
+ cx.shared.a.lock(|a| {
+ *a += 1;
+ *a
+ })
+ )
+ .ok();
}
#[task(priority = 2, shared = [a, b])]
- async fn async_task2(_cx: async_task2::Context) {
- hprintln!("hello from async 2").ok();
+ async fn async_task4(mut cx: async_task4::Context) {
+ hprintln!(
+ "hello from async 4 a {}",
+ cx.shared.a.lock(|a| {
+ *a += 1;
+ *a
+ })
+ )
+ .ok();
}
}
diff --git a/examples/async-task.rs b/examples/async-task.rs
index 012e95ee..210a8651 100644
--- a/examples/async-task.rs
+++ b/examples/async-task.rs
@@ -34,9 +34,9 @@ mod app {
#[idle(shared = [a])]
fn idle(_: idle::Context) -> ! {
- // debug::exit(debug::EXIT_SUCCESS);
loop {
- // hprintln!("idle");
+ hprintln!("idle");
+ debug::exit(debug::EXIT_SUCCESS);
cortex_m::asm::wfi(); // put the MCU in sleep mode until interrupt occurs
}
}
@@ -51,8 +51,6 @@ mod app {
async fn async_task(cx: async_task::Context) {
let async_task::SharedResources { a: _, .. } = cx.shared;
hprintln!("hello from async").ok();
-
- debug::exit(debug::EXIT_SUCCESS);
}
#[task(priority = 2, shared = [a])]
diff --git a/examples/async-timeout.rs b/examples/async-timeout.no_rs
index 3f68df74..3f68df74 100644
--- a/examples/async-timeout.rs
+++ b/examples/async-timeout.no_rs
diff --git a/examples/big-struct-opt.rs b/examples/big-struct-opt.rs
index bbc2535a..4bf93b2a 100644
--- a/examples/big-struct-opt.rs
+++ b/examples/big-struct-opt.rs
@@ -5,6 +5,7 @@
#![no_main]
#![no_std]
+#![feature(type_alias_impl_trait)]
use panic_semihosting as _;
@@ -20,11 +21,12 @@ impl BigStruct {
}
}
-#[rtic::app(device = lm3s6965)]
+#[rtic::app(device = lm3s6965, dispatchers = [SSI0])]
mod app {
use super::BigStruct;
use core::mem::MaybeUninit;
- use cortex_m_semihosting::debug;
+ use cortex_m_semihosting::{debug, hprintln};
+ use lm3s6965::Interrupt;
#[shared]
struct Shared {
@@ -35,25 +37,43 @@ mod app {
struct Local {}
#[init(local = [bs: MaybeUninit<BigStruct> = MaybeUninit::uninit()])]
- fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(cx: init::Context) -> (Shared, Local) {
let big_struct = unsafe {
// write directly into the static storage
cx.local.bs.as_mut_ptr().write(BigStruct::new());
&mut *cx.local.bs.as_mut_ptr()
};
- debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
-
+ rtic::pend(Interrupt::UART0);
+ async_task::spawn().unwrap();
(
Shared {
// assign the reference so we can use the resource
big_struct,
},
Local {},
- init::Monotonics(),
)
}
+ #[idle]
+ fn idle(_: idle::Context) -> ! {
+ loop {
+ hprintln!("idle");
+ debug::exit(debug::EXIT_SUCCESS);
+ }
+ }
+
#[task(binds = UART0, shared = [big_struct])]
- fn task(_: task::Context) {}
+ fn uart0(mut cx: uart0::Context) {
+ cx.shared
+ .big_struct
+ .lock(|b| hprintln!("uart0 data:{:?}", &b.data[0..5]).unwrap());
+ }
+
+ #[task(shared = [big_struct], priority = 2)]
+ async fn async_task(mut cx: async_task::Context) {
+ cx.shared
+ .big_struct
+ .lock(|b| hprintln!("async_task data:{:?}", &b.data[0..5]).unwrap());
+ }
}
diff --git a/examples/binds.rs b/examples/binds.rs
index 56565cbe..ec25ccca 100644
--- a/examples/binds.rs
+++ b/examples/binds.rs
@@ -20,12 +20,12 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
rtic::pend(Interrupt::UART0);
hprintln!("init").unwrap();
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
#[idle]
diff --git a/examples/cancel-reschedule.rs b/examples/cancel-reschedule.no_rs
index a38a9c4e..a38a9c4e 100644
--- a/examples/cancel-reschedule.rs
+++ b/examples/cancel-reschedule.no_rs
diff --git a/examples/capacity.rs b/examples/capacity.no_rs
index a6172698..a6172698 100644
--- a/examples/capacity.rs
+++ b/examples/capacity.no_rs
diff --git a/examples/cfg-whole-task.rs b/examples/cfg-whole-task.no_rs
index f41866db..f41866db 100644
--- a/examples/cfg-whole-task.rs
+++ b/examples/cfg-whole-task.no_rs
diff --git a/examples/common.rs b/examples/common.no_rs
index 1fe671e6..1fe671e6 100644
--- a/examples/common.rs
+++ b/examples/common.no_rs
diff --git a/examples/complex.rs b/examples/complex.rs
index e5cf6dbe..df9c8622 100644
--- a/examples/complex.rs
+++ b/examples/complex.rs
@@ -24,7 +24,7 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
hprintln!("init").unwrap();
(
@@ -34,7 +34,6 @@ mod app {
s4: 0,
},
Local {},
- init::Monotonics(),
)
}
diff --git a/examples/declared_locals.rs b/examples/declared_locals.rs
index 52d354bc..79001aa5 100644
--- a/examples/declared_locals.rs
+++ b/examples/declared_locals.rs
@@ -7,7 +7,7 @@
use panic_semihosting as _;
-#[rtic::app(device = lm3s6965, dispatchers = [UART0])]
+#[rtic::app(device = lm3s6965)]
mod app {
use cortex_m_semihosting::debug;
@@ -18,13 +18,13 @@ mod app {
struct Local {}
#[init(local = [a: u32 = 0])]
- fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(cx: init::Context) -> (Shared, Local) {
// Locals in `#[init]` have 'static lifetime
let _a: &'static mut u32 = cx.local.a;
debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
#[idle(local = [a: u32 = 0])]
@@ -35,7 +35,7 @@ mod app {
loop {}
}
- #[task(local = [a: u32 = 0])]
+ #[task(binds = UART0, local = [a: u32 = 0])]
fn foo(cx: foo::Context) {
// Locals in `#[task]`s have a local lifetime
let _a: &mut u32 = cx.local.a;
diff --git a/examples/destructure.rs b/examples/destructure.rs
index 6019c225..89336bfd 100644
--- a/examples/destructure.rs
+++ b/examples/destructure.rs
@@ -4,6 +4,7 @@
#![deny(warnings)]
#![no_main]
#![no_std]
+#![feature(type_alias_impl_trait)]
use panic_semihosting as _;
@@ -22,11 +23,11 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
foo::spawn().unwrap();
bar::spawn().unwrap();
- (Shared { a: 0, b: 0, c: 0 }, Local {}, init::Monotonics())
+ (Shared { a: 0, b: 1, c: 2 }, Local {})
}
#[idle]
@@ -37,7 +38,7 @@ mod app {
// Direct destructure
#[task(shared = [&a, &b, &c])]
- fn foo(cx: foo::Context) {
+ async fn foo(cx: foo::Context) {
let a = cx.shared.a;
let b = cx.shared.b;
let c = cx.shared.c;
@@ -47,8 +48,8 @@ mod app {
// De-structure-ing syntax
#[task(shared = [&a, &b, &c])]
- fn bar(cx: bar::Context) {
- let bar::SharedResources { a, b, c } = cx.shared;
+ async fn bar(cx: bar::Context) {
+ let bar::SharedResources { a, b, c, .. } = cx.shared;
hprintln!("bar: a = {}, b = {}, c = {}", a, b, c).unwrap();
}
diff --git a/examples/extern_binds.rs b/examples/extern_binds.rs
index 4dc6633c..c9fc1086 100644
--- a/examples/extern_binds.rs
+++ b/examples/extern_binds.rs
@@ -26,12 +26,12 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
rtic::pend(Interrupt::UART0);
hprintln!("init").unwrap();
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
#[idle]
diff --git a/examples/extern_spawn.rs b/examples/extern_spawn.rs
index 7f9b5a5f..2d9d7b63 100644
--- a/examples/extern_spawn.rs
+++ b/examples/extern_spawn.rs
@@ -4,17 +4,16 @@
#![deny(warnings)]
#![no_main]
#![no_std]
+#![feature(type_alias_impl_trait)]
use cortex_m_semihosting::{debug, hprintln};
use panic_semihosting as _;
// Free function implementing the spawnable task `foo`.
-fn foo(_c: app::foo::Context, x: i32, y: u32) {
- hprintln!("foo {}, {}", x, y).unwrap();
- if x == 2 {
- debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
- }
- app::foo::spawn(2, 3).unwrap();
+// Notice, you need to indicate an anonymous lifetime <'a_>
+async fn foo(_c: app::foo::Context<'_>) {
+ hprintln!("foo").unwrap();
+ debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
}
#[rtic::app(device = lm3s6965, dispatchers = [SSI0])]
@@ -28,14 +27,14 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
- foo::spawn(1, 2).unwrap();
+ fn init(_: init::Context) -> (Shared, Local) {
+ foo::spawn().unwrap();
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
extern "Rust" {
#[task()]
- fn foo(_c: foo::Context, _x: i32, _y: u32);
+ async fn foo(_c: foo::Context);
}
}
diff --git a/examples/generics.rs b/examples/generics.rs
index 72b861ba..a73b00fb 100644
--- a/examples/generics.rs
+++ b/examples/generics.rs
@@ -23,11 +23,11 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
rtic::pend(Interrupt::UART0);
rtic::pend(Interrupt::UART1);
- (Shared { shared: 0 }, Local {}, init::Monotonics())
+ (Shared { shared: 0 }, Local {})
}
#[task(binds = UART0, shared = [shared], local = [state: u32 = 0])]
diff --git a/examples/hardware.rs b/examples/hardware.rs
index 60632247..8e4f423b 100644
--- a/examples/hardware.rs
+++ b/examples/hardware.rs
@@ -19,14 +19,14 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
// Pends the UART0 interrupt but its handler won't run until *after*
// `init` returns because interrupts are disabled
rtic::pend(Interrupt::UART0); // equivalent to NVIC::pend
hprintln!("init").unwrap();
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
#[idle]
diff --git a/examples/not-sync.rs b/examples/not-sync.rs
index aa79ad56..eb5c9f8f 100644
--- a/examples/not-sync.rs
+++ b/examples/not-sync.rs
@@ -4,12 +4,14 @@
#![deny(warnings)]
#![no_main]
#![no_std]
+#![feature(type_alias_impl_trait)]
use core::marker::PhantomData;
use panic_semihosting as _;
pub struct NotSync {
_0: PhantomData<*const ()>,
+ data: u32,
}
unsafe impl Send for NotSync {}
@@ -18,7 +20,7 @@ unsafe impl Send for NotSync {}
mod app {
use super::NotSync;
use core::marker::PhantomData;
- use cortex_m_semihosting::debug;
+ use cortex_m_semihosting::{debug, hprintln};
#[shared]
struct Shared {
@@ -29,25 +31,37 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
- debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
+ fn init(_: init::Context) -> (Shared, Local) {
+ hprintln!("init").unwrap();
+ foo::spawn().unwrap();
+ bar::spawn().unwrap();
(
Shared {
- shared: NotSync { _0: PhantomData },
+ shared: NotSync {
+ _0: PhantomData,
+ data: 13,
+ },
},
Local {},
- init::Monotonics(),
)
}
+ #[idle]
+ fn idle(_: idle::Context) -> ! {
+ debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
+ loop {}
+ }
+
#[task(shared = [&shared])]
- fn foo(c: foo::Context) {
- let _: &NotSync = c.shared.shared;
+ async fn foo(c: foo::Context) {
+ let shared: &NotSync = c.shared.shared;
+ hprintln!("foo a {}", shared.data).unwrap();
}
#[task(shared = [&shared])]
- fn bar(c: bar::Context) {
- let _: &NotSync = c.shared.shared;
+ async fn bar(c: bar::Context) {
+ let shared: &NotSync = c.shared.shared;
+ hprintln!("foo a {}", shared.data).unwrap();
}
}
diff --git a/examples/only-shared-access.rs b/examples/only-shared-access.rs
index 8b0a77ef..b506e441 100644
--- a/examples/only-shared-access.rs
+++ b/examples/only-shared-access.rs
@@ -4,6 +4,7 @@
#![deny(warnings)]
#![no_main]
#![no_std]
+#![feature(type_alias_impl_trait)]
use panic_semihosting as _;
@@ -20,15 +21,15 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
foo::spawn().unwrap();
bar::spawn().unwrap();
- (Shared { key: 0xdeadbeef }, Local {}, init::Monotonics())
+ (Shared { key: 0xdeadbeef }, Local {})
}
#[task(shared = [&key])]
- fn foo(cx: foo::Context) {
+ async fn foo(cx: foo::Context) {
let key: &u32 = cx.shared.key;
hprintln!("foo(key = {:#x})", key).unwrap();
@@ -36,7 +37,7 @@ mod app {
}
#[task(priority = 2, shared = [&key])]
- fn bar(cx: bar::Context) {
+ async fn bar(cx: bar::Context) {
hprintln!("bar(key = {:#x})", cx.shared.key).unwrap();
}
}
diff --git a/examples/periodic-at.rs b/examples/periodic-at.no_rs
index ca68ed5e..ca68ed5e 100644
--- a/examples/periodic-at.rs
+++ b/examples/periodic-at.no_rs
diff --git a/examples/periodic-at2.rs b/examples/periodic-at2.no_rs
index ec9adcc5..ec9adcc5 100644
--- a/examples/periodic-at2.rs
+++ b/examples/periodic-at2.no_rs
diff --git a/examples/periodic.rs b/examples/periodic.no_rs
index 2f9e8e6a..2f9e8e6a 100644
--- a/examples/periodic.rs
+++ b/examples/periodic.no_rs
diff --git a/examples/peripherals-taken.rs b/examples/peripherals-taken.rs
index d542c0e6..9b014667 100644
--- a/examples/peripherals-taken.rs
+++ b/examples/peripherals-taken.rs
@@ -16,10 +16,10 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
assert!(cortex_m::Peripherals::take().is_none());
debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
}
diff --git a/examples/pool.rs b/examples/pool.no_rs
index 5aadd24c..fb8589ad 100644
--- a/examples/pool.rs
+++ b/examples/pool.no_rs
@@ -31,17 +31,17 @@ mod app {
struct Local {}
#[init(local = [memory: [u8; 512] = [0; 512]])]
- fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(cx: init::Context) -> (Shared, Local) {
// Increase the capacity of the memory pool by ~4
P::grow(cx.local.memory);
rtic::pend(Interrupt::I2C0);
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
#[task(binds = I2C0, priority = 2)]
- fn i2c0(_: i2c0::Context) {
+ async fn i2c0(_: i2c0::Context) {
// claim a memory block, initialize it and ..
let x = P::alloc().unwrap().init([0u8; 128]);
@@ -55,7 +55,7 @@ mod app {
}
#[task]
- fn foo(_: foo::Context, _x: Box<P>) {
+ async fn foo(_: foo::Context, _x: Box<P>) {
// explicitly return the block to the pool
drop(_x);
@@ -63,8 +63,8 @@ mod app {
}
#[task(priority = 2)]
- fn bar(_: bar::Context, _x: Box<P>) {
+ async fn bar(_: bar::Context, _x: Box<P>) {
// this is done automatically so we can omit the call to `drop`
- // drop(x);
+ // drop(_x);
}
}
diff --git a/examples/preempt.rs b/examples/preempt.rs
index d0c8cc7d..aad91253 100644
--- a/examples/preempt.rs
+++ b/examples/preempt.rs
@@ -2,6 +2,7 @@
#![no_main]
#![no_std]
+#![feature(type_alias_impl_trait)]
use panic_semihosting as _;
use rtic::app;
@@ -17,14 +18,14 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
foo::spawn().unwrap();
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
#[task(priority = 1)]
- fn foo(_: foo::Context) {
+ async fn foo(_: foo::Context) {
hprintln!("foo - start").unwrap();
baz::spawn().unwrap();
hprintln!("foo - end").unwrap();
@@ -32,12 +33,12 @@ mod app {
}
#[task(priority = 2)]
- fn bar(_: bar::Context) {
+ async fn bar(_: bar::Context) {
hprintln!(" bar").unwrap();
}
#[task(priority = 2)]
- fn baz(_: baz::Context) {
+ async fn baz(_: baz::Context) {
hprintln!(" baz - start").unwrap();
bar::spawn().unwrap();
hprintln!(" baz - end").unwrap();
diff --git a/examples/ramfunc.rs b/examples/ramfunc.rs
index b3b8012c..dd1f76e5 100644
--- a/examples/ramfunc.rs
+++ b/examples/ramfunc.rs
@@ -3,7 +3,7 @@
#![deny(warnings)]
#![no_main]
#![no_std]
-
+#![feature(type_alias_impl_trait)]
use panic_semihosting as _;
#[rtic::app(
@@ -24,15 +24,15 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
foo::spawn().unwrap();
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
#[inline(never)]
#[task]
- fn foo(_: foo::Context) {
+ async fn foo(_: foo::Context) {
hprintln!("foo").unwrap();
debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
@@ -42,7 +42,7 @@ mod app {
#[inline(never)]
#[link_section = ".data.bar"]
#[task(priority = 2)]
- fn bar(_: bar::Context) {
+ async fn bar(_: bar::Context) {
foo::spawn().unwrap();
}
}
diff --git a/examples/resource-user-struct.rs b/examples/resource-user-struct.rs
index ae1918d0..a4478ce6 100644
--- a/examples/resource-user-struct.rs
+++ b/examples/resource-user-struct.rs
@@ -29,11 +29,11 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
rtic::pend(Interrupt::UART0);
rtic::pend(Interrupt::UART1);
- (Shared { shared: 0 }, Local {}, init::Monotonics())
+ (Shared { shared: 0 }, Local {})
}
// `shared` cannot be accessed from this context
diff --git a/examples/schedule.rs b/examples/schedule.no_rs
index 5bad5a30..5bad5a30 100644
--- a/examples/schedule.rs
+++ b/examples/schedule.no_rs
diff --git a/examples/shared.rs b/examples/shared.rs
index d87dca52..fdc1b1c5 100644
--- a/examples/shared.rs
+++ b/examples/shared.rs
@@ -23,11 +23,11 @@ mod app {
struct Local {}
#[init(local = [q: Queue<u32, 5> = Queue::new()])]
- fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(cx: init::Context) -> (Shared, Local) {
let (p, c) = cx.local.q.split();
// Initialization of shared resources
- (Shared { p, c }, Local {}, init::Monotonics())
+ (Shared { p, c }, Local {})
}
#[idle(shared = [c])]
diff --git a/examples/smallest.rs b/examples/smallest.rs
index b121fcff..5071392d 100644
--- a/examples/smallest.rs
+++ b/examples/smallest.rs
@@ -17,8 +17,8 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
}
diff --git a/examples/spawn.rs b/examples/spawn.rs
index 2db1ab8a..266ace86 100644
--- a/examples/spawn.rs
+++ b/examples/spawn.rs
@@ -4,6 +4,7 @@
#![deny(warnings)]
#![no_main]
#![no_std]
+#![feature(type_alias_impl_trait)]
use panic_semihosting as _;
@@ -18,15 +19,15 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
hprintln!("init").unwrap();
foo::spawn().unwrap();
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
#[task]
- fn foo(_: foo::Context) {
+ async fn foo(_: foo::Context) {
hprintln!("foo").unwrap();
debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
diff --git a/examples/static.rs b/examples/static.rs
index c9aa6046..9c981db3 100644
--- a/examples/static.rs
+++ b/examples/static.rs
@@ -4,6 +4,7 @@
#![deny(warnings)]
#![no_main]
#![no_std]
+#![feature(type_alias_impl_trait)]
use panic_semihosting as _;
@@ -22,14 +23,14 @@ mod app {
}
#[init(local = [q: Queue<u32, 5> = Queue::new()])]
- fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(cx: init::Context) -> (Shared, Local) {
// q has 'static life-time so after the split and return of `init`
// it will continue to exist and be allocated
let (p, c) = cx.local.q.split();
foo::spawn().unwrap();
- (Shared {}, Local { p, c }, init::Monotonics())
+ (Shared {}, Local { p, c })
}
#[idle(local = [c])]
@@ -50,7 +51,7 @@ mod app {
}
#[task(local = [p, state: u32 = 0])]
- fn foo(c: foo::Context) {
+ async fn foo(c: foo::Context) {
*c.local.state += 1;
// Lock-free access to the same underlying queue!
diff --git a/examples/t-binds.rs b/examples/t-binds.rs
index 12479c0a..785348bc 100644
--- a/examples/t-binds.rs
+++ b/examples/t-binds.rs
@@ -18,10 +18,10 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
// Cortex-M exception
diff --git a/examples/t-cfg-resources.rs b/examples/t-cfg-resources.rs
index 99c97ba5..0174f33e 100644
--- a/examples/t-cfg-resources.rs
+++ b/examples/t-cfg-resources.rs
@@ -20,7 +20,7 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
(
@@ -29,7 +29,6 @@ mod app {
x: 0,
},
Local {},
- init::Monotonics(),
)
}
diff --git a/examples/t-htask-main.rs b/examples/t-htask-main.rs
index 37189faf..0595e9fc 100644
--- a/examples/t-htask-main.rs
+++ b/examples/t-htask-main.rs
@@ -16,10 +16,10 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
rtic::pend(lm3s6965::Interrupt::UART0);
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
#[task(binds = UART0)]
diff --git a/examples/t-idle-main.rs b/examples/t-idle-main.rs
index 1adc9bf0..307ccb20 100644
--- a/examples/t-idle-main.rs
+++ b/examples/t-idle-main.rs
@@ -16,8 +16,8 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
- (Shared {}, Local {}, init::Monotonics())
+ fn init(_: init::Context) -> (Shared, Local) {
+ (Shared {}, Local {})
}
#[idle]
diff --git a/examples/t-late-not-send.rs b/examples/t-late-not-send.rs
index 06aedaa2..0fbf237b 100644
--- a/examples/t-late-not-send.rs
+++ b/examples/t-late-not-send.rs
@@ -27,14 +27,13 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
(
Shared {
x: NotSend { _0: PhantomData },
y: None,
},
Local {},
- init::Monotonics(),
)
}
diff --git a/examples/t-schedule.rs b/examples/t-schedule.no_rs
index 5ec42087..5ec42087 100644
--- a/examples/t-schedule.rs
+++ b/examples/t-schedule.no_rs
diff --git a/examples/t-spawn.rs b/examples/t-spawn.no_rs
index 2bd771d7..dad0c83a 100644
--- a/examples/t-spawn.rs
+++ b/examples/t-spawn.no_rs
@@ -4,6 +4,7 @@
#![deny(warnings)]
#![no_main]
#![no_std]
+#![feature(type_alias_impl_trait)]
use panic_semihosting as _;
@@ -18,14 +19,14 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
let _: Result<(), ()> = foo::spawn();
let _: Result<(), u32> = bar::spawn(0);
let _: Result<(), (u32, u32)> = baz::spawn(0, 1);
debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
#[idle]
@@ -54,15 +55,15 @@ mod app {
}
#[task]
- fn foo(_: foo::Context) {
+ async fn foo(_: foo::Context) {
let _: Result<(), ()> = foo::spawn();
let _: Result<(), u32> = bar::spawn(0);
let _: Result<(), (u32, u32)> = baz::spawn(0, 1);
}
#[task]
- fn bar(_: bar::Context, _x: u32) {}
+ async fn bar(_: bar::Context, _x: u32) {}
#[task]
- fn baz(_: baz::Context, _x: u32, _y: u32) {}
+ async fn baz(_: baz::Context, _x: u32, _y: u32) {}
}
diff --git a/examples/task.rs b/examples/task.rs
index 2c53aa23..fe1408b4 100644
--- a/examples/task.rs
+++ b/examples/task.rs
@@ -4,6 +4,7 @@
#![deny(warnings)]
#![no_main]
#![no_std]
+#![feature(type_alias_impl_trait)]
use panic_semihosting as _;
@@ -18,14 +19,14 @@ mod app {
struct Local {}
#[init]
- fn init(_: init::Context) -> (Shared, Local, init::Monotonics) {
+ fn init(_: init::Context) -> (Shared, Local) {
foo::spawn().unwrap();
- (Shared {}, Local {}, init::Monotonics())
+ (Shared {}, Local {})
}
#[task]
- fn foo(_: foo::Context) {
+ async fn foo(_: foo::Context) {
hprintln!("foo - start").unwrap();
// spawns `bar` onto the task scheduler
@@ -43,14 +44,14 @@ mod app {
}
#[task]
- fn bar(_: bar::Context) {
+ async fn bar(_: bar::Context) {
hprintln!("bar").unwrap();
debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
}
#[task(priority = 2)]
- fn baz(_: baz::Context) {
+ async fn baz(_: baz::Context) {
hprintln!("baz").unwrap();
}
}