use crate::{Guid, PhysicalAddress};
use bitflags::bitflags;
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(C)]
pub struct CapsuleBlockDescriptor {
pub length: u64,
pub address: PhysicalAddress,
}
bitflags! {
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(transparent)]
pub struct CapsuleFlags: u32 {
const TYPE_SPECIFIC_BIT_0 = 1 << 0;
const TYPE_SPECIFIC_BIT_1 = 1 << 1;
const TYPE_SPECIFIC_BIT_2 = 1 << 2;
const TYPE_SPECIFIC_BIT_3 = 1 << 3;
const TYPE_SPECIFIC_BIT_4 = 1 << 4;
const TYPE_SPECIFIC_BIT_5 = 1 << 5;
const TYPE_SPECIFIC_BIT_6 = 1 << 6;
const TYPE_SPECIFIC_BIT_7 = 1 << 7;
const TYPE_SPECIFIC_BIT_8 = 1 << 8;
const TYPE_SPECIFIC_BIT_9 = 1 << 9;
const TYPE_SPECIFIC_BIT_10 = 1 << 10;
const TYPE_SPECIFIC_BIT_11 = 1 << 11;
const TYPE_SPECIFIC_BIT_12 = 1 << 12;
const TYPE_SPECIFIC_BIT_13 = 1 << 13;
const TYPE_SPECIFIC_BIT_14 = 1 << 14;
const TYPE_SPECIFIC_BIT_15 = 1 << 15;
const PERSIST_ACROSS_RESET = 1 << 16;
const POPULATE_SYSTEM_TABLE = 1 << 17;
const INITIATE_RESET = 1 << 18;
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(C)]
pub struct CapsuleHeader {
pub capsule_guid: Guid,
pub header_size: u32,
pub flags: CapsuleFlags,
pub capsule_image_size: u32,
}