[package]
edition = "2024"
name = "protoflight"
version = "0.1.4"
authors = ["Martin Budden"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Protoflight flight controller."
readme = "README.md"
keywords = [
"flight",
"no-std",
]
categories = [
"embedded",
"mathematics",
"no-std",
"science::robotics",
"aerospace::drones",
]
license = "GPL-3.0-or-later"
repository = "https://github.com/martinbudden/crate-protoflight"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
[features]
_common = [
"autopilot",
"barometer",
"battery",
"blackbox",
"debug",
"dshot_telemetry",
"gps",
"huffman",
"magnetometer",
"msp",
"optical_flow",
"osd",
"rangefinder",
"rpm_filters",
"rtt-debug",
"servos",
"serde",
"vtx",
]
airb_omnibus_f4 = [
"stm32",
"stm32f405",
"pwm_t8",
"dshot_t8",
"realtime_executor",
"_common",
]
airb_omnibus_f4_sd = [
"stm32",
"stm32f405",
"pwm_t3_t5",
"dshot_t8",
"_common",
"sdcard",
]
align = ["vqm/align"]
autopilot = []
barometer = ["blackbox-logger/barometer"]
battery = []
blackbox = ["dep:blackbox-logger"]
cms = []
dashboard = []
debug = ["blackbox-logger/debug"]
default = ["mock"]
dshot_t8 = ["motor-mixers/dshot_t8"]
dshot_telemetry = ["blackbox-logger/dshot_telemetry"]
eight_motors = [
"blackbox-logger/eight_motors",
"motor-mixers/eight_motors",
]
esp32s3 = [
"dep:esp-hal",
"esp-hal/esp32s3",
"esp-hal/rt",
"esp-hal/unstable",
"xtensa-lx",
"embassy-executor/executor-thread",
"embassy-executor/platform-spin",
"motor-mixers/esp32s3",
]
gps = ["blackbox-logger/gps"]
host = ["std"]
huffman = ["blackbox-logger/huffman"]
libm = [
"dep:libm",
"vqm/libm",
"imu-sensors/libm",
"signal-filters/libm",
]
madflight_fc2 = [
"esp32s3",
"autopilot",
"barometer",
"battery",
"msp",
"serde",
]
madflight_fc3 = [
"rp235xb",
"sdcard",
"_common",
]
magnetometer = ["blackbox-logger/magnetometer"]
max7456 = []
mock = [
"host",
"_common",
]
msp = []
multicore = []
openfc_lite = [
"rp235xb",
"sdcard",
"_common",
]
openfc_lite_mini = [
"rp235xa",
"sdcard",
"_common",
]
optical_flow = []
osd = []
osd_hd = []
pwm_t3 = ["motor-mixers/pwm_t3"]
pwm_t3_t5 = ["motor-mixers/pwm_t3_t5"]
pwm_t4_t3 = ["motor-mixers/pwm_t4_t3"]
pwm_t8 = ["motor-mixers/pwm_t8"]
rangefinder = ["blackbox-logger/rangefinder"]
realtime_executor = []
rp = ["dep:embassy-rp"]
rp2040 = [
"dep:embassy-rp",
"dep:cortex-m-rt",
"dep:panic-probe",
"embassy-executor/executor-thread",
"embassy-executor/platform-cortex-m",
"embassy-rp/critical-section-impl",
"embassy-rp/rt",
"embassy-rp/time-driver",
"embassy-rp/rp2040",
"motor-mixers/rp2040",
]
rp235xa = [
"dep:embassy-rp",
"dep:cortex-m-rt",
"dep:cyw43-pio",
"dep:panic-probe",
"embassy-executor/executor-thread",
"embassy-executor/platform-cortex-m",
"embassy-rp/critical-section-impl",
"embassy-rp/rt",
"embassy-rp/time-driver",
"embassy-rp/rp235xa",
"motor-mixers/rp235xa",
]
rp235xb = [
"dep:embassy-rp",
"dep:cortex-m-rt",
"dep:cyw43-pio",
"dep:panic-probe",
"embassy-executor/executor-thread",
"embassy-executor/platform-cortex-m",
"embassy-rp/rt",
"embassy-rp/time-driver",
"embassy-rp/critical-section-impl",
"embassy-rp/rp235xb",
"motor-mixers/rp235xb",
]
rpi_pico2 = [
"rp235xa",
"multicore",
"sdcard",
"storage",
"_common",
]
rpm_filters = []
rtt-debug = ["dep:rtt-target"]
sdcard = ["dep:embedded-sdmmc"]
serde = [
"dep:serde",
"dep:postcard",
"blackbox-logger/serde",
"imu-sensors/serde",
"motor-mixers/serde",
"radio-controllers/serde",
"simple-bitset/serde",
"vqm/serde",
]
servos = ["blackbox-logger/servos"]
simd = ["vqm/simd"]
sp_racing_f4_evo = [
"stm32",
"stm32f405",
"pwm_t3",
"dshot_t8",
"realtime_executor",
"_common",
"sdcard",
]
speedybee_f405_v4 = [
"stm32",
"stm32f405",
"pwm_t4_t3",
"dshot_t8",
"realtime_executor",
"_common",
"sdcard",
"gps",
]
stamp_s3_fly = [
"esp32s3",
"autopilot",
"barometer",
"battery",
]
std = [
"critical-section/std",
"derive_more/std",
"embassy-time/std",
"embassy-executor/platform-std",
"imu-sensors/std",
"num-traits/std",
"motor-mixers/std",
"signal-filters/std",
"vqm/std",
"log/std",
"dep:embedded-storage-file",
"dep:env_logger",
"dep:env_filter",
]
stm32 = [
"dep:embassy-stm32",
"dep:cortex-m-rt",
"embassy-executor/executor-thread",
"embassy-executor/executor-interrupt",
"embassy-executor/platform-cortex-m",
"embassy-stm32/rt",
"embassy-stm32/time-driver-tim2",
"embassy-stm32/executor-thread",
"embassy-stm32/executor-interrupt",
"motor-mixers/stm32",
]
stm32f405 = ["embassy-stm32/stm32f405rg"]
storage = [
"dep:sequential-storage",
"serde",
"blackbox-logger/storage",
"imu-sensors/storage",
"motor-mixers/storage",
"radio-controllers/storage",
"simple-bitset/storage",
"vqm/storage",
]
vtx = []
[[bin]]
name = "protoflight"
path = "src/main.rs"
[dependencies.blackbox-logger]
version = "0.1.12"
optional = true
default-features = false
[dependencies.cortex-m-rt]
version = "0.7.5"
optional = true
[dependencies.critical-section]
version = "1.2.0"
[dependencies.cyw43-pio]
version = "0.10.0"
optional = true
[dependencies.defmt]
version = "1.1.1"
[dependencies.defmt-rtt]
version = "1.3.0"
[dependencies.derive_more]
version = "2.1.1"
features = ["display"]
default-features = false
[dependencies.dshot-codec]
version = "0.1.2"
default-features = false
[dependencies.embassy-embedded-hal]
version = "0.6.0"
[dependencies.embassy-executor]
version = "0.10.0"
default-features = false
[dependencies.embassy-futures]
version = "0.1.2"
default-features = false
[dependencies.embassy-rp]
version = "0.10.0"
optional = true
default-features = false
[dependencies.embassy-stm32]
version = "0.6.0"
optional = true
default-features = false
[dependencies.embassy-sync]
version = "0.8.0"
default-features = false
[dependencies.embassy-time]
version = "0.5.1"
default-features = false
[dependencies.embedded-hal]
version = "1.0"
[dependencies.embedded-hal-async]
version = "1.0.0"
default-features = false
[dependencies.embedded-hal-bus]
version = "0.3.0"
features = ["async"]
[dependencies.embedded-io-async]
version = "0.7.0"
[dependencies.embedded-sdmmc]
version = "0.10.0"
features = ["log"]
optional = true
default-features = false
[dependencies.embedded-storage-async]
version = "0.4.1"
default-features = false
[dependencies.embedded-storage-file]
version = "0.3.0"
optional = true
default-features = false
[dependencies.env_filter]
version = "2.0.0"
optional = true
default-features = false
[dependencies.env_logger]
version = "0.11.10"
optional = true
default-features = false
[dependencies.esp-hal]
version = "1.2.2"
optional = true
default-features = false
[dependencies.imu-sensors]
version = "0.1.5"
default-features = false
[dependencies.libm]
version = "0.2.16"
optional = true
[dependencies.log]
version = "0.4.33"
features = ["max_level_info"]
default-features = false
[dependencies.motor-mixers]
version = "0.1.7"
default-features = false
[dependencies.num-traits]
version = "0.2.19"
default-features = false
[dependencies.panic-probe]
version = "1.0.0"
features = ["print-defmt"]
optional = true
[dependencies.paste]
version = "1.0.15"
default-features = false
[dependencies.pidsk-controller]
version = "0.1.11"
[dependencies.postcard]
version = "1.1.3"
features = [
"embedded-io",
"experimental-derive",
]
optional = true
default-features = false
[dependencies.radio-controllers]
version = "0.1.8"
default-features = false
[dependencies.rtt-target]
version = "0.6.2"
optional = true
[dependencies.sensor-fusion]
version = "0.1.11"
[dependencies.sequential-storage]
version = "8.0.1"
features = ["postcard"]
optional = true
default-features = false
[dependencies.serde]
version = "1.0.229"
features = ["derive"]
optional = true
default-features = false
[dependencies.signal-filters]
version = "0.1.14"
[dependencies.simple-bitset]
version = "0.1.8"
default-features = false
[dependencies.static_cell]
version = "2.1.1"
[dependencies.stream-buf]
version = "0.1.3"
[dependencies.strum]
version = "0.28.0"
features = ["derive"]
default-features = false
[dependencies.tinyrand]
version = "0.5.0"
[dependencies.vqm]
version = "0.1.17"
default-features = false
[dependencies.xtensa-lx]
version = "0.13.0"
optional = true
default-features = false
[dev-dependencies.approx]
version = "0.5.1"
default-features = false
[dev-dependencies.futures]
version = "0.3.34"
[build-dependencies.rustc_version]
version = "0.4.1"
[profile.debugging]
debug = 2
inherits = "dev"
[profile.dev]
opt-level = 0
lto = false
codegen-units = 256
debug = "line-tables-only"
debug-assertions = true
rpath = false
panic = "unwind"
overflow-checks = true
incremental = true
strip = "none"
[profile.dev.package."*"]
debug = 0
[profile.release]
opt-level = 3
lto = false
codegen-units = 16
debug = 0
debug-assertions = false
rpath = false
panic = "abort"
overflow-checks = false
incremental = false
strip = "none"
[profile.release-lto]
lto = true
codegen-units = 1
inherits = "release"