Poll example

This commit is contained in:
Zachary Sunforge
2023-06-25 17:33:03 -07:00
parent 359b75cba8
commit abfa21ff01
3 changed files with 28 additions and 3 deletions

View File

@ -38,6 +38,7 @@ use physical_ads1256::standard::multiplexer::poll::{
AutocalPoll, AutocalPollStatePub, ModInputOnly,
};
use physical_node::transducer::{Publish, Publisher, StatefulPublisher};
use physical_node::transducer::input::Poll;
const AUTOCAL_CONF: Config = Config {
status: Status::setting(Buffer::Enabled, AutoCal::Enabled, BitOrder::MostSigFirst),
@ -157,5 +158,28 @@ async fn main(spawner: Spawner) {
state: Cell::new(f32::ElectricPotential::new::<volt>(f32::NAN)).into(),
},
});
spawner.spawn(log_task(&inputs.ai1, 1)).unwrap();
spawner.spawn(log_task(&inputs.ai2, 2)).unwrap();
spawner.spawn(log_task(&inputs.ai3, 3)).unwrap();
spawner.spawn(poll_task(&inputs.ai1, 1, Duration::from_secs(5))).unwrap();
spawner.spawn(poll_task(&inputs.ai2, 2, Duration::from_secs(10))).unwrap();
spawner.spawn(poll_task(&inputs.ai3, 3, Duration::from_secs(20))).unwrap();
}
#[embassy_executor::task(pool_size = 3)]
async fn poll_task(input: &'static ExampleInput, input_num: u8, every: Duration,) {
loop {
Timer::after(every).await;
let result = input.poll().await.unwrap().get::<volt>();
info!("ai{} poll result: {} volts", input_num, result);
}
}
#[embassy_executor::task(pool_size = 3)]
async fn log_task(input: &'static ExampleInput, input_num: u8) {
let mut subscriber = input.subscribe().unwrap();
loop {
let msg = subscriber.next_message_pure().await.get::<volt>();
info!("Log task ai{}: {}", input_num, msg);
}
}