/** @file | |
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> | |
This program and the accompanying materials | |
are licensed and made available under the terms and conditions of the BSD License | |
which accompanies this distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
**/ | |
#ifndef __EBL_ADD_COMMAND_H__ | |
#define __EBL_ADD_COMMAND_H__ | |
// | |
// Protocol GUID | |
// | |
// AEDA2428-9A22-4637-9B21-545E28FBB829 | |
#define EBL_ADD_COMMAND_PROTOCOL_GUID \ | |
{ 0xaeda2428, 0x9a22, 0x4637, { 0x9b, 0x21, 0x54, 0x5e, 0x28, 0xfb, 0xb8, 0x29 } } | |
typedef struct _EBL_ADD_COMMAND_PROTOCOL EBL_ADD_COMMAND_PROTOCOL; | |
typedef | |
EFI_STATUS | |
(EFIAPI *EBL_COMMMAND) ( | |
IN UINTN Argc, | |
IN CHAR8 **Argv | |
); | |
typedef struct { | |
CHAR8 *Name; | |
CHAR8 *HelpSummary; | |
CHAR8 *Help; | |
EBL_COMMMAND Command; | |
} EBL_COMMAND_TABLE; | |
/** | |
Add a single command table entry. | |
@param EntryArray Pointer EBL_COMMAND_TABLE of the command that is being added | |
**/ | |
typedef | |
VOID | |
(EFIAPI *EBL_ADD_COMMAND) ( | |
IN const EBL_COMMAND_TABLE *Entry | |
); | |
/** | |
Add a multiple command table entry. | |
@param EntryArray Pointer EBL_COMMAND_TABLE of the commands that are being added | |
@param ArrayCount Number of commands in the EntryArray. | |
**/ | |
typedef | |
VOID | |
(EFIAPI *EBL_ADD_COMMANDS) ( | |
IN const EBL_COMMAND_TABLE *EntryArray, | |
IN UINTN ArrayCount | |
); | |
typedef | |
VOID | |
(EFIAPI *EBL_GET_CHAR_CALL_BACK) ( | |
IN UINTN ElapsedTime | |
); | |
/** | |
Return a keypress or optionally timeout if a timeout value was passed in. | |
An optional callback function is called every second when waiting for a | |
timeout. | |
@param Key EFI Key information returned | |
@param TimeoutInSec Number of seconds to wait to timeout | |
@param CallBack Callback called every second during the timeout wait | |
@return EFI_SUCCESS Key was returned | |
@return EFI_TIMEOUT If the TimoutInSec expired | |
**/ | |
typedef | |
EFI_STATUS | |
(EFIAPI *EBL_GET_CHAR_KEY) ( | |
IN OUT EFI_INPUT_KEY *Key, | |
IN UINTN TimeoutInSec, | |
IN EBL_GET_CHAR_CALL_BACK CallBack OPTIONAL | |
); | |
/** | |
This routine is used prevent command output data from scrolling off the end | |
of the screen. The global gPageBreak is used to turn on or off this feature. | |
If the CurrentRow is near the end of the screen pause and print out a prompt | |
If the use hits Q to quit return TRUE else for any other key return FALSE. | |
PrefixNewline is used to figure out if a newline is needed before the prompt | |
string. This depends on the last print done before calling this function. | |
CurrentRow is updated by one on a call or set back to zero if a prompt is | |
needed. | |
@param CurrentRow Used to figure out if its the end of the page and updated | |
@param PrefixNewline Did previous print issue a newline | |
@return TRUE if Q was hit to quit, FALSE in all other cases. | |
**/ | |
typedef | |
BOOLEAN | |
(EFIAPI *EBL_ANY_KEY_CONTINUE_Q_QUIT) ( | |
IN UINTN *CurrentRow, | |
IN BOOLEAN PrefixNewline | |
); | |
struct _EBL_ADD_COMMAND_PROTOCOL { | |
EBL_ADD_COMMAND AddCommand; | |
EBL_ADD_COMMANDS AddCommands; | |
// Commands to reuse EBL infrastructure | |
EBL_GET_CHAR_KEY EblGetCharKey; | |
EBL_ANY_KEY_CONTINUE_Q_QUIT EblAnyKeyToContinueQtoQuit; | |
}; | |
extern EFI_GUID gEfiEblAddCommandProtocolGuid; | |
#endif | |