[package] name = "flowrs-iface" version.workspace = true edition.workspace = true publish.workspace = true rust-version.workspace = true authors.workspace = true license.workspace = true description = "One hashed interface model for flowRS: IDL 4.2 annotations plus units (UCUM), clock domains, named axes and fixed-point scale; the FIH01 hash; ROS 2 .msg/.srv/.action/.idl import, .msg export and RIHS01; MAVLink XML, CAN DBC and PX4 uORB import; protobuf, Arrow, MAVLink XML and DBC export, each with a loss report." [lib] crate-type = ["rlib"] [dependencies] # SHA-256 for FIH01 and RIHS01. `default-features = false` keeps the core no_std: the # model, the canonical encoder and both hashes run on a microcontroller and in a browser. sha2 = { version = "0.11", default-features = false } # A read-only XML tree for MAVLink dialects (MIT OR Apache-2.0), no_std with alloc. flowRS # reads MAVLink's XML (MIT) itself; mavgen and pymavlink are LGPLv3 and are never linked. roxmltree = { version = "0.21", default-features = false } # CAN DBC parsing (MIT OR Apache-2.0), behind `dbc`: it needs std. Its default features # add serde and encoding_rs, neither of which flowRS uses (it decodes Windows-1252 itself). can-dbc = { version = "10", default-features = false, optional = true } # Arrow schemas, behind `arrow` (std): already the workspace's typed-wire currency. arrow-schema = { workspace = true, optional = true } [features] default = [] # DBC import through can-dbc (export is always available). dbc = ["dep:can-dbc"] # Arrow schema export and read-back. arrow = ["dep:arrow-schema"] [dev-dependencies] # `cfg(kani)` is set by `cargo kani`, never by cargo itself, so rustc does not know the # name. Declaring it keeps the proofs in `canon::proofs` from costing every ordinary build a # warning. [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(kani)'] }