summaryrefslogtreecommitdiff
path: root/EmbeddedPkg/Include/Protocol/EblAddCommand.h
diff options
context:
space:
mode:
Diffstat (limited to 'EmbeddedPkg/Include/Protocol/EblAddCommand.h')
-rw-r--r--EmbeddedPkg/Include/Protocol/EblAddCommand.h156
1 files changed, 156 insertions, 0 deletions
diff --git a/EmbeddedPkg/Include/Protocol/EblAddCommand.h b/EmbeddedPkg/Include/Protocol/EblAddCommand.h
new file mode 100644
index 0000000000..2c11e7fe58
--- /dev/null
+++ b/EmbeddedPkg/Include/Protocol/EblAddCommand.h
@@ -0,0 +1,156 @@
+/** @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
+
+