Initial node implementation #4

Merged
zack merged 51 commits from develop into master 2023-07-19 18:09:13 +00:00
27 changed files with 474 additions and 44 deletions
Showing only changes of commit 45ec03dfd1 - Show all commits

View File

@ -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::*;
}

View File

@ -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>,
}

View File

@ -1,3 +1,4 @@
#![no_std] #![no_std]
pub mod transducer; pub mod transducer;
pub mod cell;

View File

@ -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()
}
}

View File

@ -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;
} }