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 = "battery_level")]
pub battery_level: u8,
#[serde(rename = "charging")]
pub charging: bool,
#[serde(rename = "external_power")]
pub external_power: bool,
#[serde(rename = "battery_volts")]
pub battery_volts: u16,
}
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))
}
}