use std::collections::HashMap;
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct MetaState {
#[serde(rename = "serial_number")]
pub serial_number: String,
#[serde(rename = "mac_address")]
pub mac_address: String,
#[serde(rename = "board")]
pub board: String,
#[serde(rename = "build_time")]
pub build_time: String,
#[serde(rename = "battery_status")]
pub battery_status: u8,
#[serde(rename = "temperature_celsius")]
pub temperature_celsius: f64,
#[serde(rename = "battery_voltage")]
pub battery_voltage: f64,
#[serde(rename = "shell_color")]
pub shell_color: String,
}
impl MetaState {
pub fn to_map(&self) -> HashMap<String, serde_json::Value> {
match serde_json::to_value(self) {
Ok(serde_json::Value::Object(obj)) => obj.into_iter().collect(),
_ => HashMap::new(),
}
}
pub fn from_map(map: &HashMap<String, serde_json::Value>) -> Result<Self, serde_json::Error> {
let obj: serde_json::Map<String, serde_json::Value> = map.clone().into_iter().collect();
serde_json::from_value(serde_json::Value::Object(obj))
}
}