Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ run-esp32s3 = "run --release --target xtensa-esp32s3-none-elf --no-default-featu
# Test alias
test-ota = "test --package ota --target x86_64-unknown-linux-gnu"

# ota-packer aliases
build-ota-packer = "build --package ota --bin ota-packer --target x86_64-unknown-linux-gnu"
ota-packer = "run --package ota --bin ota-packer --target x86_64-unknown-linux-gnu"
# ota packer aliases
build-packer = "build --package ota --bin packer --target x86_64-unknown-linux-gnu"
packer = "run --package ota --bin packer --target x86_64-unknown-linux-gnu"

[target.xtensa-esp32-none-elf] # ESP32
runner = "espflash flash --baud=921600 --monitor --chip esp32"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
run: |
cargo +${{ matrix.device.toolchain }} clippy --release --features ${{ matrix.device.soc }} --target riscv32imac-unknown-none-elf -- -D warnings
cargo +${{ matrix.device.toolchain }} fmt -- --check
ota-packer:
packer:
name: OTA Packer
runs-on: ubuntu-latest
strategy:
Expand All @@ -68,4 +68,4 @@ jobs:
target: riscv32imac-unknown-none-elf
toolchain: stable
- name: Build utility
run: cargo build-ota-packer
run: cargo build-packer
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ on:
workflow_dispatch:

jobs:
ota-packer:
packer:
name: OTA tests
runs-on: ubuntu-latest
strategy:
Expand Down
57 changes: 42 additions & 15 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

140 changes: 82 additions & 58 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,22 @@ edition = "2024"
license = "MIT OR Apache-2.0"

[workspace]
members = ["storage", "ota"]
members = ["hal", "hal-espressif", "ota"]

[workspace.dependencies]
# Async runtime
embassy-sync = "0.7"
embassy-executor = { version = "0.9.0" }
embassy-time = { version = "0.5.0" }
embassy-futures = "0.1.2"

# Collections
heapless = "0.8"

# ESP32
esp-hal = { version = "1", features = ["unstable", "log-04"] }

# SSH protocol
sunset = { git = "https://github.com/jubeormk1/sunset.git", rev = "19f63d489ecc67ff8666205aaf2fdc069495908f", default-features = false, features = [
"openssh-key",
"embedded-io",
Expand All @@ -27,92 +40,107 @@ sunset-async = { git = "https://github.com/jubeormk1/sunset.git", rev = "19f63d4
sunset-sshwire-derive = { git = "https://github.com/jubeormk1/sunset.git", rev = "19f63d489ecc67ff8666205aaf2fdc069495908f", default-features = false }
sunset-sftp = { git = "https://github.com/jubeormk1/sunset.git", rev = "19f63d489ecc67ff8666205aaf2fdc069495908f", default-features = false }

# Crypto
sha2 = { version = "0.10", default-features = false }
rustc-hash = { version = "2.1", default-features = false } # For hash in the OTA SFTP server TODO: For the optimisation task: Remove this dependency and use sha2 instead?
log = "0.4"
rustc-hash = { version = "2.1", default-features = false }
bcrypt = { version = "0.17", default-features = false }
subtle = { version = "2", default-features = false }
hmac = { version = "0.12", default-features = false }
digest = { version = "0.10", default-features = false, features = [
"rand_core",
"subtle",
] }

esp-hal = { version = "1", features = ["unstable", "log-04"] }
# Storage
embedded-storage = "0.3.1"
esp-storage = { version = "0.8.0" }
embedded-storage-async = "0.4"
esp-storage = { version = "0.8" }
esp-bootloader-esp-idf = { version = "0.4.0" }

# Networking
edge-dhcp = "0.6"
edge-nal = "0.5"
edge-nal-embassy = "0.7"
embassy-net = { version = "0.7", features = [
"tcp",
"udp",
"dhcpv4",
"medium-ethernet",
] }
smoltcp = { version = "0.12", default-features = false, features = [
"medium-ethernet",
"socket-raw",
] }

# Utilities
log = "0.4"
static_cell = { version = "2.1" }
# Used for storage::flash singleton
once_cell = { version = "1", features = [
"critical-section",
], default-features = false }
portable-atomic = "1"
snafu = { version = "0.8", default-features = false }
paste = "1"
pretty-hex = { version = "0.4", default-features = false }
embedded-io-async = "0.6.1"
embassy-embedded-hal = "0.3"

[dependencies]
storage = { path = "storage" }
ota = { path = "ota" }

sha2 = { workspace = true }
rustc-hash = { workspace = true }

cfg-if = "1"
ed25519-dalek = { version = "2", default-features = false }
embassy-executor = { version = "0.9.0" }
embassy-net = { version = "0.7", features = [
"tcp",
"udp",
"dhcpv4",
"medium-ethernet",
] }
smoltcp = { version = "0.12", default-features = false, features = [
"medium-ethernet",
"socket-raw",
] }
embassy-time = { version = "0.5.0" }
embedded-io-async = "0.6.1"
embassy-executor = { workspace = true }
embassy-net = { workspace = true }
smoltcp = { workspace = true }
embassy-time = { workspace = true }
embedded-io-async = { workspace = true }
esp-alloc = { version = "0.9.0" }
esp-backtrace = { version = "0.18.0", features = ["panic-handler", "println"] }
esp-backtrace = { version = "0.18", features = ["panic-handler", "println"] }
esp-hal = { workspace = true }
hal-espressif = { path = "hal-espressif", default-features = false }
esp-rtos = { version = "0.2.0", features = ["embassy", "log-04", "esp-radio"] }
esp-radio = { version = "0.17.0", features = ["wifi", "log-04"] }
esp-println = { version = "0.16", features = ["log-04"] }
hex = { version = "0.4", default-features = false }
log = { version = "0.4" }
log = { workspace = true }
static_cell = { workspace = true }
ssh-key = { version = "0.6", default-features = false, features = ["ed25519"] }
sunset = { workspace = true }
sunset-async = { workspace = true }
sunset-sshwire-derive = { workspace = true }
sunset-sftp = { workspace = true }
getrandom = { version = "0.2.10", features = ["custom"] }
embassy-sync = "0.7"
heapless = "0.8"
embassy-futures = "0.1.2"
edge-dhcp = "0.6"
edge-nal = "0.5"
edge-nal-embassy = "0.7"
#sequential-storage = { version = "4", features = ["heapless"] }
embassy-sync = { workspace = true }
heapless = { workspace = true }
embassy-futures = { workspace = true }
edge-dhcp = { workspace = true }
edge-nal = { workspace = true }
edge-nal-embassy = { workspace = true }
esp-storage = { workspace = true }
embedded-storage = { workspace = true }
embassy-embedded-hal = "0.3"
bcrypt = { version = "0.17", default-features = false }
subtle = { version = "2", default-features = false }
hmac = { version = "0.12", default-features = false }
# sha2 = { version = "0.10", default-features = false }
digest = { version = "0.10", default-features = false, features = [
"rand_core",
"subtle",
] }
embedded-storage-async = "0.4"
portable-atomic = "1"
embassy-embedded-hal = { workspace = true }
bcrypt = { workspace = true }
subtle = { workspace = true }
hmac = { workspace = true }
digest = { workspace = true }
embedded-storage-async = { workspace = true }
portable-atomic = { workspace = true }
esp-bootloader-esp-idf = { workspace = true }
snafu = { version = "0.8", default-features = false }
paste = "1"
pretty-hex = { version = "0.4", default-features = false }
snafu = { workspace = true }
paste = { workspace = true }
pretty-hex = { workspace = true }

[profile.dev]
# Rust debug is too slow.
# For debug builds always builds with some optimization
opt-level = 0
debug = 2
debug-assertions = true

[profile.release]
codegen-units = 1 # LLVM can perform better optimizations using a single thread
codegen-units = 1
debug = 2
debug-assertions = true
incremental = false
Expand All @@ -122,7 +150,7 @@ overflow-checks = true

[profile.esp32s2]
inherits = "release"
opt-level = "s" # Optimize for size.
opt-level = "s"

[profile.dev.package.esp-storage]
opt-level = "s"
Expand All @@ -133,7 +161,7 @@ opt-level = "s"
[features]
ipv6 = []

# Enables the SFTP OTA Subsystem. Use ota-packer to pack a binary and PUT it over sftp
# Enables the SFTP OTA Subsystem. Use packer to pack a binary and PUT it over sftp
sftp-ota = []

# MCU options
Expand All @@ -146,6 +174,7 @@ esp32 = [
"esp-println/esp32",
"esp-storage/esp32",
"esp-bootloader-esp-idf/esp32",
"hal-espressif/esp32",
]
esp32c2 = [
"esp-hal/esp32c2",
Expand All @@ -156,6 +185,7 @@ esp32c2 = [
"esp-println/esp32c2",
"esp-storage/esp32c2",
"esp-bootloader-esp-idf/esp32c2",
"hal-espressif/esp32c2",
]
esp32c3 = [
"esp-hal/esp32c3",
Expand All @@ -166,17 +196,8 @@ esp32c3 = [
"esp-println/esp32c3",
"esp-storage/esp32c3",
"esp-bootloader-esp-idf/esp32c3",
"hal-espressif/esp32c3",
]
#esp32c5 = [
# "esp-hal/esp32c5",
# "esp-alloc/esp32c5",
# "esp-backtrace/esp32c5",
# "esp-radio/esp32c5",
# "esp-rtos/esp32c5",
# "esp-println/esp32c5",
# "esp-storage/esp32c5",
# "esp-bootloader-esp-idf/esp32c5",
#]
esp32c6 = [
"esp-hal/esp32c6",
"esp-alloc/esp32c6",
Expand All @@ -186,6 +207,7 @@ esp32c6 = [
"esp-println/esp32c6",
"esp-storage/esp32c6",
"esp-bootloader-esp-idf/esp32c6",
"hal-espressif/esp32c6",
]
esp32s2 = [
"esp-hal/esp32s2",
Expand All @@ -196,6 +218,7 @@ esp32s2 = [
"esp-println/esp32s2",
"esp-storage/esp32s2",
"esp-bootloader-esp-idf/esp32s2",
"hal-espressif/esp32s2",
]
esp32s3 = [
"esp-hal/esp32s3",
Expand All @@ -206,4 +229,5 @@ esp32s3 = [
"esp-println/esp32s3",
"esp-storage/esp32s3",
"esp-bootloader-esp-idf/esp32s3",
"hal-espressif/esp32s3",
]
Loading
Loading