[package]
edition = "2024"
name = "device-envoy"
version = "0.0.3-alpha.2"
build = "build.rs"
exclude = [
"demos/**",
"tests-compile-only/**",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Build Pico applications with LED panels, easy Wi-Fi, and composable device abstractions"
homepage = "https://github.com/CarlKCarlK/device-envoy"
documentation = "https://docs.rs/device-envoy"
readme = "README.md"
keywords = [
"embedded",
"rp2040",
"rp235x",
"ws2812",
"i2s",
]
categories = [
"embedded",
"asynchronous",
"no-std",
"hardware-support",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/CarlKCarlK/device-envoy"
[package.metadata.docs.rs]
all-features = false
no-default-features = true
default-target = "thumbv6m-none-eabi"
targets = [
"thumbv6m-none-eabi",
"thumbv8m.main-none-eabihf",
]
features = [
"embedded",
"wifi",
"doc-images",
]
[package.metadata.envoy]
rename-from = "device-kit"
[features]
arm = [
"dep:cortex-m",
"dep:cortex-m-rt",
"embassy-executor/arch-cortex-m",
"dep:embassy-hal-internal",
"embassy-hal-internal/cortex-m",
"embassy-hal-internal/prio-bits-2",
"critical-section/restore-state-u8",
]
default = ["host"]
defmt = [
"dep:defmt-rtt",
"dep:panic-probe",
]
display-trace = []
doc-images = ["dep:embed-doc-image"]
embedded = [
"defmt",
"pico1",
"arm",
]
host = [
"dep:png",
"dep:tempfile",
]
pico1 = [
"dep:embassy-rp",
"embassy-rp/rp2040",
"defmt",
]
pico2 = [
"dep:embassy-rp",
"embassy-rp/rp235xb",
"defmt",
]
riscv = [
"dep:riscv",
"dep:riscv-rt",
"embassy-executor/arch-riscv32",
"dep:embassy-hal-internal",
"critical-section/restore-state-bool",
]
wifi = [
"dep:cyw43",
"dep:cyw43-pio",
"dep:cyw43-firmware",
"dep:embassy-net",
]
[lib]
name = "device_envoy"
path = "src/lib.rs"
[[example]]
name = "audio"
path = "examples/audio.rs"
[[example]]
name = "audio_cues"
path = "examples/audio_cues.rs"
[[example]]
name = "blinky"
path = "examples/blinky.rs"
[[example]]
name = "clock_audio"
path = "examples/clock_audio.rs"
[[example]]
name = "clock_console"
path = "examples/clock_console.rs"
[[example]]
name = "clock_lcd"
path = "examples/clock_lcd.rs"
[[example]]
name = "clock_led12x4"
path = "examples/clock_led12x4.rs"
[[example]]
name = "clock_led4"
path = "examples/clock_led4.rs"
[[example]]
name = "clock_led8x12"
path = "examples/clock_led8x12.rs"
[[example]]
name = "clock_servos"
path = "examples/clock_servos.rs"
[[example]]
name = "concat_h"
path = "examples/concat_h.rs"
[[example]]
name = "conway"
path = "examples/conway.rs"
[[example]]
name = "flash"
path = "examples/flash.rs"
[[example]]
name = "ir"
path = "examples/ir.rs"
[[example]]
name = "ir_kepler"
path = "examples/ir_kepler.rs"
[[example]]
name = "ir_nec_pio"
path = "examples/ir_nec_pio.rs"
[[example]]
name = "led"
path = "examples/led.rs"
[[example]]
name = "led2d"
path = "examples/led2d.rs"
[[example]]
name = "led2d1"
path = "examples/led2d1.rs"
[[example]]
name = "led2d2"
path = "examples/led2d2.rs"
[[example]]
name = "led2d_graphics"
path = "examples/led2d_graphics.rs"
[[example]]
name = "led8x12"
path = "examples/led8x12.rs"
[[example]]
name = "led_strip"
path = "examples/led_strip.rs"
[[example]]
name = "led_strip1"
path = "examples/led_strip1.rs"
[[example]]
name = "led_strip3"
path = "examples/led_strip3.rs"
[[example]]
name = "led_strip_3_on_a_pio"
path = "examples/led_strip_3_on_a_pio.rs"
[[example]]
name = "led_strip_animate"
path = "examples/led_strip_animate.rs"
[[example]]
name = "led_strip_broadway"
path = "examples/led_strip_broadway.rs"
[[example]]
name = "led_strip_simple"
path = "examples/led_strip_simple.rs"
[[example]]
name = "led_strip_simple_two"
path = "examples/led_strip_simple_two.rs"
[[example]]
name = "led_strip_single"
path = "examples/led_strip_single.rs"
[[example]]
name = "led_strip_snake"
path = "examples/led_strip_snake.rs"
[[example]]
name = "led_strips1"
path = "examples/led_strips1.rs"
[[example]]
name = "led_strips_visibility_demo"
path = "examples/led_strips_visibility_demo.rs"
[[example]]
name = "replace_verify"
path = "examples/replace_verify.rs"
[[example]]
name = "servo_basic"
path = "examples/servo_basic.rs"
[[example]]
name = "servo_player_sweep"
path = "examples/servo_player_sweep.rs"
[[example]]
name = "servos"
path = "examples/servos.rs"
[[example]]
name = "song"
path = "examples/song.rs"
[[example]]
name = "video"
path = "examples/video.rs"
[[example]]
name = "wifi_auto"
path = "examples/wifi_auto.rs"
[[example]]
name = "wifiauto1"
path = "examples/wifiauto1.rs"
[[example]]
name = "wifiauto2"
path = "examples/wifiauto2.rs"
[[example]]
name = "wifiauto3"
path = "examples/wifiauto3.rs"
[[example]]
name = "wifiauto_custom"
path = "examples/wifiauto_custom.rs"
[[test]]
name = "led2d_mapping_algebra"
path = "tests/led2d_mapping_algebra.rs"
required-features = ["host"]
[[test]]
name = "led2d_text_render"
path = "tests/led2d_text_render.rs"
required-features = ["host"]
[[test]]
name = "led_strip_rgb_conversion"
path = "tests/led_strip_rgb_conversion.rs"
[[test]]
name = "mapping"
path = "tests/mapping.rs"
required-features = ["host"]
[[test]]
name = "pngs"
path = "tests/pngs.rs"
[dependencies.crc32fast]
version = "1.4.0"
default-features = false
[dependencies.critical-section]
version = "1.2.0"
default-features = false
[dependencies.defmt]
version = "0.3.10"
[dependencies.defmt-rtt]
version = "1.1.0"
optional = true
[dependencies.derive_more]
version = "2.0.1"
features = [
"debug",
"display",
"error",
"from",
]
default-features = false
[dependencies.embassy-executor]
version = "0.9.1"
features = [
"executor-thread",
"defmt",
]
default-features = false
[dependencies.embassy-futures]
version = "0.1.2"
[dependencies.embassy-sync]
version = "0.7.2"
[dependencies.embassy-time]
version = "0.5.0"
features = [
"defmt",
"defmt-timestamp-uptime",
]
[dependencies.embed-doc-image]
version = "0.1.4"
optional = true
[dependencies.embedded-graphics]
version = "0.8"
default-features = false
[dependencies.embedded-hal]
version = "1.0.0"
[dependencies.embedded-hal-async]
version = "1.0.0"
[dependencies.embedded-hal-bus]
version = "0.3.0"
features = [
"async",
"portable-atomic",
]
[dependencies.embedded-io-async]
version = "0.7.0"
[dependencies.esp-hal-mfrc522]
version = "0.3.2"
[dependencies.fixed]
version = "1.29"
[dependencies.hd44780-driver]
version = "0.4.0"
[dependencies.heapless]
version = "0.8.0"
features = ["serde"]
[dependencies.itertools]
version = "0.13.0"
default-features = false
[dependencies.panic-probe]
version = "1.0.0"
features = ["print-defmt"]
optional = true
[dependencies.paste]
version = "1.0"
[dependencies.pio]
version = "0.3"
[dependencies.png]
version = "0.17"
optional = true
[dependencies.portable-atomic]
version = "1.11.1"
features = ["critical-section"]
[dependencies.postcard]
version = "1.0"
default-features = false
[dependencies.serde]
version = "1.0"
features = ["derive"]
default-features = false
[dependencies.smart-leds]
version = "0.4.0"
[dependencies.static_cell]
version = "2.1.0"
[dependencies.tempfile]
version = "3.13"
optional = true
[dependencies.time]
version = "0.3"
default-features = false
[target.'cfg(all(target_os = "none", target_arch = "arm"))'.dependencies.cortex-m]
version = "0.7.7"
optional = true
[target.'cfg(all(target_os = "none", target_arch = "arm"))'.dependencies.cortex-m-rt]
version = "0.7.5"
optional = true
[target.'cfg(all(target_os = "none", target_arch = "riscv32"))'.dependencies.riscv]
version = "0.11"
features = ["critical-section-single-hart"]
optional = true
[target.'cfg(all(target_os = "none", target_arch = "riscv32"))'.dependencies.riscv-rt]
version = "0.12"
optional = true
[target.'cfg(target_os = "none")'.dependencies.cyw43]
version = "0.6.0"
features = [
"defmt",
"firmware-logs",
]
optional = true
[target.'cfg(target_os = "none")'.dependencies.cyw43-firmware]
version = "0.1"
features = ["wifi"]
optional = true
[target.'cfg(target_os = "none")'.dependencies.cyw43-pio]
version = "0.9.0"
features = ["defmt"]
optional = true
[target.'cfg(target_os = "none")'.dependencies.embassy-hal-internal]
version = "0.4.0"
optional = true
default-features = false
[target.'cfg(target_os = "none")'.dependencies.embassy-net]
version = "0.8.0"
features = [
"defmt",
"tcp",
"udp",
"dhcpv4",
"dns",
"medium-ethernet",
]
optional = true
[target.'cfg(target_os = "none")'.dependencies.embassy-rp]
version = "0.9.0"
features = [
"rt",
"defmt",
"time-driver",
"critical-section-impl",
]
optional = true
default-features = false
[lints.clippy]
allow_attributes = "warn"
allow_attributes_without_reason = "deny"
arithmetic_side_effects = "deny"
blanket_clippy_restriction_lints = "warn"
cargo = "warn"
enum_glob_use = "forbid"
enum_variant_names = "warn"
equatable_if_let = "warn"
error_impl_error = "allow"
float_cmp_const = "deny"
implicit_return = "allow"
indexing_slicing = "deny"
integer_division_remainder_used = "warn"
items-after-statements = "warn"
iter_nth_zero = "warn"
match-same-arms = "warn"
match_bool = "warn"
min_ident_chars = "warn"
missing_errors_doc = "warn"
missing_trait_methods = "warn"
module_name_repetitions = "warn"
multiple_crate_versions = "allow"
must_use_candidate = "warn"
obfuscated_if_else = "warn"
pub_use = "allow"
pub_with_shorthand = "warn"
question_mark_used = "allow"
restriction = "warn"
self_named_module_files = "warn"
semicolon_if_nothing_returned = "warn"
semicolon_inside_block = "warn"
semicolon_outside_block = "warn"
separated_literal_suffix = "warn"
shadow_reuse = "warn"
shadow_unrelated = "warn"
similar_names = "warn"
single_call_fn = "allow"
std_instead_of_alloc = "warn"
std_instead_of_core = "warn"
str_to_string = "warn"
too_long_first_doc_paragraph = "warn"
unnecessary_wraps = "warn"
unreachable = "warn"
unwrap_used = "deny"
wildcard_imports = "deny"
[lints.clippy.all]
level = "warn"
priority = -2
[lints.clippy.missing_docs_in_private_items]
level = "allow"
priority = -1
[lints.clippy.nursery]
level = "warn"
priority = -2
[lints.clippy.pedantic]
level = "deny"
priority = -2
[lints.rust]
bare_trait_objects = "forbid"
missing_docs = "warn"
non_camel_case_types = "warn"
non_snake_case = "warn"
non_upper_case_globals = "warn"
unexpected_cfgs = "warn"
unfulfilled_lint_expectations = "warn"
unknown_lints = "warn"
unsafe_code = "deny"
unused_variables = "warn"
warnings = "deny"
[lints.rust.rust_2018_idioms]
level = "warn"
priority = -2
[profile.dev]
panic = "abort"
[profile.release]
lto = "thin"
codegen-units = 1
panic = "abort"