39 lines
993 B
Rust
39 lines
993 B
Rust
use std::fmt::{Display, Formatter};
|
|
use std::str::FromStr;
|
|
|
|
#[derive(serde::Serialize, serde::Deserialize, Debug, Copy, Clone, Eq, PartialEq)]
|
|
pub enum OTAPlatform {
|
|
#[serde(rename = "Wt32-Eth01")]
|
|
Wt32Eth01,
|
|
}
|
|
|
|
impl OTAPlatform {
|
|
/// Get the list of supported platforms
|
|
pub fn supported_platforms() -> &'static [Self] {
|
|
&[OTAPlatform::Wt32Eth01]
|
|
}
|
|
}
|
|
|
|
impl Display for OTAPlatform {
|
|
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
|
let s = serde_json::to_string(&self).unwrap().replace('"', "");
|
|
write!(f, "{s}")
|
|
}
|
|
}
|
|
|
|
impl FromStr for OTAPlatform {
|
|
type Err = anyhow::Error;
|
|
|
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
|
Ok(serde_json::from_str::<Self>(&format!("\"{s}\""))?)
|
|
}
|
|
}
|
|
|
|
/// Single OTA update information
|
|
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, Eq, PartialEq)]
|
|
pub struct OTAUpdate {
|
|
pub platform: OTAPlatform,
|
|
pub version: semver::Version,
|
|
pub file_size: u64,
|
|
}
|