mirror of https://github.com/acidanthera/audk.git
157 lines
4.2 KiB
C
157 lines
4.2 KiB
C
|
/** @file
|
||
|
|
||
|
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<BR>
|
||
|
|
||
|
All rights reserved. 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.
|
||
|
|
||
|
**/
|
||
|
|
||
|
/** @file
|
||
|
Abstraction for hardware based interrupt routine
|
||
|
|
||
|
Copyright (c) 2009 Apple Inc.
|
||
|
All rights reserved. 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 Nuber 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 funciton is called evey 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
|
||
|
|
||
|
|