diff --git a/Cargo.toml b/Cargo.toml index fecb0f3..2391b7f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ members = [ ] [workspace.package] -version = "0.3.0" +version = "0.3.1" edition = "2021" repository = "https://git.bfpower.io/BFPOWER/physical" readme = "README.md" @@ -76,6 +76,9 @@ version = "0.1.*" [workspace.dependencies.embassy-executor] version = "0.5.*" features = ["defmt", "arch-cortex-m", "integrated-timers", "executor-interrupt", "executor-thread"] +[workspace.dependencies.embassy-usb] +version = "0.2.*" +features = ["defmt"] [workspace.dependencies.embassy-stm32] version = "0.1.*" features = ["defmt", "unstable-pac"] diff --git a/node/Cargo.toml b/node/Cargo.toml index 9f2d8ff..c94acde 100644 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -7,6 +7,10 @@ repository.workspace = true readme.workspace = true license.workspace = true +[features] +comms = [] +stm32 = ["embassy-stm32", "physical/stm32"] + [dependencies.physical] path = ".." [dependencies.embedded-hal] @@ -17,3 +21,6 @@ workspace = true workspace = true [dependencies.uom] workspace = true +[dependencies.embassy-stm32] +workspace = true +optional = true diff --git a/node/src/comms.rs b/node/src/comms.rs new file mode 100644 index 0000000..d08b29b --- /dev/null +++ b/node/src/comms.rs @@ -0,0 +1,17 @@ +pub trait Sender { + async fn send(&mut self, msg: &[u8]) -> Result<(), Reset>; +} + +pub trait Receiver { + async fn receive(&mut self, buffer: &mut [u8]) -> Result<(), Reset>; +} + +//TODO: Replace with ! +pub struct Never; + +/// Communication errors indicates either: +/// Our connection was already disconnected, in which case we should reset and wait for new connection to made. +/// or +/// There was an unexpected, irrecoverable error in communication, in which case we don't want to enter a terminal error +/// safe mode, because there is no indication the actual control is broken, so all we can really do is reset the connection. +pub struct Reset; \ No newline at end of file diff --git a/node/src/lib.rs b/node/src/lib.rs index 5439644..409644a 100644 --- a/node/src/lib.rs +++ b/node/src/lib.rs @@ -1,3 +1,8 @@ #![no_std] +#[cfg(feature = "comms")] +pub mod comms; +#[cfg(feature = "stm32")] +pub mod stm32; + pub use physical::CriticalError; \ No newline at end of file diff --git a/node/src/stm32/mod.rs b/node/src/stm32/mod.rs new file mode 100644 index 0000000..e69de29