refactor: use IntEnum instead of a custom implementation for ConfigKey in config.rs
This commit is contained in:
Generated
+25
@@ -210,6 +210,7 @@ dependencies = [
|
|||||||
"esp-radio",
|
"esp-radio",
|
||||||
"esp-rtos",
|
"esp-rtos",
|
||||||
"esp-storage",
|
"esp-storage",
|
||||||
|
"int-enum",
|
||||||
"picoserve",
|
"picoserve",
|
||||||
"portable-atomic",
|
"portable-atomic",
|
||||||
"postcard",
|
"postcard",
|
||||||
@@ -1431,6 +1432,18 @@ dependencies = [
|
|||||||
"syn 2.0.117",
|
"syn 2.0.117",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "int-enum"
|
||||||
|
version = "1.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e366a1634cccc76b4cfd3e7580de9b605e4d93f1edac48d786c1f867c0def495"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"proc-macro2-diagnostics",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.117",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
@@ -1720,6 +1733,18 @@ dependencies = [
|
|||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2-diagnostics"
|
||||||
|
version = "0.10.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.117",
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.45"
|
version = "1.0.45"
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ sequential-storage = "8.0"
|
|||||||
esp-storage = { version = "0.9", features = ["defmt", "esp32c6"] }
|
esp-storage = { version = "0.9", features = ["defmt", "esp32c6"] }
|
||||||
postcard = { version = "1.1", default-features = false }
|
postcard = { version = "1.1", default-features = false }
|
||||||
serde = { version = "1.0", default-features = false, features = ["derive"] }
|
serde = { version = "1.0", default-features = false, features = ["derive"] }
|
||||||
|
int-enum = "1.2.0"
|
||||||
|
|
||||||
|
|
||||||
# For fine tuning these settings, please refer to https://doc.rust-lang.org/cargo/reference/profiles.html
|
# For fine tuning these settings, please refer to https://doc.rust-lang.org/cargo/reference/profiles.html
|
||||||
|
|||||||
+2
-19
@@ -4,6 +4,7 @@ use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
|
|||||||
use embedded_rpc::RpcService;
|
use embedded_rpc::RpcService;
|
||||||
use esp_hal::peripherals::FLASH;
|
use esp_hal::peripherals::FLASH;
|
||||||
use esp_storage::FlashStorage;
|
use esp_storage::FlashStorage;
|
||||||
|
use int_enum::IntEnum;
|
||||||
use sequential_storage::{
|
use sequential_storage::{
|
||||||
cache::Cache,
|
cache::Cache,
|
||||||
map::{Key, MapConfig, MapStorage, SerializationError},
|
map::{Key, MapConfig, MapStorage, SerializationError},
|
||||||
@@ -52,30 +53,12 @@ async fn config_handler(flash: FLASH<'static>) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, IntEnum)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
enum ConfigKey {
|
enum ConfigKey {
|
||||||
Wifi,
|
Wifi,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TryFrom<u8> for ConfigKey {
|
|
||||||
type Error = ();
|
|
||||||
|
|
||||||
fn try_from(value: u8) -> Result<Self, Self::Error> {
|
|
||||||
const WIFI: u8 = ConfigKey::Wifi as u8;
|
|
||||||
match value {
|
|
||||||
WIFI => Ok(ConfigKey::Wifi),
|
|
||||||
_ => Err(()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<ConfigKey> for u8 {
|
|
||||||
fn from(c: ConfigKey) -> u8 {
|
|
||||||
c as u8
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Key for ConfigKey {
|
impl Key for ConfigKey {
|
||||||
fn get_len(_: &[u8]) -> Result<usize, SerializationError> {
|
fn get_len(_: &[u8]) -> Result<usize, SerializationError> {
|
||||||
Ok(1)
|
Ok(1)
|
||||||
|
|||||||
Reference in New Issue
Block a user