[package]
edition = "2024"
name = "cu-flight-controller"
version = "0.15.0"
authors = ["Guillaume Binet <gbin@gootz.net>"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "quad-sim"
description = "This is a basic quadcopter Flight Controller implemented end to end using Copper components"
homepage = "https://github.com/copper-project"
readme = "README.md"
keywords = [
"robotics",
"middleware",
"copper",
"real-time",
]
categories = ["science::robotics"]
license = "Apache-2.0"
repository = "https://github.com/copper-project/copper-rs"
resolver = "2"
[package.metadata.copper]
embedded_only = true
embedded_config = "examples/cu_flight_controller/.cargo/config-firmware.toml"
embedded_target = "thumbv7em-none-eabihf"
embedded_no_default_features = true
embedded_features = "firmware"
embedded_build_release = true
[package.metadata.cargo-shear]
ignored = ["bincode"]
[features]
bevymon = [
"sim_core",
"dep:cu-bevymon",
"dep:cached-path",
"dep:evdev",
]
default = ["sim"]
firmware = [
"dep:cu29",
"cu29/defmt",
"dep:defmt",
"dep:cortex-m-rt",
"dep:defmt-rtt",
"dep:panic-probe",
"dep:buddy_system_allocator",
"dep:stm32h7xx-hal",
"dep:embedded-alloc",
"dep:cortex-m",
"dep:cu-bdshot",
"dep:cu-micoairh743",
"cu-bdshot/stm32h7",
"cu-bdshot/defmt",
"cu-micoairh743/defmt",
"dep:cu-ahrs",
"dep:cu-bmi088",
"dep:cu-dps310",
"dep:cu-ist8310",
"dep:cu-gnss-payloads",
"dep:cu-gnss-ublox",
"cu-bmi088/defmt",
"cu-dps310/defmt",
"cu-ist8310/defmt",
"dep:cu-crsf",
"dep:cu-msp-bridge",
"cu-crsf/defmt",
"cu-msp-bridge/defmt",
"dep:cu-sdlogger",
"dep:cu-logmon",
"cu-ahrs/defmt",
"cu-ahrs/firmware",
"cu-logmon/defmt",
]
logreader = [
"dep:cu29",
"cu29/std",
"bincode/std",
"serde/std",
"dep:cu29-export",
"dep:cu-crsf",
"dep:cu-msp-bridge",
"dep:cu-bdshot",
"dep:cu-ahrs",
"dep:cu-gnss-payloads",
"cu-bdshot/messages-only",
]
python-bindings = [
"dep:cu29",
"cu29/std",
"bincode/std",
"serde/std",
"dep:cu29-export",
"dep:cu-crsf",
"dep:cu-msp-bridge",
"dep:cu-bdshot",
"dep:cu-ahrs",
"dep:cu-gnss-payloads",
"cu-bdshot/messages-only",
"cu29-export/python",
"dep:pyo3",
]
sim = [
"sim_core",
"dep:cu-consolemon",
"dep:cached-path",
"dep:evdev",
]
sim_core = [
"dep:cu29",
"cu29/std",
"cu29/sysclock-perf",
"dep:cu-ahrs",
"dep:cu-crsf",
"dep:cu-msp-bridge",
"dep:cu-bdshot",
"cu-bdshot/messages-only",
"dep:bevy",
"dep:avian3d",
"dep:cu-gnss-payloads",
]
textlogs = [
"cu29/textlogs",
"cu-msp-bridge/textlogs",
"cu-msp-bridge/log-level-info",
"cu-logmon/textlogs",
"cu-logmon/log-level-info",
]
[lib]
name = "cu_flight_controller_export"
path = "src/python_module.rs"
[[bin]]
name = "quad"
path = "src/main.rs"
test = false
doctest = false
bench = false
required-features = ["firmware"]
[[bin]]
name = "quad-bevymon"
path = "src/bevymon.rs"
required-features = ["bevymon"]
[[bin]]
name = "quad-logreader"
path = "src/logreader.rs"
required-features = ["logreader"]
[[bin]]
name = "quad-sim"
path = "src/sim.rs"
required-features = ["sim"]
[[bin]]
name = "rc-tester"
path = "src/sim/rc_tester.rs"
required-features = ["sim"]
[dependencies.avian3d]
version = "0.6.1"
features = [
"bevy_scene",
"collider-from-mesh",
"debug-plugin",
"parallel",
"f32",
"3d",
"parry-f32",
]
optional = true
default-features = false
[dependencies.bevy_ecs]
version = "0.18.0"
default-features = false
[dependencies.bincode]
version = "2.0"
features = [
"derive",
"alloc",
]
default-features = false
package = "cu-bincode"
[dependencies.buddy_system_allocator]
version = "0.12"
features = ["use_spin"]
optional = true
default-features = false
[dependencies.cortex-m]
version = "0.7"
features = ["critical-section-single-core"]
optional = true
[dependencies.cortex-m-rt]
version = "0.7"
optional = true
[dependencies.cu-ahrs]
version = "0.15.0"
optional = true
default-features = false
[dependencies.cu-bdshot]
version = "0.15.0"
optional = true
default-features = false
[dependencies.cu-bmi088]
version = "0.15.0"
optional = true
default-features = false
[dependencies.cu-crsf]
version = "0.15.0"
features = ["alloc"]
optional = true
default-features = false
[dependencies.cu-dps310]
version = "0.15.0"
optional = true
default-features = false
[dependencies.cu-gnss-payloads]
version = "0.15.0"
optional = true
default-features = false
[dependencies.cu-gnss-ublox]
version = "0.15.0"
optional = true
default-features = false
[dependencies.cu-ist8310]
version = "0.15.0"
optional = true
default-features = false
[dependencies.cu-logmon]
version = "0.15.0"
features = ["color_log"]
optional = true
default-features = false
[dependencies.cu-micoairh743]
version = "0.15.0"
optional = true
[dependencies.cu-msp-bridge]
version = "0.15.0"
features = ["alloc"]
optional = true
default-features = false
[dependencies.cu-msp-lib]
version = "0.15.0"
features = ["bincode"]
default-features = false
[dependencies.cu-pid]
version = "0.15.0"
default-features = false
[dependencies.cu-sdlogger]
version = "0.15.0"
optional = true
[dependencies.cu-sensor-payloads]
version = "0.15.0"
default-features = false
[dependencies.cu29]
version = "0.15.0"
features = [
"log-level-debug",
"units",
]
optional = true
default-features = false
[dependencies.cu29-export]
version = "0.15.0"
optional = true
[dependencies.defmt]
version = "1.0"
optional = true
default-features = false
[dependencies.defmt-rtt]
version = "1.1"
optional = true
[dependencies.embedded-alloc]
version = "0.7"
optional = true
default-features = false
[dependencies.libm]
version = "0.2"
default-features = false
[dependencies.panic-probe]
version = "1.0"
features = ["print-defmt"]
optional = true
[dependencies.pyo3]
version = "0.28"
features = [
"extension-module",
"macros",
]
optional = true
default-features = false
[dependencies.serde]
version = "1.0"
features = [
"derive",
"alloc",
]
default-features = false
[dependencies.spin]
version = "0.10"
[dependencies.stm32h7xx-hal]
version = "0.16.0"
features = [
"stm32h743v",
"rt",
"defmt",
"sdmmc",
"sdmmc-fatfs",
]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.bevy]
version = "0.18.0"
features = [
"x11",
"wayland",
"default_font",
"bevy_render",
"bevy_window",
"bevy_core_pipeline",
"bevy_pbr",
"bevy_scene",
"bevy_sprite",
"bevy_gltf",
"gltf_animation",
"bevy_picking",
"mesh_picking",
"tonemapping_luts",
"bevy_ui",
"bevy_ui_render",
"ktx2",
"jpeg",
"png",
"zstd_rust",
]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.cached-path]
version = "0.10.0"
features = [
"progress-bar",
"rustls-tls",
]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.cu-bevymon]
version = "0.15.0"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.cu-consolemon]
version = "0.15.0"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.evdev]
version = "0.13.2"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.bevy]
version = "0.18.0"
features = [
"default_font",
"bevy_render",
"bevy_window",
"bevy_core_pipeline",
"bevy_pbr",
"bevy_scene",
"bevy_sprite",
"bevy_gltf",
"gltf_animation",
"bevy_picking",
"mesh_picking",
"tonemapping_luts",
"bevy_ui",
"bevy_ui_render",
"ktx2",
"jpeg",
"png",
"zstd_rust",
"reflect_auto_register",
]
optional = true
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.cu-bevymon]
version = "0.15.0"
optional = true
default-features = false