Created input types.
This commit is contained in:
@ -1,4 +1,7 @@
|
|||||||
#![feature(async_fn_in_trait)]
|
#![feature(async_fn_in_trait)]
|
||||||
|
|
||||||
pub mod cell;
|
mod transducer;
|
||||||
mod transducer;
|
|
||||||
|
pub mod cell {
|
||||||
|
pub use physical::cell::*;
|
||||||
|
}
|
||||||
|
@ -1,2 +1,30 @@
|
|||||||
|
use crate::cell::CellView;
|
||||||
|
#[cfg(feature = "embassy-sync")]
|
||||||
|
use embassy_sync::blocking_mutex::raw::RawMutex;
|
||||||
|
#[cfg(feature = "embassy-sync")]
|
||||||
|
use embassy_sync::pubsub::PubSubChannel;
|
||||||
pub use physical::transducer::input::*;
|
pub use physical::transducer::input::*;
|
||||||
|
|
||||||
|
#[cfg(feature = "embassy-sync")]
|
||||||
|
pub struct ChannelInput<
|
||||||
|
T: Copy,
|
||||||
|
MutexT: RawMutex,
|
||||||
|
const CAPACITY: usize,
|
||||||
|
const NUM_SUBS: usize,
|
||||||
|
const NUM_PUBS: usize,
|
||||||
|
> {
|
||||||
|
channel: PubSubChannel<MutexT, T, CAPACITY, NUM_SUBS, NUM_PUBS>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "embassy-sync")]
|
||||||
|
pub struct StatefulChannelInput<
|
||||||
|
'a,
|
||||||
|
T: Copy,
|
||||||
|
MutexT: RawMutex,
|
||||||
|
const CAPACITY: usize,
|
||||||
|
const NUM_SUBS: usize,
|
||||||
|
const NUM_PUBS: usize,
|
||||||
|
> {
|
||||||
|
pub state_cell: CellView<'a, T>,
|
||||||
|
channel: PubSubChannel<MutexT, T, CAPACITY, NUM_SUBS, NUM_PUBS>,
|
||||||
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
#![no_std]
|
#![no_std]
|
||||||
|
|
||||||
pub mod transducer;
|
pub mod transducer;
|
||||||
|
pub mod cell;
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
use crate::cell::CellView;
|
||||||
|
use crate::transducer::Stateful;
|
||||||
|
|
||||||
|
pub struct StatefulInput<'a, T: Copy> {
|
||||||
|
pub state_cell: CellView<'a, T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, T: Copy> Stateful for StatefulInput<'a, T> {
|
||||||
|
type Value = T;
|
||||||
|
|
||||||
|
#[inline(always)]
|
||||||
|
fn state_cell(&self) -> CellView<'a, Self::Value> {
|
||||||
|
self.state_cell
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn state(&self) -> Self::Value {
|
||||||
|
self.state_cell.get()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
use crate::cell::CellView;
|
||||||
|
|
||||||
pub mod input;
|
pub mod input;
|
||||||
pub mod output;
|
pub mod output;
|
||||||
|
|
||||||
@ -6,5 +8,7 @@ pub mod output;
|
|||||||
pub trait Stateful {
|
pub trait Stateful {
|
||||||
type Value: Copy;
|
type Value: Copy;
|
||||||
|
|
||||||
|
fn state_cell(&self) -> CellView<Self::Value>;
|
||||||
|
|
||||||
fn state(&self) -> Self::Value;
|
fn state(&self) -> Self::Value;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user