67 lines
2.9 KiB
TOML
67 lines
2.9 KiB
TOML
[package]
|
|
name = "flowrs-hal"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
publish.workspace = true
|
|
rust-version.workspace = true
|
|
authors.workspace = true
|
|
license = "MIT OR Apache-2.0"
|
|
description = "Hardware abstraction traits for FlowRS: no_std-capable GPIO / PWM / ADC / DAC / timer / serial / SPI / I2C / CAN for MCU targets and simulation, with the CAN wire forms (SocketCAN layouts, SLCAN, gs_usb)."
|
|
|
|
[lib]
|
|
crate-type = ["rlib"]
|
|
|
|
[features]
|
|
default = ["std"]
|
|
# Enable the standard library (adds `std::error::Error` for `HalError`).
|
|
std = []
|
|
# The typed link (`link`): flowrs-transport's link over this crate's UARTs, postcard
|
|
# payloads, and the stand-in interface digest from postcard-schema. `no_std`; firmware a
|
|
# graph compiles to turns it on when the graph crosses a link.
|
|
link = ["dep:flowrs-transport", "dep:postcard", "dep:postcard-schema", "dep:serde"]
|
|
|
|
[dependencies]
|
|
embedded-hal = { workspace = true }
|
|
# The Classical CAN frame trait every MCU HAL's CAN driver takes (MIT OR Apache-2.0); flowRS's
|
|
# `CcFrame` implements it.
|
|
embedded-can = "0.4.1"
|
|
# The non-blocking result embedded-can's `nb::Can` returns (MIT OR Apache-2.0; already in the
|
|
# lock under embedded-can).
|
|
nb = "1.1.0"
|
|
embedded-io = { workspace = true }
|
|
embedded-io-async = { workspace = true }
|
|
# The link protocol, without its `std` half: the module a microcontroller links.
|
|
flowrs-transport = { path = "../flowrs-transport", default-features = false, optional = true }
|
|
# Payloads (MIT OR Apache-2.0). No default features: no heapless, no std.
|
|
postcard = { version = "1.1.3", default-features = false, optional = true }
|
|
# The stand-in interface digest is a walk of a type's postcard-schema (MIT OR Apache-2.0).
|
|
postcard-schema = { version = "0.2.5", optional = true }
|
|
# Not the workspace's serde: that one turns on `rc`, which needs an allocator.
|
|
serde = { version = "1.0.228", default-features = false, optional = true }
|
|
|
|
# `cfg(kani)` is set by `cargo kani` (the CAN codecs' proofs, src/can/proofs.rs), never by
|
|
# cargo itself.
|
|
[lints.rust]
|
|
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(kani)'] }
|
|
|
|
[dev-dependencies]
|
|
|
|
# Symposium (`cargo agents`): an agent working on a project that depends on this crate gets
|
|
# the flowRS skill (crates/flowrs-mcp/symposium/flowrs, rendered by flowrs-mcp's
|
|
# skills::symposium_plugin) and the flowRS MCP server under the read-only plan profile. Never
|
|
# the full profile: a dependency is not a trust root, and Symposium registers servers at user
|
|
# level. Symposium 0.5.1 parses a crate's MCP entry but does not dispatch it yet; a registry
|
|
# carrying symposium/flowrs/SYMPOSIUM.toml registers the same entry today.
|
|
[package.metadata.symposium]
|
|
|
|
[package.metadata.symposium.defaults]
|
|
skills = false
|
|
|
|
[[package.metadata.symposium.skills]]
|
|
source.path = "../flowrs-mcp/symposium/flowrs/skills/core"
|
|
|
|
[[package.metadata.symposium.mcp_servers]]
|
|
name = "flowrs"
|
|
command = "flowrs-mcp"
|
|
args = ["--profile", "plan"]
|
|
env = []
|