2009-12-06 02:57:05 +01:00
|
|
|
/** @file
|
|
|
|
|
2010-04-29 14:40:51 +02:00
|
|
|
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
2009-12-06 02:57:05 +01:00
|
|
|
|
2010-04-29 14:40:51 +02:00
|
|
|
This program and the accompanying materials
|
2009-12-06 02:57:05 +01:00
|
|
|
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.
|
2014-08-19 15:29:52 +02:00
|
|
|
|
2009-12-06 02:57:05 +01:00
|
|
|
@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
|
|
|
|
|
2011-08-08 20:29:14 +02:00
|
|
|
@param ArrayCount Number of commands in the EntryArray.
|
2009-12-06 02:57:05 +01:00
|
|
|
|
|
|
|
**/
|
|
|
|
typedef
|
|
|
|
VOID
|
|
|
|
(EFIAPI *EBL_ADD_COMMANDS) (
|
|
|
|
IN const EBL_COMMAND_TABLE *EntryArray,
|
|
|
|
IN UINTN ArrayCount
|
|
|
|
);
|
|
|
|
|
|
|
|
|
2014-08-19 15:29:52 +02:00
|
|
|
typedef
|
2013-01-25 12:28:06 +01:00
|
|
|
VOID
|
|
|
|
(EFIAPI *EBL_GET_CHAR_CALL_BACK) (
|
|
|
|
IN UINTN ElapsedTime
|
|
|
|
);
|
2009-12-06 02:57:05 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
Return a keypress or optionally timeout if a timeout value was passed in.
|
2011-08-08 20:29:14 +02:00
|
|
|
An optional callback function is called every second when waiting for a
|
2009-12-06 02:57:05 +01:00
|
|
|
timeout.
|
|
|
|
|
|
|
|
@param Key EFI Key information returned
|
|
|
|
@param TimeoutInSec Number of seconds to wait to timeout
|
2014-08-19 15:29:52 +02:00
|
|
|
@param CallBack Callback called every second during the timeout wait
|
2009-12-06 02:57:05 +01:00
|
|
|
|
|
|
|
@return EFI_SUCCESS Key was returned
|
|
|
|
@return EFI_TIMEOUT If the TimoutInSec expired
|
|
|
|
|
|
|
|
**/
|
2014-08-19 15:29:52 +02:00
|
|
|
typedef
|
2009-12-06 02:57:05 +01:00
|
|
|
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.
|
2014-08-19 15:29:52 +02:00
|
|
|
CurrentRow is updated by one on a call or set back to zero if a prompt is
|
2009-12-06 02:57:05 +01:00
|
|
|
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
|
|
|
|
|
|
|
|
|