mirror of
https://github.com/rtic-rs/rtic.git
synced 2024-11-25 21:19:35 +01:00
async_util
This commit is contained in:
parent
5df1f59f47
commit
5b1c0dbb0a
3 changed files with 15 additions and 4 deletions
|
@ -82,6 +82,8 @@ version = "0.5.2"
|
|||
trybuild = "1"
|
||||
|
||||
[features]
|
||||
# experimental support for async/await
|
||||
async = []
|
||||
# used for testing this crate; do not use in applications
|
||||
__v7 =[]
|
||||
__min_r1_43 =[]
|
||||
|
|
|
@ -91,8 +91,10 @@ mod app {
|
|||
async fn task(mut cx: foo::Context<'static>) {
|
||||
hprintln!("foo task").ok();
|
||||
|
||||
hprintln!("delay long time").ok();
|
||||
timer_delay(&mut cx.resources.systick, 5000000).await;
|
||||
hprintln!("prepare two futures").ok();
|
||||
let d1 = timer_delay(&mut cx.resources.systick, 5000000);
|
||||
let d2 = timer_delay(&mut cx.resources.systick, 1000000);
|
||||
|
||||
hprintln!("foo task resumed").ok();
|
||||
|
||||
hprintln!("delay short time").ok();
|
||||
|
@ -182,6 +184,7 @@ impl<F: Future + 'static> Task<F> {
|
|||
use core::cmp::Ordering;
|
||||
use heapless::binary_heap::{BinaryHeap, Max};
|
||||
use heapless::consts::U8;
|
||||
use heapless::Vec;
|
||||
|
||||
pub enum State {
|
||||
Started,
|
||||
|
@ -217,7 +220,6 @@ pub struct Systick {
|
|||
syst: cortex_m::peripheral::SYST,
|
||||
state: State,
|
||||
queue: BinaryHeap<Timeout, U8, Max>,
|
||||
// waker: Option<Waker>,
|
||||
}
|
||||
|
||||
//=============
|
||||
|
@ -260,7 +262,7 @@ impl<'a, T: Mutex<T = Systick>> Future for Timer<'a, T> {
|
|||
fn timer_delay<'a, T: Mutex<T = Systick>>(systick: &'a mut T, t: u32) -> Timer<'a, T> {
|
||||
hprintln!("timer_delay {}", t);
|
||||
Timer {
|
||||
request: Some(t),
|
||||
request: heapless,
|
||||
systick,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,9 +34,16 @@
|
|||
#![deny(rust_2018_idioms)]
|
||||
#![deny(warnings)]
|
||||
#![no_std]
|
||||
// async currently requires nightly
|
||||
#![cfg_attr(feature = "async", feature(const_fn))]
|
||||
#![cfg_attr(feature = "async", feature(type_alias_impl_trait))]
|
||||
|
||||
use core::ops::Sub;
|
||||
|
||||
// currently requires nightly
|
||||
#[cfg(feature = "async")]
|
||||
pub mod async_util;
|
||||
|
||||
use cortex_m::{
|
||||
interrupt::Nr,
|
||||
peripheral::{CBP, CPUID, DCB, DWT, FPB, FPU, ITM, MPU, NVIC, SCB, TPIU},
|
||||
|
|
Loading…
Reference in a new issue