//! Human Interface Infrastructure (HII) //! //! This module contains bindings and definitions copied from Section 33.3 of //! the UEFI spec, as well as the core HII related definitions. // // Core HII Definitions // // This is the exception to the rule. It's defined in 34.8 (HII_DATABASE // protocol), not 33.3, but it's used throughout the HII protocols, so it makes // sense to be defined at the base. pub type Handle = *mut core::ffi::c_void; // // 33.3.1 Package Lists and Package Headers // #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct PackageHeader { pub length: [u8; 3], pub r#type: u8, pub data: [u8; N], } pub const PACKAGE_TYPE_ALL: u8 = 0x00; pub const PACKAGE_TYPE_GUID: u8 = 0x01; pub const PACKAGE_FORMS: u8 = 0x02; pub const PACKAGE_STRINGS: u8 = 0x04; pub const PACKAGE_FONTS: u8 = 0x05; pub const PACKAGE_IMAGES: u8 = 0x06; pub const PACKAGE_SIMPLE_FONTS: u8 = 0x07; pub const PACKAGE_DEVICE_PATH: u8 = 0x08; pub const PACKAGE_KEYBOARD_LAYOUT: u8 = 0x09; pub const PACKAGE_ANIMATIONS: u8 = 0x0A; pub const PACKAGE_END: u8 = 0xDF; pub const PACKAGE_TYPE_SYSTEM_BEGIN: u8 = 0xE0; pub const PACKAGE_TYPE_SYSTEM_END: u8 = 0xFF; #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct PackageListHeader { pub package_list_guid: crate::base::Guid, pub package_length: u32, } // // 33.3.3 Font Package // #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct FontPackageHdr { pub header: PackageHeader, pub hdr_size: u32, pub glyph_block_offset: u32, pub cell: GlyphInfo, pub font_style: FontStyle, pub font_family: [crate::base::Char16; N], } pub type FontStyle = u32; pub const FONT_STYLE_NORMAL: FontStyle = 0x00000000; pub const FONT_STYLE_BOLD: FontStyle = 0x00000001; pub const FONT_STYLE_ITALIC: FontStyle = 0x00000002; pub const FONT_STYLE_EMBOSS: FontStyle = 0x00010000; pub const FONT_STYLE_OUTLINE: FontStyle = 0x00020000; pub const FONT_STYLE_SHADOW: FontStyle = 0x00040000; pub const FONT_STYLE_UNDERLINE: FontStyle = 0x00080000; pub const FONT_STYLE_DBL_UNDER: FontStyle = 0x00100000; #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GlyphBlock { pub block_type: u8, pub block_body: [u8; N], } pub const GIBT_END: u8 = 0x00; pub const GIBT_GLYPH: u8 = 0x10; pub const GIBT_GLYPHS: u8 = 0x11; pub const GIBT_GLYPH_DEFAULT: u8 = 0x12; pub const GIBT_GLYPHS_DEFAULT: u8 = 0x13; pub const GIBT_GLYPH_VARIABILITY: u8 = 0x14; pub const GIBT_DUPLICATE: u8 = 0x20; pub const GIBT_SKIP2: u8 = 0x21; pub const GIBT_SKIP1: u8 = 0x22; pub const GIBT_DEFAULTS: u8 = 0x23; pub const GIBT_EXT1: u8 = 0x30; pub const GIBT_EXT2: u8 = 0x31; pub const GIBT_EXT4: u8 = 0x32; #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GlyphInfo { pub width: u16, pub height: u16, pub offset_x: i16, pub offset_y: i16, pub advance_x: i16, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GibtDefaultsBlock { pub header: GlyphBlock, pub cell: GlyphInfo, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GibtDuplicateBlock { pub header: GlyphBlock, pub char_value: crate::base::Char16, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GlyphGibtEndBlock { pub header: GlyphBlock, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GibtExt1Block { pub header: GlyphBlock, pub block_type_2: u8, pub length: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GibtExt2Block { pub header: GlyphBlock, pub block_type_2: u8, pub length: u16, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GibtExt4Block { pub header: GlyphBlock, pub block_type_2: u8, pub length: u32, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GibtGlyphBlock { pub header: GlyphBlock, pub cell: GlyphInfo, pub bitmap_data: [u8; N], } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GibtGlyphsBlock { pub header: GlyphBlock, pub cell: GlyphInfo, pub count: u16, pub bitmap_data: [u8; N], } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GibtGlyphDefaultBlock { pub header: GlyphBlock, pub bitmap_data: [u8; N], } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GibtGlypshDefaultBlock { pub header: GlyphBlock, pub count: u16, pub bitmap_data: [u8; N], } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GibtSkip2Block { pub header: GlyphBlock, pub skip_count: u16, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GibtSkip1Block { pub header: GlyphBlock, pub skip_count: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct GibtVariabilityBlock { pub header: GlyphBlock, pub cell: GlyphInfo, pub glyph_pack_in_bits: u8, pub bitmap_data: [u8; N], } // // 33.3.8 Forms Package // #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct FormPackageHdr { pub header: PackageHeader, pub op_code_header: IfrOpHeader, // Op-Codes Follow... } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrOpHeader { pub op_code: u8, pub length_and_scope: u8, // Length:7, Scope:1 } pub type QuestionId = u16; pub type ImageId = u16; pub type StringId = u16; pub type FormId = u16; pub type VarstoreId = u16; pub type AnimationId = u16; #[repr(C)] #[derive(Clone, Copy)] pub struct IfrQuestionHeader { pub header: IfrStatementHeader, pub question_id: QuestionId, pub var_store_id: VarstoreId, pub var_store_info: IfrQuestionHeaderVarstoreInfo, pub flags: u8, } #[repr(C)] #[derive(Clone, Copy)] pub union IfrQuestionHeaderVarstoreInfo { pub var_name: StringId, pub var_offset: u16, } pub const IFR_FLAG_READ_ONLY: u8 = 0x01; pub const IFR_FLAG_CALLBACK: u8 = 0x04; pub const IFR_FLAG_RESET_REQUIRED: u8 = 0x10; pub const IFR_FLAG_REST_STYLE: u8 = 0x20; pub const IFR_FLAG_RECONNECT_REQUIRED: u8 = 0x40; pub const IFR_FLAG_OPTIONS_ONLY: u8 = 0x80; #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrStatementHeader { pub prompt: StringId, pub help: StringId, } pub const IFR_FORM_OP: u8 = 0x01; pub const IFR_SUBTITLE_OP: u8 = 0x02; pub const IFR_TEXT_OP: u8 = 0x03; pub const IFR_IMAGE_OP: u8 = 0x04; pub const IFR_ONE_OF_OP: u8 = 0x05; pub const IFR_CHECKBOX_OP: u8 = 0x06; pub const IFR_NUMERIC_OP: u8 = 0x07; pub const IFR_PASSWORD_OP: u8 = 0x08; pub const IFR_ONE_OF_OPTION_OP: u8 = 0x09; pub const IFR_SUPPRESS_IF_OP: u8 = 0x0A; pub const IFR_LOCKED_OP: u8 = 0x0B; pub const IFR_ACTION_OP: u8 = 0x0C; pub const IFR_RESET_BUTTON_OP: u8 = 0x0D; pub const IFR_FORM_SET_OP: u8 = 0x0E; pub const IFR_REF_OP: u8 = 0x0F; pub const IFR_NO_SUBMIT_IF_OP: u8 = 0x10; pub const IFR_INCONSISTENT_IF_OP: u8 = 0x11; pub const IFR_EQ_ID_VAL_OP: u8 = 0x12; pub const IFR_EQ_ID_ID_OP: u8 = 0x13; pub const IFR_EQ_ID_VAL_LIST_OP: u8 = 0x14; pub const IFR_AND_OP: u8 = 0x15; pub const IFR_OR_OP: u8 = 0x16; pub const IFR_NOT_OP: u8 = 0x17; pub const IFR_RULE_OP: u8 = 0x18; pub const IFR_GRAY_OUT_IF_OP: u8 = 0x19; pub const IFR_DATE_OP: u8 = 0x1A; pub const IFR_TIME_OP: u8 = 0x1B; pub const IFR_STRING_OP: u8 = 0x1C; pub const IFR_REFRESH_OP: u8 = 0x1D; pub const IFR_DISABLE_IF_OP: u8 = 0x1E; pub const IFR_ANIMATION_OP: u8 = 0x1F; pub const IFR_TO_LOWER_OP: u8 = 0x20; pub const IFR_TO_UPPER_OP: u8 = 0x21; pub const IFR_MAP_OP: u8 = 0x22; pub const IFR_ORDERED_LIST_OP: u8 = 0x23; pub const IFR_VARSTORE_OP: u8 = 0x24; pub const IFR_VARSTORE_NAME_VALUE_OP: u8 = 0x25; pub const IFR_VARSTORE_EFI_OP: u8 = 0x26; pub const IFR_VARSTORE_DEVICE_OP: u8 = 0x27; pub const IFR_VERSION_OP: u8 = 0x28; pub const IFR_END_OP: u8 = 0x29; pub const IFR_MATCH_OP: u8 = 0x2A; pub const IFR_GET_OP: u8 = 0x2B; pub const IFR_SET_OP: u8 = 0x2C; pub const IFR_READ_OP: u8 = 0x2D; pub const IFR_WRITE_OP: u8 = 0x2E; pub const IFR_EQUAL_OP: u8 = 0x2F; pub const IFR_NOT_EQUAL_OP: u8 = 0x30; pub const IFR_GREATER_THAN_OP: u8 = 0x31; pub const IFR_GREATER_EQUAL_OP: u8 = 0x32; pub const IFR_LESS_THAN_OP: u8 = 0x33; pub const IFR_LESS_EQUAL_OP: u8 = 0x34; pub const IFR_BITWISE_AND_OP: u8 = 0x35; pub const IFR_BITWISE_OR_OP: u8 = 0x36; pub const IFR_BITWISE_NOT_OP: u8 = 0x37; pub const IFR_SHIFT_LEFT_OP: u8 = 0x38; pub const IFR_SHIFT_RIGHT_OP: u8 = 0x39; pub const IFR_ADD_OP: u8 = 0x3A; pub const IFR_SUBTRACT_OP: u8 = 0x3B; pub const IFR_MULTIPLY_OP: u8 = 0x3C; pub const IFR_DIVIDE_OP: u8 = 0x3D; pub const IFR_MODULO_OP: u8 = 0x3E; pub const IFR_RULE_REF_OP: u8 = 0x3F; pub const IFR_QUESTION_REF1_OP: u8 = 0x40; pub const IFR_QUESTION_REF2_OP: u8 = 0x41; pub const IFR_UINT8_OP: u8 = 0x42; pub const IFR_UINT16_OP: u8 = 0x43; pub const IFR_UINT32_OP: u8 = 0x44; pub const IFR_UINT64_OP: u8 = 0x45; pub const IFR_TRUE_OP: u8 = 0x46; pub const IFR_FALSE_OP: u8 = 0x47; pub const IFR_TO_UINT_OP: u8 = 0x48; pub const IFR_TO_STRING_OP: u8 = 0x49; pub const IFR_TO_BOOLEAN_OP: u8 = 0x4A; pub const IFR_MID_OP: u8 = 0x4B; pub const IFR_FIND_OP: u8 = 0x4C; pub const IFR_TOKEN_OP: u8 = 0x4D; pub const IFR_STRING_REF1_OP: u8 = 0x4E; pub const IFR_STRING_REF2_OP: u8 = 0x4F; pub const IFR_CONDITIONAL_OP: u8 = 0x50; pub const IFR_QUESTION_REF3_OP: u8 = 0x51; pub const IFR_ZERO_OP: u8 = 0x52; pub const IFR_ONE_OP: u8 = 0x53; pub const IFR_ONES_OP: u8 = 0x54; pub const IFR_UNDEFINED_OP: u8 = 0x55; pub const IFR_LENGTH_OP: u8 = 0x56; pub const IFR_DUP_OP: u8 = 0x57; pub const IFR_THIS_OP: u8 = 0x58; pub const IFR_SPAN_OP: u8 = 0x59; pub const IFR_VALUE_OP: u8 = 0x5A; pub const IFR_DEFAULT_OP: u8 = 0x5B; pub const IFR_DEFAULTSTORE_OP: u8 = 0x5C; pub const IFR_FORM_MAP_OP: u8 = 0x5D; pub const IFR_CATENATE_OP: u8 = 0x5E; pub const IFR_GUID_OP: u8 = 0x5F; pub const IFR_SECURITY_OP: u8 = 0x60; pub const IFR_MODAL_TAG_OP: u8 = 0x61; pub const IFR_REFRESH_ID_OP: u8 = 0x62; pub const IFR_WARNING_IF_OP: u8 = 0x63; pub const IFR_MATCH2_OP: u8 = 0x64; #[repr(C)] #[derive(Clone, Copy)] pub struct IfrAction { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub question_config: StringId, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrAction1 { pub header: IfrOpHeader, pub question: IfrQuestionHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrAnimation { pub header: IfrOpHeader, pub id: AnimationId, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrAdd { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrAnd { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrBitwiseAnd { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrBitwiseNot { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrBitwiseOr { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrCatenate { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrCheckbox { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub flags: u8, } pub const IFR_CHECKBOX_DEFAULT: u8 = 0x01; pub const IFR_CHECKBOX_DEFAULT_MFG: u8 = 0x02; #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrConditional { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrDate { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub flags: u8, } pub const QF_DATE_YEAR_SUPPRESS: u8 = 0x01; pub const QF_DATE_MONTH_SUPPRESS: u8 = 0x02; pub const QF_DATE_DAY_SUPPRESS: u8 = 0x04; pub const QF_DATE_STORAGE: u8 = 0x30; pub const QF_DATE_STORAGE_NORMAL: u8 = 0x00; pub const QF_DATE_STORAGE_TIME: u8 = 0x10; pub const QF_DATE_STORAGE_WAKEUP: u8 = 0x20; #[repr(C)] #[derive(Clone, Copy)] pub struct IfrDefault { pub header: IfrOpHeader, pub default_id: u16, pub r#type: u8, pub value: IfrTypeValue, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrDefault2 { pub header: IfrOpHeader, pub default_id: u16, pub r#type: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrDefaultstore { pub header: IfrOpHeader, pub default_name: StringId, pub default_id: u16, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrDisableIf { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrDivide { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrDup { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrEnd { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrEqual { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrEqIdId { pub header: IfrOpHeader, pub question_id_1: QuestionId, pub question_id_2: QuestionId, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrEqIdValList { pub header: IfrOpHeader, pub question_id: QuestionId, pub list_length: u16, pub value_list: [u16; N], } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrEqIdVal { pub header: IfrOpHeader, pub question_id: QuestionId, pub value: u16, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrFalse { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrFind { pub header: IfrOpHeader, pub format: u8, } pub const IFR_FF_CASE_SENSITIVE: u8 = 0x00; pub const IFR_FF_CASE_INSENSITIVE: u8 = 0x01; #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrForm { pub header: IfrOpHeader, pub form_id: FormId, pub form_title: StringId, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrFormMapMethod { pub method_title: StringId, pub method_identifier: crate::base::Guid, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrFormMap { pub header: IfrOpHeader, pub form_id: FormId, pub methods: [IfrFormMapMethod; N], } pub const STANDARD_FORM_GUID: crate::base::Guid = crate::base::Guid::from_fields( 0x3bd2f4ec, 0xe524, 0x46e4, 0xa9, 0xd8, &[0x51, 0x01, 0x17, 0x42, 0x55, 0x62], ); #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrFormSet { pub header: IfrOpHeader, pub guid: crate::base::Guid, pub form_set_title: StringId, pub help: StringId, pub flags: u8, pub class_guid: [crate::base::Guid; N], } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrGet { pub header: IfrOpHeader, pub var_store_id: VarstoreId, pub var_store_info: IfrGetVarStoreInfo, pub var_store_type: u8, } #[repr(C)] #[derive(Clone, Copy)] pub union IfrGetVarStoreInfo { pub var_name: StringId, pub var_offset: u16, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrGrayOutIf { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrGreaterEqual { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrGreaterThan { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrGuid { pub header: IfrOpHeader, pub guid: crate::base::Guid, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrImage { pub id: ImageId, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrInconsistentIf { pub header: IfrOpHeader, pub error: StringId, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrLength { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrLessEqual { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrLessThan { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrLocked { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrMap { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrMatch { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrMid { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrModalTag { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrModulo { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrMultiply { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrNot { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrNotEqual { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrNoSubmitIf { pub header: IfrOpHeader, pub error: StringId, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrNumericDataU8 { pub min_value: u8, pub max_value: u8, pub step: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrNumericDataU16 { pub min_value: u16, pub max_value: u16, pub step: u16, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrNumericDataU32 { pub min_value: u32, pub max_value: u32, pub step: u32, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrNumericDataU64 { pub min_value: u64, pub max_value: u64, pub step: u64, } #[repr(C)] #[derive(Clone, Copy)] pub union IfrNumericData { pub r#u8: IfrNumericDataU8, pub r#u16: IfrNumericDataU16, pub r#u32: IfrNumericDataU32, pub r#u64: IfrNumericDataU64, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrNumeric { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub flags: u8, pub data: IfrNumericData, } pub const IFR_NUMERIC_SIZE: u8 = 0x03; pub const IFR_NUMERIC_SIZE_1: u8 = 0x00; pub const IFR_NUMERIC_SIZE_2: u8 = 0x01; pub const IFR_NUMERIC_SIZE_4: u8 = 0x02; pub const IFR_NUMERIC_SIZE_8: u8 = 0x03; pub const IFR_DISPLAY: u8 = 0x30; pub const IFR_DISPLAY_INT_DEC: u8 = 0x00; pub const IFR_DISPLAY_UINT_DEC: u8 = 0x10; pub const IFR_DISPLAY_UINT_HEX: u8 = 0x20; #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrOne { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrOnes { pub header: IfrOpHeader, } type IfrOneOfData = IfrNumericData; #[repr(C)] #[derive(Clone, Copy)] pub struct IfrOneOf { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub flags: u8, pub data: IfrOneOfData, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrOneOfOption { pub header: IfrOpHeader, pub option: StringId, pub flags: u8, pub r#type: u8, pub value: IfrTypeValue, } #[repr(C)] #[derive(Clone, Copy)] pub union IfrTypeValue { pub r#u8: u8, pub r#u16: u16, pub r#u32: u32, pub r#u64: u64, pub b: crate::base::Boolean, pub time: Time, pub date: Date, pub string: StringId, pub r#ref: Ref, pub buffer: [u8; N], } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct Time { pub hour: u8, pub minute: u8, pub second: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct Date { pub year: u16, pub month: u8, pub day: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct Ref { pub question_id: QuestionId, pub form_id: FormId, pub form_set_guid: crate::base::Guid, pub device_path: StringId, } pub const IFR_TYPE_NUM_SIZE_8: u8 = 0x00; pub const IFR_TYPE_NUM_SIZE_16: u8 = 0x01; pub const IFR_TYPE_NUM_SIZE_32: u8 = 0x02; pub const IFR_TYPE_NUM_SIZE_64: u8 = 0x03; pub const IFR_TYPE_BOOLEAN: u8 = 0x04; pub const IFR_TYPE_TIME: u8 = 0x05; pub const IFR_TYPE_DATE: u8 = 0x06; pub const IFR_TYPE_STRING: u8 = 0x07; pub const IFR_TYPE_OTHER: u8 = 0x08; pub const IFR_TYPE_UNDEFINED: u8 = 0x09; pub const IFR_TYPE_ACTION: u8 = 0x0A; pub const IFR_TYPE_BUFFER: u8 = 0x0B; pub const IFR_TYPE_REF: u8 = 0x0C; pub const IFR_OPTION_DEFAULT: u8 = 0x10; pub const IFR_OPTION_DEFAULT_MFG: u8 = 0x20; #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrOr { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrOrderedList { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub max_containers: u8, pub flags: u8, } pub const IFR_UNIQUE_SET: u8 = 0x01; pub const IFR_NO_EMPTY_SET: u8 = 0x02; #[repr(C)] #[derive(Clone, Copy)] pub struct IfrPassword { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub min_size: u16, pub max_size: u16, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrQuestionRef1 { pub header: IfrOpHeader, pub question_id: QuestionId, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrQuestionRef2 { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrQuestionRef3 { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrQuestionRef32 { pub header: IfrOpHeader, pub device_path: StringId, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrQuestionRef33 { pub header: IfrOpHeader, pub device_path: StringId, pub guid: crate::base::Guid, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrRead { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrRef { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub form_id: FormId, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrRef2 { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub form_id: FormId, pub question_id: QuestionId, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrRef3 { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub form_id: FormId, pub question_id: QuestionId, pub form_set_id: crate::base::Guid, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrRef4 { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub form_id: FormId, pub question_id: QuestionId, pub form_set_id: crate::base::Guid, pub device_path: StringId, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrRef5 { pub header: IfrOpHeader, pub question: IfrQuestionHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrRefresh { pub header: IfrOpHeader, pub refresh_interval: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrRefreshId { pub header: IfrOpHeader, pub refresh_event_group_id: crate::base::Guid, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrResetButton { pub header: IfrOpHeader, pub statement: IfrStatementHeader, pub deafult_id: DefaultId, } pub type DefaultId = u16; #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrRule { pub header: IfrOpHeader, pub rule_id: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrRuleRef { pub header: IfrOpHeader, pub rule_id: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrSecurity { pub header: IfrOpHeader, pub permissions: crate::base::Guid, } #[repr(C)] #[derive(Clone, Copy)] pub union IfrSetVarStoreInfo { pub var_name: StringId, pub var_offset: u16, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrSet { pub header: IfrOpHeader, pub var_store_id: VarstoreId, pub var_store_info: IfrSetVarStoreInfo, pub var_store_type: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrShiftLeft { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrShiftRight { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrSpan { pub header: IfrOpHeader, pub flags: u8, } pub const IFR_FLAGS_FIRST_MATCHING: u8 = 0x00; pub const IFR_FLAGS_FIRST_NON_MATCHING: u8 = 0x01; #[repr(C)] #[derive(Clone, Copy)] pub struct IfrString { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub min_size: u8, pub max_size: u8, pub flags: u8, } pub const IFR_STRING_MULTI_LINE: u8 = 0x01; #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrStringRef1 { pub header: IfrOpHeader, pub string_id: StringId, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrStringRef2 { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrSubtitle { pub header: IfrOpHeader, pub statement: IfrStatementHeader, pub flags: u8, } pub const IFR_FLAGS_HORIZONTAL: u8 = 0x01; #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrSubtract { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrSuppressIf { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrText { pub header: IfrOpHeader, pub statement: IfrStatementHeader, pub text_two: StringId, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrThis { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy)] pub struct IfrTime { pub header: IfrOpHeader, pub question: IfrQuestionHeader, pub flags: u8, } pub const QF_TIME_HOUR_SUPPRESS: u8 = 0x01; pub const QF_TIME_MINUTE_SUPPRESS: u8 = 0x02; pub const QF_TIME_SECOND_SUPPRESS: u8 = 0x04; pub const QF_TIME_STORAGE: u8 = 0x30; pub const QF_TIME_STORAGE_NORMAL: u8 = 0x00; pub const QF_TIME_STORAGE_TIME: u8 = 0x10; pub const QF_TIME_STORAGE_WAKEUP: u8 = 0x20; #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrToken { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrToBoolean { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrToLower { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrToString { pub header: IfrOpHeader, pub format: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrToUint { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrToUpper { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrTrue { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrUint8 { pub header: IfrOpHeader, pub value: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrUint16 { pub header: IfrOpHeader, pub value: u16, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrUint32 { pub header: IfrOpHeader, pub value: u32, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrUint64 { pub header: IfrOpHeader, pub value: u64, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrUndefined { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrValue { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrVarstore { pub header: IfrOpHeader, pub guid: crate::base::Guid, pub var_store_id: VarstoreId, pub size: u16, pub name: [u8; N], } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrVarstoreNameValue { pub header: IfrOpHeader, pub var_store_id: VarstoreId, pub guid: crate::base::Guid, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrVarstoreEfi { pub header: IfrOpHeader, pub var_store_id: VarstoreId, pub guid: crate::base::Guid, pub attributes: u32, pub size: u16, pub name: [u8; N], } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrVarstoreDevice { pub header: IfrOpHeader, pub device_path: StringId, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrVersion { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrWrite { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrZero { pub header: IfrOpHeader, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrWarningIf { pub header: IfrOpHeader, pub warning: StringId, pub time_out: u8, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct IfrMatch2 { pub header: IfrOpHeader, pub syntax_type: crate::base::Guid, }