#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct ModuleHeader {
pub version: u16,
pub entry_offset: u32,
pub flags: u32,
pub monotonic_version: u64,
pub hw_revision: u32,
pub code_crc: u32,
}
impl Default for ModuleHeader {
fn default() -> Self {
Self {
version: crate::CURRENT_MODULE_VERSION,
entry_offset: 0,
flags: 0,
monotonic_version: 0,
hw_revision: 0,
code_crc: 0,
}
}
}
#[derive(Debug, Clone, Copy)]
pub enum HeaderFlags {
Signed,
Compressed,
HardwareLocked,
Critical,
}
impl HeaderFlags {
pub fn bit(self) -> u32 {
match self {
HeaderFlags::Signed => super::FLAG_SIGNED,
HeaderFlags::Compressed => super::FLAG_COMPRESSED,
HeaderFlags::HardwareLocked => super::FLAG_HW_LOCKED,
HeaderFlags::Critical => super::FLAG_CRITICAL,
}
}
pub fn name(self) -> &'static str {
match self {
HeaderFlags::Signed => "signed",
HeaderFlags::Compressed => "compressed",
HeaderFlags::HardwareLocked => "hw-locked",
HeaderFlags::Critical => "critical",
}
}
}