This repository has been archived on 2026-08-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
donglora/Cargo.toml
T
swaits 65c43cda23 feat: donglora-cobs workspace crate with 31 spec-compliance tests
Extract COBS encoder/decoder into a separate no_std workspace crate
(crates/donglora-cobs) with comprehensive tests against the Cheshire &
Baker 1999 IEEE/ACM specification and Wikipedia canonical vectors.

Tests cover: empty input, single/multiple zeros, block boundaries at
254/255 bytes, alternating patterns, the Ping regression case (tag 0x00),
round-trip verification, and error cases (truncation, unexpected zeros).

Replace inline cobs_decode() in usb/task.rs with the tested crate.
Replace external cobs dependency with workspace crate.
Fix encoder bug at 254-byte block boundary (spurious trailing code byte).
2026-03-29 21:33:08 -06:00

83 lines
2.3 KiB
TOML

[workspace]
members = [".", "crates/donglora-cobs"]
[package]
name = "donglora"
version = "0.1.0"
edition = "2021"
build = "build.rs"
authors = ["Stephen Waits <steve@waits.net>"]
license = "MIT"
description = "Transparent LoRa radio over USB — plug in a board, talk LoRa from your host"
repository = "https://github.com/swaits/donglora"
readme = "README.md"
keywords = ["lora", "radio", "embedded", "usb", "firmware"]
categories = ["embedded", "hardware-support", "no-std"]
[dependencies]
cfg-if = "1.0"
critical-section = "1.2"
defmt = "0.3"
embassy-embedded-hal = "0.2"
embassy-executor = { version = "0.6", features = ["task-arena-size-32768"] }
embassy-sync = "0.6"
embassy-time = "0.3"
embassy-usb = { version = "0.3", features = ["defmt"] }
embassy-usb-driver = "0.1"
donglora-cobs = { path = "crates/donglora-cobs" }
heapless = "0.8"
lora-phy = "3.0"
static_cell = "2.1"
# Display rendering
display-interface = "0.5"
embedded-graphics = "0.8"
ssd1306 = { version = "0.10", features = ["async"] }
# Async IO traits and combinators
embedded-io-async = "0.6"
embassy-futures = "0.1"
# ESP32-S3 (Heltec V3) — requires esp toolchain (espup)
esp-backtrace = { version = "0.14", optional = true, features = ["esp32s3", "panic-handler", "exception-handler", "defmt"] }
esp-hal = { version = "0.22", optional = true, features = ["esp32s3"] }
esp-hal-embassy = { version = "0.5", optional = true, features = ["esp32s3"] }
esp-println = { version = "0.12", optional = true, features = ["esp32s3", "defmt-espflash"] }
# nRF52840 (RAK 4631)
cortex-m-rt = { version = "0.7", optional = true }
embassy-nrf = { version = "0.2", optional = true, features = ["nrf52840", "gpiote", "time-driver-rtc1", "defmt"] }
panic-probe = { version = "0.3", optional = true, features = ["print-defmt"] }
[build-dependencies]
minijinja = "2.0"
owo-colors = "4.0"
[features]
heltec_v3 = [
"dep:esp-backtrace",
"dep:esp-hal",
"dep:esp-hal-embassy",
"dep:esp-println",
"embassy-time/generic-queue-8",
]
heltec_v4 = [
"dep:esp-backtrace",
"dep:esp-hal",
"dep:esp-hal-embassy",
"dep:esp-println",
"embassy-time/generic-queue-8",
]
rak_wisblock_4631 = [
"dep:cortex-m-rt",
"dep:embassy-nrf",
"dep:panic-probe",
"embassy-executor/arch-cortex-m",
"embassy-executor/executor-thread",
]
[profile.release]
codegen-units = 1
lto = "fat"
opt-level = 3