use super::{FormId, HiiHandle};
use crate::{Boolean, Char16, Guid, Status, guid, newtype_enum};
#[derive(Debug)]
#[repr(C)]
pub struct ScreenDescriptor {
pub left_column: usize,
pub right_column: usize,
pub top_row: usize,
pub bottom_row: usize,
}
newtype_enum! {
#[derive(Default)]
pub enum BrowserActionRequest: usize => {
NONE = 0,
RESET = 1,
SUBMIT = 2,
EXIT = 3,
FORM_SUBMIT_EXIT = 4,
FORM_DISCARD_EXIT = 5,
FORM_APPLY = 6,
FORM_DISCARD = 7,
RECONNECT = 8,
QUESTION_APPLY = 9,
}
}
#[derive(Debug)]
#[repr(C)]
pub struct FormBrowser2Protocol {
pub send_form: unsafe extern "efiapi" fn(
this: *const Self,
handles: *const HiiHandle,
handle_count: usize,
formset_guid: *const Guid,
form_id: FormId,
screen_dimensions: *const ScreenDescriptor,
action_request: *mut BrowserActionRequest,
) -> Status,
pub browser_callback: unsafe extern "efiapi" fn(
this: *const Self,
results_data_size: *mut usize,
results_data: *mut Char16,
retrieve_data: Boolean,
variable_guid: *const Guid,
variable_name: *const Char16,
) -> Status,
}
impl FormBrowser2Protocol {
pub const GUID: Guid = guid!("b9d4c360-bcfb-4f9b-9298-53c136982258");
}