-/** @file
- The file contain all library functions and definitions for IFR opcode creation and
- related Form Browser utility Operations.
-
- Copyright (c) 2007 - 2008, Intel Corporation
- 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 _IFR_SUPPORT_LIBRARY_H_
-#define _IFR_SUPPORT_LIBRARY_H_
-
-
-#include <Protocol/HiiFont.h>
-#include <Protocol/HiiImage.h>
-#include <Protocol/HiiString.h>
-#include <Protocol/HiiDatabase.h>
-#include <Protocol/HiiConfigRouting.h>
-#include <Protocol/HiiConfigAccess.h>
-#include <Protocol/FormBrowser2.h>
-#include <Protocol/SimpleTextOut.h>
-
-#include <Guid/GlobalVariable.h>
-
-//
-// The architectural variable "Lang" and "LangCodes" are deprecated in UEFI
-// specification. While, UEFI specification also states that these deprecated
-// variables may be provided for backwards compatibility.
-
-#define EFI_LANGUAGE_VARIABLE L"Lang"
-#define EFI_LANGUAGE_CODES_VARIABLE L"LangCodes"
-
-#define UEFI_LANGUAGE_VARIABLE L"PlatformLang"
-#define UEFI_LANGUAGE_CODES_VARIABLE L"PlatformLangCodes"
-
-//
-// Limited buffer size recommended by RFC4646 (4.3. Length Considerations)
-// (42 characters plus a NULL terminator)
-//
-#define RFC_3066_ENTRY_SIZE (42 + 1)
-#define ISO_639_2_ENTRY_SIZE 3
-
-#define INVALID_VARSTORE_ID 0
-
-#define QUESTION_FLAGS (EFI_IFR_FLAG_READ_ONLY | EFI_IFR_FLAG_CALLBACK | EFI_IFR_FLAG_RESET_REQUIRED | EFI_IFR_FLAG_OPTIONS_ONLY)
-#define QUESTION_FLAGS_MASK (~QUESTION_FLAGS)
-
-extern EFI_HII_DATABASE_PROTOCOL *gIfrLibHiiDatabase;
-extern EFI_HII_STRING_PROTOCOL *gIfrLibHiiString;
-
-#pragma pack(1)
-typedef struct {
- EFI_STRING_ID StringToken;
- EFI_IFR_TYPE_VALUE Value;
- UINT8 Flags;
-} IFR_OPTION;
-#pragma pack()
-
-typedef struct {
- //
- // Buffer size allocated for Data.
- //
- UINT32 BufferSize;
-
- //
- // Offset in Data to append the newly created opcode binary.
- // It will be adjusted automatically in Create***OpCode(), and should be
- // initialized to 0 before invocation of a serial of Create***OpCode()
- //
- UINT32 Offset;
-
- //
- // The destination buffer for created op-codes
- //
- UINT8 *Data;
-} EFI_HII_UPDATE_DATA;
-
-
-/**
- Create EFI_IFR_END_OP opcode.
-
- If Data is NULL or Data->Data is NULL, then ASSERT.
-
- @param Data Destination for the created opcode binary
-
- @retval EFI_SUCCESS Opcode create success
- @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
-
-**/
-EFI_STATUS
-EFIAPI
-CreateEndOpCode (
- IN OUT EFI_HII_UPDATE_DATA *Data
- )
-;
-
-/**
- Create EFI_IFR_DEFAULT_OP opcode.
-
- @param Value Value for the default
- @param Type Type for the default
- @param Data Destination for the created opcode binary
-
- @retval EFI_SUCCESS Opcode create success
- @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
- @retval EFI_INVALID_PARAMETER The type is not valid.
-
-**/
-EFI_STATUS
-EFIAPI
-CreateDefaultOpCode (
- IN EFI_IFR_TYPE_VALUE *Value,
- IN UINT8 Type,
- IN OUT EFI_HII_UPDATE_DATA *Data
- )
-;
-
-/**
- Create EFI_IFR_ACTION_OP opcode.
-
- @param QuestionId Question ID
- @param Prompt String ID for Prompt
- @param Help String ID for Help
- @param QuestionFlags Flags in Question Header
- @param QuestionConfig String ID for configuration
- @param Data Destination for the created opcode binary
-
- @retval EFI_SUCCESS Opcode create success
- @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
- @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
-
-**/
-EFI_STATUS
-EFIAPI
-CreateActionOpCode (
- IN EFI_QUESTION_ID QuestionId,
- IN EFI_STRING_ID Prompt,
- IN EFI_STRING_ID Help,
- IN UINT8 QuestionFlags,
- IN EFI_STRING_ID QuestionConfig,
- IN OUT EFI_HII_UPDATE_DATA *Data
- )
-;
-
-/**
- Create EFI_IFR_SUBTITLE_OP opcode.
-
- @param Prompt String ID for Prompt
- @param Help String ID for Help
- @param Flags Subtitle opcode flags
- @param Scope Subtitle Scope bit
- @param Data Destination for the created opcode binary
-
- @retval EFI_SUCCESS Opcode create success
- @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
-
-**/
-EFI_STATUS
-EFIAPI
-CreateSubTitleOpCode (
- IN EFI_STRING_ID Prompt,
- IN EFI_STRING_ID Help,
- IN UINT8 Flags,
- IN UINT8 Scope,
- IN OUT EFI_HII_UPDATE_DATA *Data
- )
-;
-
-/**
- Create EFI_IFR_TEXT_OP opcode.
-
- @param Prompt String ID for Prompt
- @param Help String ID for Help
- @param TextTwo String ID for text two
- @param Data Destination for the created opcode binary
-
- @retval EFI_SUCCESS Opcode create success
- @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
-
-**/
-EFI_STATUS
-EFIAPI
-CreateTextOpCode (
- IN EFI_STRING_ID Prompt,
- IN EFI_STRING_ID Help,
- IN EFI_STRING_ID TextTwo,
- IN OUT EFI_HII_UPDATE_DATA *Data
- )
-;
-
-/**
- Create EFI_IFR_REF_OP opcode.
-
- @param FormId Destination Form ID
- @param Prompt String ID for Prompt
- @param Help String ID for Help
- @param QuestionFlags Flags in Question Header
- @param QuestionId Question ID
- @param Data Destination for the created opcode binary
-
- @retval EFI_SUCCESS Opcode create success
- @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
- @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
-
-**/
-EFI_STATUS
-EFIAPI
-CreateGotoOpCode (
- IN EFI_FORM_ID FormId,
- IN EFI_STRING_ID Prompt,
- IN EFI_STRING_ID Help,
- IN UINT8 QuestionFlags,
- IN EFI_QUESTION_ID QuestionId,
- IN OUT EFI_HII_UPDATE_DATA *Data
- )
-;
-
-/**
- Create EFI_IFR_ONE_OF_OPTION_OP opcode.
-
- @param OptionCount The number of options.
- @param OptionsList The list of Options.
- @param Type The data type.
- @param Data Destination for the created opcode binary
-
- @retval EFI_SUCCESS Opcode create success
- @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
-
-**/
-EFI_STATUS
-EFIAPI
-CreateOneOfOptionOpCode (
- IN UINTN OptionCount,
- IN IFR_OPTION *OptionsList,
- IN UINT8 Type,
- IN OUT EFI_HII_UPDATE_DATA *Data
- )
-;
-
-/**
- Create EFI_IFR_ONE_OF_OP opcode.
-
- @param QuestionId Question ID
- @param VarStoreId Storage ID
- @param VarOffset Offset in Storage
- @param Prompt String ID for Prompt
- @param Help String ID for Help
- @param QuestionFlags Flags in Question Header
- @param OneOfFlags Flags for oneof opcode
- @param OptionsList List of options
- @param OptionCount Number of options in option list
- @param Data Destination for the created opcode binary
-
- @retval EFI_SUCCESS Opcode create success
- @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
- @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
-
-**/
-EFI_STATUS
-EFIAPI
-CreateOneOfOpCode (
- IN EFI_QUESTION_ID QuestionId,
- IN EFI_VARSTORE_ID VarStoreId,
- IN UINT16 VarOffset,
- IN EFI_STRING_ID Prompt,
- IN EFI_STRING_ID Help,
- IN UINT8 QuestionFlags,
- IN UINT8 OneOfFlags,
- IN IFR_OPTION *OptionsList,
- IN UINTN OptionCount,
- IN OUT EFI_HII_UPDATE_DATA *Data
- )
-;
-
-/**
- Create EFI_IFR_ORDERED_LIST_OP opcode.
-
- @param QuestionId Question ID
- @param VarStoreId Storage ID
- @param VarOffset Offset in Storage
- @param Prompt String ID for Prompt
- @param Help String ID for Help
- @param QuestionFlags Flags in Question Header
- @param OrderedListFlags Flags for ordered list opcode
- @param DataType Type for option value
- @param MaxContainers Maximum count for options in this ordered list
- @param OptionsList List of options
- @param OptionCount Number of options in option list
- @param Data Destination for the created opcode binary
-
- @retval EFI_SUCCESS Opcode create success
- @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
- @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
-
-**/
-EFI_STATUS
-EFIAPI
-CreateOrderedListOpCode (
- IN EFI_QUESTION_ID QuestionId,
- IN EFI_VARSTORE_ID VarStoreId,
- IN UINT16 VarOffset,
- IN EFI_STRING_ID Prompt,
- IN EFI_STRING_ID Help,
- IN UINT8 QuestionFlags,
- IN UINT8 OrderedListFlags,
- IN UINT8 DataType,
- IN UINT8 MaxContainers,
- IN IFR_OPTION *OptionsList,
- IN UINTN OptionCount,
- IN OUT EFI_HII_UPDATE_DATA *Data
- )
-;
-
-/**
- Create EFI_IFR_CHECKBOX_OP opcode.
-
- @param QuestionId Question ID
- @param VarStoreId Storage ID
- @param VarOffset Offset in Storage
- @param Prompt String ID for Prompt
- @param Help String ID for Help
- @param QuestionFlags Flags in Question Header
- @param CheckBoxFlags Flags for checkbox opcode
- @param Data Destination for the created opcode binary
-
- @retval EFI_SUCCESS Opcode create success
- @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
- @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
-
-**/
-EFI_STATUS
-EFIAPI
-CreateCheckBoxOpCode (
- IN EFI_QUESTION_ID QuestionId,
- IN EFI_VARSTORE_ID VarStoreId,
- IN UINT16 VarOffset,
- IN EFI_STRING_ID Prompt,
- IN EFI_STRING_ID Help,
- IN UINT8 QuestionFlags,
- IN UINT8 CheckBoxFlags,
- IN OUT EFI_HII_UPDATE_DATA *Data
- )
-;
-
-/**
- Create EFI_IFR_NUMERIC_OP opcode.
-
- @param QuestionId Question ID
- @param VarStoreId Storage ID
- @param VarOffset Offset in Storage
- @param Prompt String ID for Prompt
- @param Help String ID for Help
- @param QuestionFlags Flags in Question Header
- @param NumericFlags Flags for numeric opcode
- @param Minimum Numeric minimum value
- @param Maximum Numeric maximum value
- @param Step Numeric step for edit
- @param Default Numeric default value
- @param Data Destination for the created opcode binary
-
- @retval EFI_SUCCESS Opcode create success
- @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
- @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
-
-**/
-EFI_STATUS
-EFIAPI
-CreateNumericOpCode (
- IN EFI_QUESTION_ID QuestionId,
- IN EFI_VARSTORE_ID VarStoreId,
- IN UINT16 VarOffset,
- IN EFI_STRING_ID Prompt,
- IN EFI_STRING_ID Help,
- IN UINT8 QuestionFlags,
- IN UINT8 NumericFlags,
- IN UINT64 Minimum,
- IN UINT64 Maximum,
- IN UINT64 Step,
- IN UINT64 Default,
- IN OUT EFI_HII_UPDATE_DATA *Data
- )
-;
-
-/**
- Create EFI_IFR_STRING_OP opcode.
-
- @param QuestionId Question ID
- @param VarStoreId Storage ID
- @param VarOffset Offset in Storage
- @param Prompt String ID for Prompt
- @param Help String ID for Help
- @param QuestionFlags Flags in Question Header
- @param StringFlags Flags for string opcode
- @param MinSize String minimum length
- @param MaxSize String maximum length
- @param Data Destination for the created opcode binary
-
- @retval EFI_SUCCESS Opcode create success
- @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
- @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
-
-**/
-EFI_STATUS
-EFIAPI
-CreateStringOpCode (
- IN EFI_QUESTION_ID QuestionId,
- IN EFI_VARSTORE_ID VarStoreId,
- IN UINT16 VarOffset,
- IN EFI_STRING_ID Prompt,
- IN EFI_STRING_ID Help,
- IN UINT8 QuestionFlags,
- IN UINT8 StringFlags,
- IN UINT8 MinSize,
- IN UINT8 MaxSize,
- IN OUT EFI_HII_UPDATE_DATA *Data
- )
-;
-
-/**
- Converts the unicode character of the string from uppercase to lowercase.
-
- @param Str String to be converted
-
-
-**/
-VOID
-EFIAPI
-ToLower (
- IN OUT CHAR16 *Str
- )
-;
-
-/**
- Converts binary buffer to Unicode string in reversed byte order to BufToHexString().
-
- @param Str String for output
- @param Buffer Binary buffer.
- @param BufferSize Size of the buffer in bytes.
-
- @retval EFI_SUCCESS The function completed successfully.
-
-**/
-EFI_STATUS
-EFIAPI
-BufferToHexString (
- IN OUT CHAR16 *Str,
- IN UINT8 *Buffer,
- IN UINTN BufferSize
- )
-;
-
-/**
- Converts Hex String to binary buffer in reversed byte order to HexStringToBuf().
-
- @param Buffer Pointer to buffer that receives the data.
- @param BufferSize Length in bytes of the buffer to hold converted
- data. If routine return with EFI_SUCCESS,
- containing length of converted data. If routine
- return with EFI_BUFFER_TOO_SMALL, containg length
- of buffer desired.
- @param Str String to be converted from.
-
- @retval EFI_SUCCESS The function completed successfully.
-
-**/
-EFI_STATUS
-EFIAPI
-HexStringToBuffer (
- IN OUT UINT8 *Buffer,
- IN OUT UINTN *BufferSize,
- IN CHAR16 *Str
- )
-;
-
-/**
- Convert binary representation Config string (e.g. "0041004200430044") to the
- original string (e.g. "ABCD"). Config string appears in <ConfigHdr> (i.e.
- "&NAME=<string>"), or Name/Value pair in <ConfigBody> (i.e. "label=<string>").
-
- @param UnicodeString Original Unicode string.
- @param StrBufferLen On input: Length in bytes of buffer to hold the Unicode string.
- Includes tailing '\0' character.
- On output:
- If return EFI_SUCCESS, containing length of Unicode string buffer.
- If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired.
- @param ConfigString Binary representation of Unicode String, <string> := (<HexCh>4)+
-
- @retval EFI_SUCCESS Routine success.
- @retval EFI_BUFFER_TOO_SMALL The string buffer is too small.
-
-**/
-EFI_STATUS
-EFIAPI
-ConfigStringToUnicode (
- IN OUT CHAR16 *UnicodeString,
- IN OUT UINTN *StrBufferLen,
- IN CHAR16 *ConfigString
- )
-;
-
-/**
- Convert Unicode string to binary representation Config string, e.g.
- "ABCD" => "0041004200430044". Config string appears in <ConfigHdr> (i.e.
- "&NAME=<string>"), or Name/Value pair in <ConfigBody> (i.e. "label=<string>").
-
- @param ConfigString Binary representation of Unicode String, <string> := (<HexCh>4)+
- @param StrBufferLen On input: Length in bytes of buffer to hold the Unicode string.
- Includes tailing '\0' character.
- On output:
- If return EFI_SUCCESS, containing length of Unicode string buffer.
- If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired.
- @param UnicodeString Original Unicode string.
-
- @retval EFI_SUCCESS Routine success.
- @retval EFI_BUFFER_TOO_SMALL The string buffer is too small.
-
-**/
-EFI_STATUS
-EFIAPI
-UnicodeToConfigString (
- IN OUT CHAR16 *ConfigString,
- IN OUT UINTN *StrBufferLen,
- IN CHAR16 *UnicodeString
- )
-;
-
-/**
- Construct <ConfigHdr> using routing information GUID/NAME/PATH.
-
- @param ConfigHdr Pointer to the ConfigHdr string.
- @param StrBufferLen On input: Length in bytes of buffer to hold the
- ConfigHdr string. Includes tailing '\0' character.
- On output: If return EFI_SUCCESS, containing
- length of ConfigHdr string buffer. If return
- EFI_BUFFER_TOO_SMALL, containg length of string
- buffer desired.
- @param Guid Routing information: GUID.
- @param Name Routing information: NAME.
- @param DriverHandle Driver handle which contains the routing
- information: PATH.
-
- @retval EFI_SUCCESS Routine success.
- @retval EFI_BUFFER_TOO_SMALL The ConfigHdr string buffer is too small.
-
-**/
-EFI_STATUS
-EFIAPI
-ConstructConfigHdr (
- IN OUT CHAR16 *ConfigHdr,
- IN OUT UINTN *StrBufferLen,
- IN EFI_GUID *Guid,
- IN CHAR16 *Name, OPTIONAL
- IN EFI_HANDLE *DriverHandle
- )
-
-;
-
-/**
- Search BlockName "&OFFSET=Offset&WIDTH=Width" in a string.
-
- @param String The string to be searched in.
- @param Offset Offset in BlockName.
- @param Width Width in BlockName.
-
- @retval TRUE Block name found.
- @retval FALSE Block name not found.
-
-**/
-BOOLEAN
-EFIAPI
-FindBlockName (
- IN OUT CHAR16 *String,
- UINTN Offset,
- UINTN Width
- )
-;
-
-/**
- This routine is invoked by ConfigAccess.Callback() to retrived uncommitted data from Form Browser.
-
- @param VariableGuid An optional field to indicate the target variable
- GUID name to use.
- @param VariableName An optional field to indicate the target
- human-readable variable name.
- @param BufferSize On input: Length in bytes of buffer to hold
- retrived data. On output: If return
- EFI_BUFFER_TOO_SMALL, containg length of buffer
- desired.
- @param Buffer Buffer to hold retrived data.
-
- @retval EFI_SUCCESS Routine success.
- @retval EFI_BUFFER_TOO_SMALL The intput buffer is too small.
-
-**/
-EFI_STATUS
-EFIAPI
-GetBrowserData (
- EFI_GUID *VariableGuid, OPTIONAL
- CHAR16 *VariableName, OPTIONAL
- UINTN *BufferSize,
- UINT8 *Buffer
- )
-;
-
-/**
- This routine is invoked by ConfigAccess.Callback() to update uncommitted data of Form Browser.
-
- @param VariableGuid An optional field to indicate the target variable
- GUID name to use.
- @param VariableName An optional field to indicate the target
- human-readable variable name.
- @param BufferSize Length in bytes of buffer to hold retrived data.
- @param Buffer Buffer to hold retrived data.
- @param RequestElement An optional field to specify which part of the
- buffer data will be send back to Browser. If NULL,
- the whole buffer of data will be committed to
- Browser. <RequestElement> ::=
- &OFFSET=<Number>&WIDTH=<Number>*
-
- @retval EFI_SUCCESS Routine success.
- @retval Other Updating Browser uncommitted data failed.
-
-**/
-EFI_STATUS
-EFIAPI
-SetBrowserData (
- EFI_GUID *VariableGuid, OPTIONAL
- CHAR16 *VariableName, OPTIONAL
- UINTN BufferSize,
- UINT8 *Buffer,
- CHAR16 *RequestElement OPTIONAL
- )
-;
-
-/**
- Draw a dialog and return the selected key.
-
- @param NumberOfLines The number of lines for the dialog box
- @param KeyValue The EFI_KEY value returned if HotKey is TRUE..
- @param String Pointer to the first string in the list
- @param ... A series of (quantity == NumberOfLines - 1) text
- strings which will be used to construct the dialog
- box
-
- @retval EFI_SUCCESS Displayed dialog and received user interaction
- @retval EFI_INVALID_PARAMETER One of the parameters was invalid.
-
-**/
-EFI_STATUS
-EFIAPI
-IfrLibCreatePopUp (
- IN UINTN NumberOfLines,
- OUT EFI_INPUT_KEY *KeyValue,
- IN CHAR16 *String,
- ...
- )
-;
-
-#endif
+/** @file\r
+ The file contain all library functions and definitions for IFR opcode creation and \r
+ related Form Browser utility Operations.\r
+\r
+ Copyright (c) 2007 - 2008, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#ifndef _IFR_SUPPORT_LIBRARY_H_\r
+#define _IFR_SUPPORT_LIBRARY_H_\r
+\r
+\r
+#include <Protocol/HiiFont.h>\r
+#include <Protocol/HiiImage.h>\r
+#include <Protocol/HiiString.h>\r
+#include <Protocol/HiiDatabase.h>\r
+#include <Protocol/HiiConfigRouting.h>\r
+#include <Protocol/HiiConfigAccess.h>\r
+#include <Protocol/FormBrowser2.h>\r
+#include <Protocol/SimpleTextOut.h>\r
+\r
+#include <Guid/GlobalVariable.h>\r
+\r
+//\r
+// The architectural variable "Lang" and "LangCodes" are deprecated in UEFI\r
+// specification. While, UEFI specification also states that these deprecated\r
+// variables may be provided for backwards compatibility.\r
+\r
+#define EFI_LANGUAGE_VARIABLE L"Lang"\r
+#define EFI_LANGUAGE_CODES_VARIABLE L"LangCodes"\r
+\r
+#define UEFI_LANGUAGE_VARIABLE L"PlatformLang"\r
+#define UEFI_LANGUAGE_CODES_VARIABLE L"PlatformLangCodes"\r
+\r
+//\r
+// Limited buffer size recommended by RFC4646 (4.3. Length Considerations)\r
+// (42 characters plus a NULL terminator)\r
+//\r
+#define RFC_3066_ENTRY_SIZE (42 + 1)\r
+#define ISO_639_2_ENTRY_SIZE 3\r
+\r
+#define INVALID_VARSTORE_ID 0\r
+\r
+#define QUESTION_FLAGS (EFI_IFR_FLAG_READ_ONLY | EFI_IFR_FLAG_CALLBACK | EFI_IFR_FLAG_RESET_REQUIRED | EFI_IFR_FLAG_OPTIONS_ONLY)\r
+#define QUESTION_FLAGS_MASK (~QUESTION_FLAGS)\r
+\r
+extern EFI_HII_DATABASE_PROTOCOL *gIfrLibHiiDatabase;\r
+extern EFI_HII_STRING_PROTOCOL *gIfrLibHiiString;\r
+\r
+#pragma pack(1)\r
+typedef struct {\r
+ EFI_STRING_ID StringToken;\r
+ EFI_IFR_TYPE_VALUE Value;\r
+ UINT8 Flags;\r
+} IFR_OPTION;\r
+#pragma pack()\r
+\r
+typedef struct {\r
+ ///\r
+ /// Buffer size allocated for Data.\r
+ ///\r
+ UINT32 BufferSize;\r
+\r
+ ///\r
+ /// Offset in Data to append the newly created opcode binary.\r
+ /// It will be adjusted automatically in Create***OpCode(), and should be\r
+ /// initialized to 0 before invocation of a serial of Create***OpCode()\r
+ ///\r
+ UINT32 Offset;\r
+\r
+ ///\r
+ /// The destination buffer for created op-codes\r
+ ///\r
+ UINT8 *Data;\r
+} EFI_HII_UPDATE_DATA;\r
+\r
+\r
+/**\r
+ Create EFI_IFR_END_OP opcode.\r
+\r
+ If Data is NULL or Data->Data is NULL, then ASSERT.\r
+\r
+ @param Data Destination for the created opcode binary\r
+\r
+ @retval EFI_SUCCESS Opcode create success\r
+ @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CreateEndOpCode (\r
+ IN OUT EFI_HII_UPDATE_DATA *Data\r
+ )\r
+;\r
+\r
+/**\r
+ Create EFI_IFR_DEFAULT_OP opcode.\r
+\r
+ @param Value Value for the default\r
+ @param Type Type for the default\r
+ @param Data Destination for the created opcode binary\r
+\r
+ @retval EFI_SUCCESS Opcode create success\r
+ @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
+ @retval EFI_INVALID_PARAMETER The type is not valid.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CreateDefaultOpCode (\r
+ IN EFI_IFR_TYPE_VALUE *Value,\r
+ IN UINT8 Type,\r
+ IN OUT EFI_HII_UPDATE_DATA *Data\r
+ )\r
+;\r
+\r
+/**\r
+ Create EFI_IFR_ACTION_OP opcode.\r
+\r
+ @param QuestionId Question ID\r
+ @param Prompt String ID for Prompt\r
+ @param Help String ID for Help\r
+ @param QuestionFlags Flags in Question Header\r
+ @param QuestionConfig String ID for configuration\r
+ @param Data Destination for the created opcode binary\r
+\r
+ @retval EFI_SUCCESS Opcode create success\r
+ @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
+ @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CreateActionOpCode (\r
+ IN EFI_QUESTION_ID QuestionId,\r
+ IN EFI_STRING_ID Prompt,\r
+ IN EFI_STRING_ID Help,\r
+ IN UINT8 QuestionFlags,\r
+ IN EFI_STRING_ID QuestionConfig,\r
+ IN OUT EFI_HII_UPDATE_DATA *Data\r
+ )\r
+;\r
+\r
+/**\r
+ Create EFI_IFR_SUBTITLE_OP opcode.\r
+\r
+ @param Prompt String ID for Prompt\r
+ @param Help String ID for Help\r
+ @param Flags Subtitle opcode flags\r
+ @param Scope Subtitle Scope bit\r
+ @param Data Destination for the created opcode binary\r
+\r
+ @retval EFI_SUCCESS Opcode create success\r
+ @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
+ \r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CreateSubTitleOpCode (\r
+ IN EFI_STRING_ID Prompt,\r
+ IN EFI_STRING_ID Help,\r
+ IN UINT8 Flags,\r
+ IN UINT8 Scope,\r
+ IN OUT EFI_HII_UPDATE_DATA *Data\r
+ )\r
+;\r
+\r
+/**\r
+ Create EFI_IFR_TEXT_OP opcode.\r
+\r
+ @param Prompt String ID for Prompt\r
+ @param Help String ID for Help\r
+ @param TextTwo String ID for text two\r
+ @param Data Destination for the created opcode binary\r
+\r
+ @retval EFI_SUCCESS Opcode create success\r
+ @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CreateTextOpCode (\r
+ IN EFI_STRING_ID Prompt,\r
+ IN EFI_STRING_ID Help,\r
+ IN EFI_STRING_ID TextTwo,\r
+ IN OUT EFI_HII_UPDATE_DATA *Data\r
+ )\r
+;\r
+\r
+/**\r
+ Create EFI_IFR_REF_OP opcode.\r
+\r
+ @param FormId Destination Form ID\r
+ @param Prompt String ID for Prompt\r
+ @param Help String ID for Help\r
+ @param QuestionFlags Flags in Question Header\r
+ @param QuestionId Question ID\r
+ @param Data Destination for the created opcode binary\r
+\r
+ @retval EFI_SUCCESS Opcode create success\r
+ @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
+ @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CreateGotoOpCode (\r
+ IN EFI_FORM_ID FormId,\r
+ IN EFI_STRING_ID Prompt,\r
+ IN EFI_STRING_ID Help,\r
+ IN UINT8 QuestionFlags,\r
+ IN EFI_QUESTION_ID QuestionId,\r
+ IN OUT EFI_HII_UPDATE_DATA *Data\r
+ )\r
+;\r
+\r
+/**\r
+ Create EFI_IFR_ONE_OF_OPTION_OP opcode.\r
+\r
+ @param OptionCount The number of options.\r
+ @param OptionsList The list of Options.\r
+ @param Type The data type.\r
+ @param Data Destination for the created opcode binary\r
+\r
+ @retval EFI_SUCCESS Opcode create success\r
+ @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CreateOneOfOptionOpCode (\r
+ IN UINTN OptionCount,\r
+ IN IFR_OPTION *OptionsList,\r
+ IN UINT8 Type,\r
+ IN OUT EFI_HII_UPDATE_DATA *Data\r
+ )\r
+;\r
+\r
+/**\r
+ Create EFI_IFR_ONE_OF_OP opcode.\r
+\r
+ @param QuestionId Question ID\r
+ @param VarStoreId Storage ID\r
+ @param VarOffset Offset in Storage\r
+ @param Prompt String ID for Prompt\r
+ @param Help String ID for Help\r
+ @param QuestionFlags Flags in Question Header\r
+ @param OneOfFlags Flags for oneof opcode\r
+ @param OptionsList List of options\r
+ @param OptionCount Number of options in option list\r
+ @param Data Destination for the created opcode binary\r
+\r
+ @retval EFI_SUCCESS Opcode create success\r
+ @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
+ @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CreateOneOfOpCode (\r
+ IN EFI_QUESTION_ID QuestionId,\r
+ IN EFI_VARSTORE_ID VarStoreId,\r
+ IN UINT16 VarOffset,\r
+ IN EFI_STRING_ID Prompt,\r
+ IN EFI_STRING_ID Help,\r
+ IN UINT8 QuestionFlags,\r
+ IN UINT8 OneOfFlags,\r
+ IN IFR_OPTION *OptionsList,\r
+ IN UINTN OptionCount,\r
+ IN OUT EFI_HII_UPDATE_DATA *Data\r
+ )\r
+;\r
+\r
+/**\r
+ Create EFI_IFR_ORDERED_LIST_OP opcode.\r
+\r
+ @param QuestionId Question ID\r
+ @param VarStoreId Storage ID\r
+ @param VarOffset Offset in Storage\r
+ @param Prompt String ID for Prompt\r
+ @param Help String ID for Help\r
+ @param QuestionFlags Flags in Question Header\r
+ @param OrderedListFlags Flags for ordered list opcode\r
+ @param DataType Type for option value\r
+ @param MaxContainers Maximum count for options in this ordered list\r
+ @param OptionsList List of options\r
+ @param OptionCount Number of options in option list\r
+ @param Data Destination for the created opcode binary\r
+\r
+ @retval EFI_SUCCESS Opcode create success\r
+ @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
+ @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CreateOrderedListOpCode (\r
+ IN EFI_QUESTION_ID QuestionId,\r
+ IN EFI_VARSTORE_ID VarStoreId,\r
+ IN UINT16 VarOffset,\r
+ IN EFI_STRING_ID Prompt,\r
+ IN EFI_STRING_ID Help,\r
+ IN UINT8 QuestionFlags,\r
+ IN UINT8 OrderedListFlags,\r
+ IN UINT8 DataType,\r
+ IN UINT8 MaxContainers,\r
+ IN IFR_OPTION *OptionsList,\r
+ IN UINTN OptionCount,\r
+ IN OUT EFI_HII_UPDATE_DATA *Data\r
+ )\r
+;\r
+\r
+/**\r
+ Create EFI_IFR_CHECKBOX_OP opcode.\r
+\r
+ @param QuestionId Question ID\r
+ @param VarStoreId Storage ID\r
+ @param VarOffset Offset in Storage\r
+ @param Prompt String ID for Prompt\r
+ @param Help String ID for Help\r
+ @param QuestionFlags Flags in Question Header\r
+ @param CheckBoxFlags Flags for checkbox opcode\r
+ @param Data Destination for the created opcode binary\r
+\r
+ @retval EFI_SUCCESS Opcode create success\r
+ @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
+ @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CreateCheckBoxOpCode (\r
+ IN EFI_QUESTION_ID QuestionId,\r
+ IN EFI_VARSTORE_ID VarStoreId,\r
+ IN UINT16 VarOffset,\r
+ IN EFI_STRING_ID Prompt,\r
+ IN EFI_STRING_ID Help,\r
+ IN UINT8 QuestionFlags,\r
+ IN UINT8 CheckBoxFlags,\r
+ IN OUT EFI_HII_UPDATE_DATA *Data\r
+ )\r
+;\r
+\r
+/**\r
+ Create EFI_IFR_NUMERIC_OP opcode.\r
+\r
+ @param QuestionId Question ID\r
+ @param VarStoreId Storage ID\r
+ @param VarOffset Offset in Storage\r
+ @param Prompt String ID for Prompt\r
+ @param Help String ID for Help\r
+ @param QuestionFlags Flags in Question Header\r
+ @param NumericFlags Flags for numeric opcode\r
+ @param Minimum Numeric minimum value\r
+ @param Maximum Numeric maximum value\r
+ @param Step Numeric step for edit\r
+ @param Default Numeric default value\r
+ @param Data Destination for the created opcode binary\r
+\r
+ @retval EFI_SUCCESS Opcode create success\r
+ @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
+ @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CreateNumericOpCode (\r
+ IN EFI_QUESTION_ID QuestionId,\r
+ IN EFI_VARSTORE_ID VarStoreId,\r
+ IN UINT16 VarOffset,\r
+ IN EFI_STRING_ID Prompt,\r
+ IN EFI_STRING_ID Help,\r
+ IN UINT8 QuestionFlags,\r
+ IN UINT8 NumericFlags,\r
+ IN UINT64 Minimum,\r
+ IN UINT64 Maximum,\r
+ IN UINT64 Step,\r
+ IN UINT64 Default,\r
+ IN OUT EFI_HII_UPDATE_DATA *Data\r
+ )\r
+;\r
+\r
+/**\r
+ Create EFI_IFR_STRING_OP opcode.\r
+\r
+ @param QuestionId Question ID\r
+ @param VarStoreId Storage ID\r
+ @param VarOffset Offset in Storage\r
+ @param Prompt String ID for Prompt\r
+ @param Help String ID for Help\r
+ @param QuestionFlags Flags in Question Header\r
+ @param StringFlags Flags for string opcode\r
+ @param MinSize String minimum length\r
+ @param MaxSize String maximum length\r
+ @param Data Destination for the created opcode binary\r
+\r
+ @retval EFI_SUCCESS Opcode create success\r
+ @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
+ @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CreateStringOpCode (\r
+ IN EFI_QUESTION_ID QuestionId,\r
+ IN EFI_VARSTORE_ID VarStoreId,\r
+ IN UINT16 VarOffset,\r
+ IN EFI_STRING_ID Prompt,\r
+ IN EFI_STRING_ID Help,\r
+ IN UINT8 QuestionFlags,\r
+ IN UINT8 StringFlags,\r
+ IN UINT8 MinSize,\r
+ IN UINT8 MaxSize,\r
+ IN OUT EFI_HII_UPDATE_DATA *Data\r
+ )\r
+;\r
+\r
+/**\r
+ Converts the unicode character of the string from uppercase to lowercase.\r
+\r
+ @param Str String to be converted\r
+\r
+ \r
+**/\r
+VOID\r
+EFIAPI\r
+ToLower (\r
+ IN OUT CHAR16 *Str\r
+ )\r
+;\r
+\r
+/**\r
+ Converts binary buffer to Unicode string in reversed byte order to BufToHexString().\r
+\r
+ @param Str String for output\r
+ @param Buffer Binary buffer.\r
+ @param BufferSize Size of the buffer in bytes.\r
+\r
+ @retval EFI_SUCCESS The function completed successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+BufferToHexString (\r
+ IN OUT CHAR16 *Str,\r
+ IN UINT8 *Buffer,\r
+ IN UINTN BufferSize\r
+ )\r
+;\r
+\r
+/**\r
+ Converts Hex String to binary buffer in reversed byte order to HexStringToBuf().\r
+\r
+ @param Buffer Pointer to buffer that receives the data.\r
+ @param BufferSize Length in bytes of the buffer to hold converted\r
+ data. If routine return with EFI_SUCCESS,\r
+ containing length of converted data. If routine\r
+ return with EFI_BUFFER_TOO_SMALL, containg length\r
+ of buffer desired.\r
+ @param Str String to be converted from.\r
+\r
+ @retval EFI_SUCCESS The function completed successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+HexStringToBuffer (\r
+ IN OUT UINT8 *Buffer,\r
+ IN OUT UINTN *BufferSize,\r
+ IN CHAR16 *Str\r
+ )\r
+;\r
+\r
+/**\r
+ Convert binary representation Config string (e.g. "0041004200430044") to the\r
+ original string (e.g. "ABCD"). Config string appears in <ConfigHdr> (i.e.\r
+ "&NAME=<string>"), or Name/Value pair in <ConfigBody> (i.e. "label=<string>").\r
+\r
+ @param UnicodeString Original Unicode string.\r
+ @param StrBufferLen On input: Length in bytes of buffer to hold the Unicode string.\r
+ Includes tailing '\0' character.\r
+ On output:\r
+ If return EFI_SUCCESS, containing length of Unicode string buffer.\r
+ If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired.\r
+ @param ConfigString Binary representation of Unicode String, <string> := (<HexCh>4)+\r
+\r
+ @retval EFI_SUCCESS Routine success.\r
+ @retval EFI_BUFFER_TOO_SMALL The string buffer is too small.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+ConfigStringToUnicode (\r
+ IN OUT CHAR16 *UnicodeString,\r
+ IN OUT UINTN *StrBufferLen,\r
+ IN CHAR16 *ConfigString\r
+ )\r
+;\r
+\r
+/**\r
+ Convert Unicode string to binary representation Config string, e.g.\r
+ "ABCD" => "0041004200430044". Config string appears in <ConfigHdr> (i.e.\r
+ "&NAME=<string>"), or Name/Value pair in <ConfigBody> (i.e. "label=<string>").\r
+\r
+ @param ConfigString Binary representation of Unicode String, <string> := (<HexCh>4)+\r
+ @param StrBufferLen On input: Length in bytes of buffer to hold the Unicode string.\r
+ Includes tailing '\0' character.\r
+ On output:\r
+ If return EFI_SUCCESS, containing length of Unicode string buffer.\r
+ If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired.\r
+ @param UnicodeString Original Unicode string.\r
+\r
+ @retval EFI_SUCCESS Routine success.\r
+ @retval EFI_BUFFER_TOO_SMALL The string buffer is too small.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+UnicodeToConfigString (\r
+ IN OUT CHAR16 *ConfigString,\r
+ IN OUT UINTN *StrBufferLen,\r
+ IN CHAR16 *UnicodeString\r
+ )\r
+;\r
+\r
+/**\r
+ Construct <ConfigHdr> using routing information GUID/NAME/PATH.\r
+\r
+ @param ConfigHdr Pointer to the ConfigHdr string.\r
+ @param StrBufferLen On input: Length in bytes of buffer to hold the\r
+ ConfigHdr string. Includes tailing '\0' character.\r
+ On output: If return EFI_SUCCESS, containing\r
+ length of ConfigHdr string buffer. If return\r
+ EFI_BUFFER_TOO_SMALL, containg length of string\r
+ buffer desired.\r
+ @param Guid Routing information: GUID.\r
+ @param Name Routing information: NAME.\r
+ @param DriverHandle Driver handle which contains the routing\r
+ information: PATH.\r
+\r
+ @retval EFI_SUCCESS Routine success.\r
+ @retval EFI_BUFFER_TOO_SMALL The ConfigHdr string buffer is too small.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+ConstructConfigHdr (\r
+ IN OUT CHAR16 *ConfigHdr,\r
+ IN OUT UINTN *StrBufferLen,\r
+ IN EFI_GUID *Guid,\r
+ IN CHAR16 *Name, OPTIONAL\r
+ IN EFI_HANDLE *DriverHandle\r
+ )\r
+\r
+;\r
+\r
+/**\r
+ Search BlockName "&OFFSET=Offset&WIDTH=Width" in a string.\r
+\r
+ @param String The string to be searched in.\r
+ @param Offset Offset in BlockName.\r
+ @param Width Width in BlockName.\r
+\r
+ @retval TRUE Block name found.\r
+ @retval FALSE Block name not found.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+FindBlockName (\r
+ IN OUT CHAR16 *String,\r
+ UINTN Offset,\r
+ UINTN Width\r
+ )\r
+;\r
+\r
+/**\r
+ This routine is invoked by ConfigAccess.Callback() to retrived uncommitted data from Form Browser.\r
+\r
+ @param VariableGuid An optional field to indicate the target variable\r
+ GUID name to use.\r
+ @param VariableName An optional field to indicate the target\r
+ human-readable variable name.\r
+ @param BufferSize On input: Length in bytes of buffer to hold\r
+ retrived data. On output: If return\r
+ EFI_BUFFER_TOO_SMALL, containg length of buffer\r
+ desired.\r
+ @param Buffer Buffer to hold retrived data.\r
+\r
+ @retval EFI_SUCCESS Routine success.\r
+ @retval EFI_BUFFER_TOO_SMALL The intput buffer is too small.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+GetBrowserData (\r
+ EFI_GUID *VariableGuid, OPTIONAL\r
+ CHAR16 *VariableName, OPTIONAL\r
+ UINTN *BufferSize,\r
+ UINT8 *Buffer\r
+ )\r
+;\r
+\r
+/**\r
+ This routine is invoked by ConfigAccess.Callback() to update uncommitted data of Form Browser.\r
+\r
+ @param VariableGuid An optional field to indicate the target variable\r
+ GUID name to use.\r
+ @param VariableName An optional field to indicate the target\r
+ human-readable variable name.\r
+ @param BufferSize Length in bytes of buffer to hold retrived data.\r
+ @param Buffer Buffer to hold retrived data.\r
+ @param RequestElement An optional field to specify which part of the\r
+ buffer data will be send back to Browser. If NULL,\r
+ the whole buffer of data will be committed to\r
+ Browser. <RequestElement> ::=\r
+ &OFFSET=<Number>&WIDTH=<Number>*\r
+\r
+ @retval EFI_SUCCESS Routine success.\r
+ @retval Other Updating Browser uncommitted data failed.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SetBrowserData (\r
+ EFI_GUID *VariableGuid, OPTIONAL\r
+ CHAR16 *VariableName, OPTIONAL\r
+ UINTN BufferSize,\r
+ UINT8 *Buffer,\r
+ CHAR16 *RequestElement OPTIONAL\r
+ )\r
+;\r
+\r
+/**\r
+ Draw a dialog and return the selected key.\r
+\r
+ @param NumberOfLines The number of lines for the dialog box\r
+ @param KeyValue The EFI_KEY value returned if HotKey is TRUE..\r
+ @param String Pointer to the first string in the list\r
+ @param ... A series of (quantity == NumberOfLines - 1) text\r
+ strings which will be used to construct the dialog\r
+ box\r
+\r
+ @retval EFI_SUCCESS Displayed dialog and received user interaction\r
+ @retval EFI_INVALID_PARAMETER One of the parameters was invalid.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IfrLibCreatePopUp (\r
+ IN UINTN NumberOfLines,\r
+ OUT EFI_INPUT_KEY *KeyValue,\r
+ IN CHAR16 *String,\r
+ ...\r
+ )\r
+;\r
+\r
+#endif\r
#define EFI_SCSI_STALL_1_MILLISECOND 10000\r
#define EFI_SCSI_STALL_1_SECOND 10000000\r
\r
-//\r
-// this macro cannot be directly used by the gBS->Stall(),\r
-// since the value output by this macro is in 100ns unit,\r
-// not 1us unit (1us = 1000ns)\r
-//\r
+///\r
+/// this macro cannot be directly used by the gBS->Stall(),\r
+/// since the value output by this macro is in 100ns unit,\r
+/// not 1us unit (1us = 1000ns)\r
+///\r
#define EfiScsiStallSeconds(a) ((a) * EFI_SCSI_STALL_1_SECOND)\r
\r
\r
-/**
+/**\r
Function test the ready status of the SCSI unit.\r
-
- @param[in] ScsiIo A pointer to SCSI IO protocol.
- @param[in] Timeout The length of timeout period.
- @param[out] SenseData A pointer to output sense data.
- @param[out] SenseDataLength The length of output sense data.
- @param[out] HostAdapterStatus The status of Host Adapter.
- @param[out] TargetStatus The status of the target.
-
+\r
+ @param[in] ScsiIo A pointer to SCSI IO protocol.\r
+ @param[in] Timeout The length of timeout period.\r
+ @param[out] SenseData A pointer to output sense data.\r
+ @param[out] SenseDataLength The length of output sense data.\r
+ @param[out] HostAdapterStatus The status of Host Adapter.\r
+ @param[out] TargetStatus The status of the target.\r
+\r
@retval EFI_SUCCESS The status of the unit is tested successfully.\r
@retval EFI_BAD_BUFFER_SIZE The SCSI Request Packet was executed, \r
but the entire DataBuffer could not be transferred.\r
Host Controller).\r
@retval EFI_TIMEOUT A timeout occurred while waiting for the SCSI \r
Request Packet to execute.\r
-
+\r
**/\r
EFI_STATUS\r
EFIAPI\r
);\r
\r
\r
-/**
+/**\r
Function to submit SCSI inquiry command.\r
-
- @param[in] ScsiIo SCSI IO Protocol to use
- @param[in] Timeout The length of timeout period.
- @param[in] SenseData A pointer to output sense data.
- @param[in out] SenseDataLength The length of output sense data.
- @param[out] HostAdapterStatus The status of Host Adapter.
- @param[out] TargetStatus The status of the target.
- @param[in out] InquirydataBuffer A pointer to inquiry data buffer.
- @param[in out] InquiryDataLength The length of inquiry data buffer.
- @param[in] EnableVitalProductData Boolean to enable Vital Product Data.
-
+\r
+ @param[in] ScsiIo SCSI IO Protocol to use\r
+ @param[in] Timeout The length of timeout period.\r
+ @param[in] SenseData A pointer to output sense data.\r
+ @param[in out] SenseDataLength The length of output sense data.\r
+ @param[out] HostAdapterStatus The status of Host Adapter.\r
+ @param[out] TargetStatus The status of the target.\r
+ @param[in out] InquirydataBuffer A pointer to inquiry data buffer.\r
+ @param[in out] InquiryDataLength The length of inquiry data buffer.\r
+ @param[in] EnableVitalProductData Boolean to enable Vital Product Data.\r
+\r
@retval EFI_SUCCESS The status of the unit is tested successfully.\r
@retval EFI_BAD_BUFFER_SIZE The SCSI Request Packet was executed, \r
but the entire DataBuffer could not be transferred.\r
Host Controller).\r
@retval EFI_TIMEOUT A timeout occurred while waiting for the SCSI \r
Request Packet to execute.\r
-
+\r
**/\r
EFI_STATUS\r
EFIAPI\r
);\r
\r
\r
-/**
+/**\r
Function to submit SCSI mode sense 10 command.\r
-
- @param[in] ScsiIo A pointer to SCSI IO protocol.
- @param[in] Timeout The length of timeout period.
- @param[in] SenseData A pointer to output sense data.
- @param[in out] SenseDataLength The length of output sense data.
- @param[out] HostAdapterStatus The status of Host Adapter.
- @param[out] TargetStatus The status of the target.
- @param[in] DataBuffer A pointer to input data buffer.
- @param[in out] DataLength The length of input data buffer.
- @param[in] DBDField The DBD Field (Optional).
- @param[in] PageControl Page Control.
- @param[in] PageCode Page code.
-
+\r
+ @param[in] ScsiIo A pointer to SCSI IO protocol.\r
+ @param[in] Timeout The length of timeout period.\r
+ @param[in] SenseData A pointer to output sense data.\r
+ @param[in out] SenseDataLength The length of output sense data.\r
+ @param[out] HostAdapterStatus The status of Host Adapter.\r
+ @param[out] TargetStatus The status of the target.\r
+ @param[in] DataBuffer A pointer to input data buffer.\r
+ @param[in out] DataLength The length of input data buffer.\r
+ @param[in] DBDField The DBD Field (Optional).\r
+ @param[in] PageControl Page Control.\r
+ @param[in] PageCode Page code.\r
+\r
@retval EFI_SUCCESS The status of the unit is tested successfully.\r
@retval EFI_BAD_BUFFER_SIZE The SCSI Request Packet was executed, \r
but the entire DataBuffer could not be transferred.\r
Host Controller).\r
@retval EFI_TIMEOUT A timeout occurred while waiting for the SCSI \r
Request Packet to execute.\r
-
+\r
**/\r
EFI_STATUS\r
EFIAPI\r
\r
\r
\r
-/**
+/**\r
Function to submit SCSI request sense command.\r
ScsiIo - A pointer to SCSI IO protocol.\r
Timeout - The length of timeout period.\r
SenseDataLength - The length of output sense data.\r
HostAdapterStatus - The status of Host Adapter.\r
TargetStatus - The status of the target.\r
-
- @param[in] ScsiIo SCSI IO Protocol to use
- @param[in] Timeout TODO:
- @param[in] SenseData TODO:
- @param[in out] SenseDataLength TODO:
- @param[out] HostAdapterStatus TODO:
- @param[out] TargetStatus TODO:
-
- @retval EFI_SUCCESS Valid data returned
+\r
+ @param[in] ScsiIo SCSI IO Protocol to use\r
+ @param[in] Timeout TODO:\r
+ @param[in] SenseData TODO:\r
+ @param[in out] SenseDataLength TODO:\r
+ @param[out] HostAdapterStatus TODO:\r
+ @param[out] TargetStatus TODO:\r
+\r
+ @retval EFI_SUCCESS Valid data returned\r
@retval EFI_SUCCESS The status of the unit is tested successfully.\r
@retval EFI_BAD_BUFFER_SIZE The SCSI Request Packet was executed, \r
but the entire DataBuffer could not be transferred.\r
Host Controller).\r
@retval EFI_TIMEOUT A timeout occurred while waiting for the SCSI \r
Request Packet to execute.\r
-
+\r
**/\r
EFI_STATUS\r
EFIAPI\r
);\r
\r
\r
-/**
+/**\r
Function to submit read capacity command.\r
\r
- @param[in] ScsiIo A pointer to SCSI IO protocol.
- @param[in] Timeout The length of timeout period.
- @param[in] SenseData A pointer to output sense data.
- @param[in out] SenseDataLength The length of output sense data.
- @param[out] HostAdapterStatus The status of Host Adapter.
- @param[out] TargetStatus The status of the target.
- @param[out] DataBuffer A pointer to a data buffer.
- @param[in out] DataLength The length of data buffer.
- @param[in] PMI Partial medium indicator.
-
+ @param[in] ScsiIo A pointer to SCSI IO protocol.\r
+ @param[in] Timeout The length of timeout period.\r
+ @param[in] SenseData A pointer to output sense data.\r
+ @param[in out] SenseDataLength The length of output sense data.\r
+ @param[out] HostAdapterStatus The status of Host Adapter.\r
+ @param[out] TargetStatus The status of the target.\r
+ @param[out] DataBuffer A pointer to a data buffer.\r
+ @param[in out] DataLength The length of data buffer.\r
+ @param[in] PMI Partial medium indicator.\r
+\r
@retval EFI_SUCCESS The status of the unit is tested successfully.\r
@retval EFI_BAD_BUFFER_SIZE The SCSI Request Packet was executed, \r
but the entire DataBuffer could not be transferred.\r
Host Controller).\r
@retval EFI_TIMEOUT A timeout occurred while waiting for the SCSI \r
Request Packet to execute.\r
-
+\r
**/\r
EFI_STATUS\r
EFIAPI\r
);\r
\r
\r
-/**
+/**\r
Function to submit read 10 command.\r
-
- @param[in] ScsiIo A pointer to SCSI IO protocol.
- @param[in] Timeout The length of timeout period.
- @param[in] SenseData A pointer to output sense data.
- @param[in out] SenseDataLength The length of output sense data.
- @param[out] HostAdapterStatus The status of Host Adapter.
- @param[out] TargetStatus The status of the target.
- @param[out] DataBuffer Read 10 command data.
- @param[in out] DataLength The length of data buffer.
- @param[in] StartLba The start address of LBA.
- @param[in] SectorSize The sector size.
-
+\r
+ @param[in] ScsiIo A pointer to SCSI IO protocol.\r
+ @param[in] Timeout The length of timeout period.\r
+ @param[in] SenseData A pointer to output sense data.\r
+ @param[in out] SenseDataLength The length of output sense data.\r
+ @param[out] HostAdapterStatus The status of Host Adapter.\r
+ @param[out] TargetStatus The status of the target.\r
+ @param[out] DataBuffer Read 10 command data.\r
+ @param[in out] DataLength The length of data buffer.\r
+ @param[in] StartLba The start address of LBA.\r
+ @param[in] SectorSize The sector size.\r
+\r
@retval EFI_SUCCESS The status of the unit is tested successfully.\r
@retval EFI_BAD_BUFFER_SIZE The SCSI Request Packet was executed, \r
but the entire DataBuffer could not be transferred.\r
Host Controller).\r
@retval EFI_TIMEOUT A timeout occurred while waiting for the SCSI \r
Request Packet to execute.\r
-
+\r
**/\r
EFI_STATUS\r
EFIAPI\r
);\r
\r
\r
-/**
+/**\r
Function to submit SCSI write 10 command.\r
-
- @param[in] ScsiIo SCSI IO Protocol to use
- @param[in] Timeout The length of timeout period.
- @param[in] SenseData A pointer to output sense data.
- @param[in out] SenseDataLength The length of output sense data.
- @param[out] HostAdapterStatus The status of Host Adapter.
- @param[out] TargetStatus The status of the target.
- @param[out] DataBuffer A pointer to a data buffer.
- @param[in out] DataLength The length of data buffer.
- @param[in] StartLba The start address of LBA.
- @param[in] SectorSize The sector size.
-
+\r
+ @param[in] ScsiIo SCSI IO Protocol to use\r
+ @param[in] Timeout The length of timeout period.\r
+ @param[in] SenseData A pointer to output sense data.\r
+ @param[in out] SenseDataLength The length of output sense data.\r
+ @param[out] HostAdapterStatus The status of Host Adapter.\r
+ @param[out] TargetStatus The status of the target.\r
+ @param[out] DataBuffer A pointer to a data buffer.\r
+ @param[in out] DataLength The length of data buffer.\r
+ @param[in] StartLba The start address of LBA.\r
+ @param[in] SectorSize The sector size.\r
+\r
@retval EFI_SUCCESS The status of the unit is tested successfully.\r
@retval EFI_BAD_BUFFER_SIZE The SCSI Request Packet was executed, \r
but the entire DataBuffer could not be transferred.\r
Host Controller).\r
@retval EFI_TIMEOUT A timeout occurred while waiting for the SCSI \r
Request Packet to execute.\r
-
+\r
**/\r
EFI_STATUS\r
EFIAPI\r