Core traits.

This commit is contained in:
Zachary Sunforge
2023-06-13 22:46:34 -07:00
parent 1446bf6162
commit 19b8bc607c
5 changed files with 25 additions and 13 deletions

View File

@ -16,4 +16,7 @@ workspace = true
[dependencies.defmt] [dependencies.defmt]
workspace = true workspace = true
[dependencies.uom] [dependencies.uom]
workspace = true workspace = true
[dependencies.embassy-sync]
workspace = true
optional = true

View File

@ -3,13 +3,25 @@ mod output;
pub use physical::transducer::*; pub use physical::transducer::*;
// --------------------------------------------------------------------------------------------------------------------- #[cfg(feature = "embassy-sync")]
// ----- Publisher ------------------------ use embassy_sync::blocking_mutex::raw::RawMutex;
// --------------------------------------------------------------------------------------------------------------------- #[cfg(feature = "embassy-sync")]
use embassy_sync::pubsub;
#[cfg(feature = "embassy-sync")]
use embassy_sync::pubsub::Subscriber;
#[cfg(feature = "embassy-sync")] #[cfg(feature = "embassy-sync")]
pub trait Publisher { pub trait Publisher {
type Value: Copy; type Value: Copy;
type Mutex: RawMutex;
const CAPACITY: usize;
const NUM_SUBS: usize;
const NUM_PUBS: usize;
fn subscribe(
fn subscribe() -> SubT; &self,
} ) -> Result<
Subscriber<Self::Mutex, Self::Value, Self::CAPACITY, Self::NUM_SUBS, Self::NUM_PUBS>,
pubsub::Error,
>;
}

View File

@ -23,7 +23,4 @@ workspace = true
[dependencies.defmt] [dependencies.defmt]
workspace = true workspace = true
[dependencies.uom] [dependencies.uom]
workspace = true workspace = true
[dependencies.embassy-sync]
workspace = true
optional = true

View File

@ -6,5 +6,5 @@ pub mod output;
pub trait Stateful { pub trait Stateful {
type Value: Copy; type Value: Copy;
fn state() -> Self::Value; fn state(&self) -> Self::Value;
} }

View File

@ -3,5 +3,5 @@ pub trait Output {
//TODO: return result //TODO: return result
//TODO: Make maybe async //TODO: Make maybe async
fn set(setting: Self::Value); fn set(&mut self, setting: Self::Value);
} }