[package] edition = "2024" name = "esp32-c_its-companion" rust-version = "1.88" version = "0.1.0" default-run = "esp32-c_its-companion" [[bin]] name = "esp32-c_its-companion" path = "./src/main.rs" [[bin]] name = "test" path = "./src/test.rs" required-features = ["std", "cam"] [features] default = ["esp", "spat", "gnss_ubx", "screen"] # build for ESP (needed to build test for `host-tuple`) esp = [ "dep:esp-hal", "dep:esp-rtos", "dep:esp-bootloader-esp-idf", "dep:embassy-executor", "dep:embassy-time", "dep:embedded-io", "dep:embedded-io-async", "dep:esp-alloc", "dep:esp-backtrace", "dep:esp-println", "dep:esp-radio", "esp32-cits-core/esp32c5", "esp32-cits-core/log-04", ] std = ["c-its-parser/std", "esp32-cits-core/std"] # enable u-blox GNSS module gnss_ubx = ["_gnss", "_uart", "dep:ublox"] # enable L67K GNSS module gnss_l67k = ["_gnss", "dep:embassy_gps"] # echo CAM data on serial cam = ["c-its-parser/cam"] # send CAM autonomously cam_tx = ["c-its-parser/cam"] # echo DENM events on serial and BLE denm = ["c-its-parser/denm"] # evaluate SPAT information spat = ["c-its-parser/spatem", "c-its-parser/mapem"] # enable some debug printing (without enabling debug logging of the ESP RTOS) spat_debug = [] # enable ST7789 based display screen = ["dep:mipidsi", "dep:embedded-graphics", "dep:embedded-hal-bus", "dep:profont"] # enable I/O via UART uart = ["_uart", "_gnss", "dep:prost"] # internal feature, that any UART I/O is enabled _uart = [] # internal feature, that any GNSS source is enabled _gnss = [] [dependencies] esp-hal = { version = "~1.1.0", optional = true, features = ["esp32c5", "log-04", "unstable"] } esp-rtos = { version = "0.3.0", optional = true, features = [ "embassy", "esp-alloc", "esp-radio", "esp32c5", "log-04", ] } esp-bootloader-esp-idf = { version = "0.5.0", optional = true, features = ["esp32c5", "log-04"] } log = "0.4.27" critical-section = "1.2.0" embassy-executor = { version = "0.10.0", optional = true, features = ["log"] } embassy-time = { version = "0.5.0", optional = true, features = ["log"] } embedded-io = { version = "0.7.1", optional = true } embedded-io-async = { version = "0.7.0", optional = true } esp-alloc = { version = "0.10.0", optional = true } esp-backtrace = { version = "0.19.0", optional = true, features = [ "esp32c5", "panic-handler", "println", ] } esp-println = { version = "0.17.0", optional = true, default-features = false, features = ["colors", "critical-section", "jtag-serial", "esp32c5", "log-04"] } esp-radio = { version = "0.18.0", optional = true, features = [ "esp-alloc", "esp32c5", "log-04", "unstable", "wifi", "sniffer", ] } embassy_gps = { version = "0.1.0", optional = true, default-features = false, features = ["esp", "log-04"], git = "https://github.com/jbeyerstedt/embassy_gps.git", branch = "feat/rework-gpsfix" } esp32-cits-core = { version = "0.1.0", default-features = false, git = "https://git.hamburg.ccc.de/jtbx/esp32-cits-core", branch = "main" } embedded-hal-bus = { version = "0.3.0", optional = true } embedded-graphics = { version = "0.8.2", optional = true } # needs newer GN with removed bitvec dependency c-its-parser = { version = "2.4.0", default-features = false, features = [ "time", "geo", "libm", "transport", ] } chrono = { version = "0.4.44", default-features = false, features = ["alloc"] } crossbeam-queue = { version = "0.3.12", default-features = false, features = ["alloc"] } geo-types = { version = "0.7.19", default-features = false } mipidsi = { version = "0.10.0", optional = true } num-traits = { version = "0.2.19", default-features = false, features = ["libm"] } profont = { version = "0.7.0", optional = true } prost = { version = "0.14", optional = true, default-features = false, features = ["derive"] } ublox = { version = "0.10", optional = true, default-features = false, features = ["alloc", "ubx_proto27"] } [dev-dependencies] assert_float_eq = "1.2.0" env_logger = "0.11.10" [build-dependencies] prost-build = "0.14" # For fine tuning these settings, please refer to https://doc.rust-lang.org/cargo/reference/profiles.html [profile.dev] # The default debug profile is too slow and too big for resource-constrained devices. # Always build with some optimizations enabled. opt-level = "s" [profile.release] codegen-units = 1 # LLVM can perform better optimizations using a single thread debug = 2 # prefer slower builds but better debugging experience lto = 'fat' opt-level = 's' strip = "debuginfo" [profile.release-dbg] inherits = "release" strip = false