2026-01-22 01:21:23 +01:00
|
|
|
[package]
|
|
|
|
|
name = "acid-firmware"
|
|
|
|
|
version = "0.1.0"
|
|
|
|
|
authors = ['Jakub "Limeth" Hlusička']
|
|
|
|
|
description = "Firmware for the ACID keyboard"
|
|
|
|
|
homepage = "https://github.com/haobogu/rmk"
|
|
|
|
|
repository = "https://github.com/haobogu/rmk"
|
|
|
|
|
edition = "2024"
|
|
|
|
|
|
|
|
|
|
[features]
|
|
|
|
|
default = ["usb-log", "limit-fps"]
|
|
|
|
|
# Make RMK not to use USB
|
|
|
|
|
no-usb = ["rmk/_no_usb"]
|
|
|
|
|
# Let RMK use BLE
|
|
|
|
|
ble = ["rmk/esp32s3_ble", "dep:esp-radio", "dep:bt-hci"]
|
|
|
|
|
# Use alternative logging via GPIO5 as RX and GPIO12 as TX.
|
|
|
|
|
# Disables default logging via USB.
|
|
|
|
|
# Does not support esp-println's `println!`.
|
|
|
|
|
alt-log = []
|
|
|
|
|
# Standard logging implementation over USB.
|
|
|
|
|
usb-log = ["esp-backtrace/panic-handler"]
|
|
|
|
|
# RTT (+ logging) for probe-rs
|
|
|
|
|
rtt-log = ["dep:rtt-target", "dep:panic-rtt-target"]
|
|
|
|
|
# Block the main core while it is driving the LCD.
|
|
|
|
|
# This prevents the main core from accessing PSRAM while the LCD is being driven,
|
|
|
|
|
# which causes the LCD to glitch. To prevent the main core from spending all its
|
|
|
|
|
# execution time on just driving the LCD, it will be limited.
|
|
|
|
|
limit-fps = []
|
|
|
|
|
# Development profiles
|
|
|
|
|
develop = ["limit-fps", "alt-log"]
|
|
|
|
|
develop-usb = ["limit-fps", "usb-log", "no-usb", "ble"]
|
|
|
|
|
probe = ["limit-fps", "rtt-log", "no-usb", "ble"]
|
2026-01-24 00:42:16 +01:00
|
|
|
# Formats the EKV database on boot.
|
|
|
|
|
format-db = []
|
2026-01-22 01:21:23 +01:00
|
|
|
|
|
|
|
|
[dependencies]
|
2026-01-30 00:38:43 +01:00
|
|
|
rmk = { version = "0.8.2", git = "https://github.com/Limeth/rmk", rev = "1661c55f5c21e7d80ea3f93255df483302c74b84", default-features = false, features = [
|
2026-01-22 01:21:23 +01:00
|
|
|
"log",
|
|
|
|
|
"storage",
|
|
|
|
|
"vial",
|
|
|
|
|
"controller",
|
|
|
|
|
] }
|
|
|
|
|
embassy-executor = { version = "0.9", features = ["log"] }
|
|
|
|
|
embassy-time = { version = "0.5.0", features = ["log"] }
|
|
|
|
|
embassy-embedded-hal = "0.5.0"
|
|
|
|
|
embassy-sync = { version = "0.7.2", features = ["log"] }
|
2026-01-25 18:43:07 +01:00
|
|
|
embassy-sync-old = { package = "embassy-sync", version = "0.6.2", features = ["log"] }
|
2026-01-22 01:21:23 +01:00
|
|
|
esp-backtrace = { version = "0.18", default-features = false, features = [
|
|
|
|
|
"esp32s3",
|
|
|
|
|
"println",
|
|
|
|
|
] }
|
|
|
|
|
esp-hal = { version = "1.0", features = ["esp32s3", "unstable", "psram", "log-04"] }
|
2026-01-24 00:42:16 +01:00
|
|
|
esp-storage = { version = "0.8", features = ["esp32s3"] }
|
|
|
|
|
esp-alloc = { version = "0.9", features = ["nightly"] }
|
|
|
|
|
esp-println = { version = "0.16", features = ["esp32s3", "log-04"] }
|
2026-01-22 01:21:23 +01:00
|
|
|
esp-radio = { version = "0.17", features = ["esp32s3", "unstable", "ble"], optional = true }
|
|
|
|
|
esp-rtos = { version = "0.2", features = ["esp32s3", "esp-radio", "embassy"] }
|
|
|
|
|
esp-bootloader-esp-idf = { version = "0.4", features = ["esp32s3", "log-04"] }
|
2026-01-24 00:42:16 +01:00
|
|
|
esp-sync = { version = "0.1.1", features = ["esp32s3", "log-04"] }
|
|
|
|
|
bt-hci = { version = "0.6", optional = true } # Must be updated with esp-radio and rmk
|
|
|
|
|
rand_core = { version = "0.9", default-features = false }
|
2026-01-22 01:21:23 +01:00
|
|
|
static_cell = "2"
|
|
|
|
|
lazy_static = { version = "1.5.0", features = ["spin_no_std"], default-features = false }
|
|
|
|
|
log = "0.4.29"
|
|
|
|
|
bitflags = "2.10.0"
|
2026-01-24 00:42:16 +01:00
|
|
|
paste = { package = "pastey", version = "0.2.1" }
|
2026-01-22 01:21:23 +01:00
|
|
|
itertools = { version = "0.14.0", default-features = false }
|
|
|
|
|
bytemuck = "1.24.0"
|
|
|
|
|
critical-section = "1.2.0"
|
|
|
|
|
cfg-if = "1.0.4"
|
2026-01-30 00:38:43 +01:00
|
|
|
xkbcommon = { git = "https://github.com/Limeth/xkbcommon-rs", rev = "d91705a7211e294c09abae5e3e64f1df158bc2c5", default-features = false, features = ["c-lib-wrap"] }
|
2026-01-22 01:21:23 +01:00
|
|
|
rtt-target = { version = "0.6.2", features = ["log"], optional = true }
|
|
|
|
|
panic-rtt-target = { version = "0.2.0", optional = true }
|
|
|
|
|
enumset = "1.1.10"
|
2026-01-24 00:42:16 +01:00
|
|
|
printf-compat = { version = "0.2.1", default-features = false } # Kept older because of the outdated esp toolchain's VaList
|
2026-01-30 03:10:01 +01:00
|
|
|
spectre-api-sys = { workspace = true }
|
2026-01-22 01:21:23 +01:00
|
|
|
sha2 = { version = "0.10.9", default-features = false }
|
|
|
|
|
password-hash = { path = "../password-hash", default-features = false }
|
|
|
|
|
hmac = "0.12.1"
|
2026-01-22 22:57:43 +01:00
|
|
|
data-encoding-macro = "0.1.19"
|
2026-01-24 00:42:16 +01:00
|
|
|
embedded-storage-async = "0.4.1"
|
2026-01-25 01:45:25 +01:00
|
|
|
postcard = { version = "1.1", default-features = false, features = ["alloc", "postcard-derive"] } # TODO: defmt
|
|
|
|
|
serde = { version = "1.0", default-features = false, features = ["derive"] }
|
|
|
|
|
# serde_with = { version = "3.16", default-features = false, features = ["alloc", "macros"] }
|
2026-01-27 02:46:53 +01:00
|
|
|
serde_bytes = { version = "0.11.19", default-features = false, features = ["alloc"] }
|
2026-01-25 01:45:25 +01:00
|
|
|
chrono = { version = "0.4.43", default-features = false, features = ["alloc", "serde"] } # TODO: defmt
|
2026-01-28 22:46:14 +01:00
|
|
|
tinyvec = { version = "1.10.0", default-features = false, features = ["alloc"] }
|
|
|
|
|
esp-metadata-generated = { version = "0.3.0", features = ["esp32s3"] }
|
2026-01-22 01:21:23 +01:00
|
|
|
|
2026-01-30 00:37:46 +01:00
|
|
|
# A fork of slint with patches for `allocator_api` support.
|
|
|
|
|
# Don't forget to change `slint-build` in build dependencies, if this is changed.
|
|
|
|
|
slint = { version = "1.14.1", git = "https://github.com/Limeth/slint", rev = "c2e5d05df2476557a299a78664e148d2fe62427d", default-features = false, features = ["compat-1-2", "libm", "log", "unsafe-single-threaded", "renderer-software"]}
|
|
|
|
|
i-slint-common = { version = "1.14.1", git = "https://github.com/Limeth/slint", rev = "c2e5d05df2476557a299a78664e148d2fe62427d" }
|
|
|
|
|
i-slint-core = { version = "1.14.1", git = "https://github.com/Limeth/slint", rev = "c2e5d05df2476557a299a78664e148d2fe62427d", default-features = false }
|
|
|
|
|
|
2026-01-22 01:21:23 +01:00
|
|
|
# Crates for serial UART CLI
|
|
|
|
|
embedded-cli = { version = "0.2.1", default-features = false, features = ["help", "macros"] }
|
2026-01-31 20:21:40 +01:00
|
|
|
embedded-io = "0.6"
|
2026-01-22 01:21:23 +01:00
|
|
|
mutually_exclusive_features = "0.1.0"
|
|
|
|
|
|
2026-01-24 00:42:16 +01:00
|
|
|
[dependencies.ekv]
|
|
|
|
|
version = "1.0.0"
|
|
|
|
|
features = [
|
|
|
|
|
# TODO: "defmt",
|
|
|
|
|
"crc",
|
|
|
|
|
"max-page-count-2048",
|
|
|
|
|
"max-key-size-256",
|
2026-01-25 18:43:07 +01:00
|
|
|
# "max-value-size-65536",
|
|
|
|
|
"max-value-size-1024",
|
2026-01-24 00:42:16 +01:00
|
|
|
# These must adhere to `FlashStorage`'s parameters.
|
|
|
|
|
"align-4",
|
|
|
|
|
"page-size-4096",
|
|
|
|
|
]
|
|
|
|
|
|
2026-01-22 01:21:23 +01:00
|
|
|
[build-dependencies]
|
|
|
|
|
xz2 = "0.1.7"
|
|
|
|
|
json = "0.12"
|
|
|
|
|
const-gen = "1.6"
|
|
|
|
|
embuild = "0.33"
|
|
|
|
|
cc = "1.2.9"
|
2026-01-30 00:37:46 +01:00
|
|
|
slint-build = { version = "1.14.1", git = "https://github.com/Limeth/slint", rev = "c2e5d05df2476557a299a78664e148d2fe62427d" }
|
2026-01-24 00:42:16 +01:00
|
|
|
gix = { version = "0.78", default-features = false, features = ["max-performance", "status"] }
|
2026-01-22 01:21:23 +01:00
|
|
|
indoc = "2.0.7"
|
|
|
|
|
|
|
|
|
|
[[bin]]
|
|
|
|
|
name = "acid-firmware"
|
|
|
|
|
test = false
|
|
|
|
|
bench = false
|
|
|
|
|
|
|
|
|
|
[profile.release-with-debug]
|
|
|
|
|
inherits = "release"
|
|
|
|
|
debug = true
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[profile.dev.package.esp-storage]
|
|
|
|
|
opt-level = 3
|
|
|
|
|
|
|
|
|
|
[profile.dev]
|
|
|
|
|
# Rust debug is too slow.
|
|
|
|
|
# For debug builds always builds with some optimization
|
|
|
|
|
opt-level = "s"
|
|
|
|
|
|
|
|
|
|
[profile.release]
|
|
|
|
|
codegen-units = 1 # LLVM can perform better optimizations using a single thread
|
|
|
|
|
debug = 2
|
|
|
|
|
debug-assertions = false
|
|
|
|
|
incremental = false
|
|
|
|
|
lto = 'thin'
|
|
|
|
|
opt-level = 3
|
|
|
|
|
overflow-checks = false
|