cat_dev/mion/proto/cgis/
update.rs

1use std::fmt::{Display, Formatter, Result as FmtResult};
2
3/// MION firmware versions that are listed when performing an HTTP GET request
4/// to `/update.cgi`.
5#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)]
6pub struct MIONFirmwareVersions {
7	/// The three FW bytes of the MION FW.
8	fw: [u8; 3],
9	/// The version of the FPGA firmware (uses a seperate scheme than the MION
10	/// FW).
11	fpga: u32,
12}
13impl MIONFirmwareVersions {
14	#[must_use]
15	pub const fn from_versions(fw: [u8; 3], fpga: u32) -> Self {
16		Self { fw, fpga }
17	}
18
19	#[must_use]
20	pub const fn get_mion_version(&self) -> [u8; 3] {
21		self.fw
22	}
23	/// Get a human readable version of the MION FW.
24	#[must_use]
25	pub fn displayable_mion_version(&self) -> String {
26		format!("0.{:02}.{}.{}", self.fw[0], self.fw[1], self.fw[2])
27	}
28
29	#[must_use]
30	pub const fn get_fpga_version(&self) -> u32 {
31		self.fpga
32	}
33	/// Get a human readable display version of the FPGA version.
34	#[must_use]
35	pub fn displayable_fpga_version(&self) -> String {
36		format!("{:02X}", self.fpga)
37	}
38}
39impl Display for MIONFirmwareVersions {
40	fn fmt(&self, fmt: &mut Formatter<'_>) -> FmtResult {
41		write!(
42			fmt,
43			"MION: {} / FPGA: {}",
44			self.displayable_mion_version(),
45			self.displayable_fpga_version(),
46		)
47	}
48}