mirror of
https://github.com/rtic-rs/rtic.git
synced 2024-11-27 14:04:56 +01:00
Revert async idle
This commit is contained in:
parent
561bef45e7
commit
4488ac0421
2 changed files with 4 additions and 67 deletions
|
@ -1,51 +0,0 @@
|
|||
#![no_main]
|
||||
#![no_std]
|
||||
#![feature(type_alias_impl_trait)]
|
||||
|
||||
use panic_semihosting as _;
|
||||
|
||||
// NOTES:
|
||||
//
|
||||
// - Async tasks cannot have `#[lock_free]` resources, as they can interleve 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, UART0], peripherals = true)]
|
||||
mod app {
|
||||
use cortex_m_semihosting::{debug, hprintln};
|
||||
use systick_monotonic::*;
|
||||
|
||||
#[shared]
|
||||
struct Shared {}
|
||||
|
||||
#[local]
|
||||
struct Local {}
|
||||
|
||||
#[monotonic(binds = SysTick, default = true)]
|
||||
type MyMono = Systick<100>;
|
||||
|
||||
#[init]
|
||||
fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
|
||||
hprintln!("init").unwrap();
|
||||
|
||||
(
|
||||
Shared {},
|
||||
Local {},
|
||||
init::Monotonics(Systick::new(cx.core.SYST, 12_000_000)),
|
||||
)
|
||||
}
|
||||
|
||||
#[idle]
|
||||
async fn idle(_: idle::Context) -> ! {
|
||||
hprintln!("idle");
|
||||
|
||||
for i in 0..2 {
|
||||
monotonics::delay(100.millis()).await;
|
||||
hprintln!("async delay {}").ok();
|
||||
}
|
||||
|
||||
debug::exit(debug::EXIT_SUCCESS);
|
||||
|
||||
loop {}
|
||||
}
|
||||
}
|
|
@ -63,15 +63,10 @@ pub fn codegen(
|
|||
let attrs = &idle.attrs;
|
||||
let context = &idle.context;
|
||||
let stmts = &idle.stmts;
|
||||
let async_ = if idle.is_async {
|
||||
quote!(async)
|
||||
} else {
|
||||
quote!()
|
||||
};
|
||||
let user_idle = Some(quote!(
|
||||
#(#attrs)*
|
||||
#[allow(non_snake_case)]
|
||||
#async_ fn #name(#context: #name::Context) -> ! {
|
||||
fn #name(#context: #name::Context) -> ! {
|
||||
use rtic::Mutex as _;
|
||||
use rtic::mutex::prelude::*;
|
||||
|
||||
|
@ -79,16 +74,9 @@ pub fn codegen(
|
|||
}
|
||||
));
|
||||
|
||||
let call_idle = if idle.is_async {
|
||||
quote!(
|
||||
let idle_task = #name(#name::Context::new(&rtic::export::Priority::new(0)));
|
||||
rtic::export::idle_executor::IdleExecutor::new(idle_task).run();
|
||||
)
|
||||
} else {
|
||||
quote!(#name(
|
||||
#name::Context::new(&rtic::export::Priority::new(0))
|
||||
))
|
||||
};
|
||||
let call_idle = quote!(#name(
|
||||
#name::Context::new(&rtic::export::Priority::new(0))
|
||||
));
|
||||
|
||||
(mod_app, root_idle, user_idle, call_idle)
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue