Project setup

This commit is contained in:
Zachary Sunforge
2023-06-13 21:09:57 -07:00
parent 8355cc1f24
commit 1446bf6162
19 changed files with 152 additions and 4 deletions

View File

@ -6,6 +6,10 @@ members = [
# Device types
"node",
"commander",
# Peripherals
"peripherals/standalone-ads1256/*",
# Peripheral components
"peripheral-components/ads1256/*",
# Examples
"examples/playground"
]
@ -17,7 +21,6 @@ repository = "https://git.bfpower.io/BFPOWER/physical"
readme = "README.md"
license = "MIT"
[workspace.dependencies]
#----- no-std ----------------------------------
# Math
[workspace.dependencies.libm]
@ -55,6 +58,13 @@ version = "0.7.*"
[workspace.dependencies.panic-probe]
version = "0.3.*"
features = ["print-defmt"]
# BFPOWER Drivers
[workspace.dependencies.ads1256-types]
git = "https://git.bfpower.io/BFPOWER/bfpower-drivers.git"
features = ["defmt"]
[workspace.dependencies.ads1256]
git = "https://git.bfpower.io/BFPOWER/bfpower-drivers.git"
features = ["uom"]
# Embassy
[workspace.dependencies.embassy-futures]
version = "0.1.*"

View File

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

View File

@ -1 +1,4 @@
mod cell;
#![feature(async_fn_in_trait)]
pub mod cell;
mod transducer;

View File

@ -0,0 +1,2 @@
pub use physical::transducer::input::*;

View File

@ -0,0 +1,15 @@
mod input;
mod output;
pub use physical::transducer::*;
// ---------------------------------------------------------------------------------------------------------------------
// ----- Publisher ------------------------
// ---------------------------------------------------------------------------------------------------------------------
#[cfg(feature = "embassy-sync")]
pub trait Publisher {
type Value: Copy;
fn subscribe() -> SubT;
}

View File

@ -0,0 +1 @@
pub use physical::transducer::output::*;

View File

@ -0,0 +1,29 @@
[package]
name = "physical-ads1256"
description = "Shared abstractions for ADS1256 components."
version.workspace = true
edition.workspace = true
repository.workspace = true
readme.workspace = true
license.workspace = true
[features]
standard-multiplexer = []
[dependencies.physical-node]
path = "../../../node"
[dependencies.physical-ads1256-types]
path = "../types"
[dependencies.ads1256]
workspace = true
[dependencies.embedded-hal]
workspace = true
[dependencies.embedded-hal-async]
workspace = true
[dependencies.defmt]
workspace = true
[dependencies.uom]
workspace = true
[dependencies.embassy-sync]
workspace = true
optional = true

View File

@ -0,0 +1,10 @@
struct AnalogInput {}
// AnalogInputS
// AnalogInputI
// AnalogInputC
// AnalogInputSI
// AnalogInputSC
// AnalogInputIC
// AnalogInputSIC

View File

@ -0,0 +1,4 @@
#![no_std]
#[cfg(feature = "standard-multiplexer")]
mod analog_input;

View File

@ -0,0 +1,17 @@
[package]
name = "physical-ads1256-types"
description = "ADS1256 Physical types."
version.workspace = true
edition.workspace = true
repository.workspace = true
readme.workspace = true
license.workspace = true
[features]
standard-multiplexer = []
[dependencies.ads1256-types]
workspace = true
[dependencies.defmt]
workspace = true
optional = true

View File

@ -0,0 +1 @@
#![no_std]

View File

@ -0,0 +1,25 @@
[package]
name = "physical-standalone-ads1256"
description = "Support for dedicated ADS1256 boards (i.e. boards that have no other functionality other than to expose the ADS1256)"
version.workspace = true
edition.workspace = true
repository.workspace = true
readme.workspace = true
license.workspace = true
[dependencies.physical-node]
path = "../../../node"
[dependencies.physical-standalone-ads1256-types]
path = "../types"
[dependencies.physical-ads1256]
path = "../../../peripheral-components/ads1256/node"
[dependencies.ads1256]
workspace = true
[dependencies.embedded-hal]
workspace = true
[dependencies.embedded-hal-async]
workspace = true
[dependencies.defmt]
workspace = true
[dependencies.uom]
workspace = true

View File

@ -0,0 +1 @@
#![no_std]

View File

@ -0,0 +1,13 @@
[package]
name = "physical-standalone-ads1256-types"
description = "Support for dedicated ADS1256 boards (i.e. boards that have no other functionality other than to expose the ADS1256)"
version.workspace = true
edition.workspace = true
repository.workspace = true
readme.workspace = true
license.workspace = true
[dependencies.ads1256-types]
workspace = true
[dependencies.physical-ads1256-types]
path = "../../../peripheral-components/ads1256/types"

View File

@ -0,0 +1 @@
#![no_std]

View File

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

0
src/transducer/input.rs Normal file
View File

10
src/transducer/mod.rs Normal file
View File

@ -0,0 +1,10 @@
pub mod input;
pub mod output;
// Initialisation will always be async and won't complete until a state is available for all
// stateful transducers.
pub trait Stateful {
type Value: Copy;
fn state() -> Self::Value;
}

7
src/transducer/output.rs Normal file
View File

@ -0,0 +1,7 @@
pub trait Output {
type Value: Copy;
//TODO: return result
//TODO: Make maybe async
fn set(setting: Self::Value);
}