/** @file
- The file contain all library functions and definitions for IFR opcode creation and
- related Form Browser utility Operations.
+ This library contains functions to do IFR opcode creation and utility functions
+ to help module to interact with a UEFI Form Browser.
Copyright (c) 2007 - 2008, Intel Corporation
All rights reserved. This program and the accompanying materials
#define UEFI_LANGUAGE_VARIABLE L"PlatformLang"
#define UEFI_LANGUAGE_CODES_VARIABLE L"PlatformLangCodes"
-///
-/// Limited buffer size recommended by RFC3066
-/// (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)
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
**/
/**
Create EFI_IFR_DEFAULT_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@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_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER The type is not valid.
/**
Create EFI_IFR_ACTION_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param QuestionId Question ID
@param Prompt String ID for Prompt
@param Help String ID for Help
@param QuestionConfig String ID for configuration
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
/**
Create EFI_IFR_SUBTITLE_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@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_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
**/
/**
Create EFI_IFR_TEXT_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@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_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
**/
/**
Create EFI_IFR_REF_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param FormId Destination Form ID
@param Prompt String ID for Prompt
@param Help String ID for Help
@param QuestionId Question ID
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
/**
Create EFI_IFR_ONE_OF_OPTION_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@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_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
+ @retval EFI_INVALID_PARAMETER If OptionCount is not zero but OptionsList is NULL.
**/
EFI_STATUS
/**
Create EFI_IFR_ONE_OF_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param QuestionId Question ID
@param VarStoreId Storage ID
@param VarOffset Offset in Storage
@param OptionCount Number of options in option list
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
/**
Create EFI_IFR_ORDERED_LIST_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param QuestionId Question ID
@param VarStoreId Storage ID
@param VarOffset Offset in Storage
@param OptionCount Number of options in option list
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
/**
Create EFI_IFR_CHECKBOX_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param QuestionId Question ID
@param VarStoreId Storage ID
@param VarOffset Offset in Storage
@param CheckBoxFlags Flags for checkbox opcode
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
/**
Create EFI_IFR_NUMERIC_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param QuestionId Question ID
@param VarStoreId Storage ID
@param VarOffset Offset in Storage
@param Default Numeric default value
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
/**
Create EFI_IFR_STRING_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param QuestionId Question ID
@param VarStoreId Storage ID
@param VarOffset Offset in Storage
@param MaxSize String maximum length
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
;
/**
- Converts binary buffer to Unicode string in reversed byte order to BufToHexString().
+ Converts binary buffer to a Unicode string. The byte buffer is in a reversed byte order
+ compared with the byte order defined in 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.
+ @retval EFI_OUT_OF_RESOURCES There is no enough available memory space.
**/
EFI_STATUS
EFIAPI
-BufferToHexString (
+BufInReverseOrderToHexString (
IN OUT CHAR16 *Str,
IN UINT8 *Buffer,
IN UINTN BufferSize
@param Str String to be converted from.
@retval EFI_SUCCESS The function completed successfully.
+ @retval RETURN_BUFFER_TOO_SMALL The input BufferSize is too small to hold the output. BufferSize
+ will be updated to the size required for the converstion.
**/
EFI_STATUS
EFIAPI
-HexStringToBuffer (
+HexStringToBufInReverseOrder (
IN OUT UINT8 *Buffer,
IN OUT UINTN *BufferSize,
IN CHAR16 *Str
@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.
+ containing length of Unicode string buffer when returning EFI_SUCCESS;
+ containg length of string buffer desired when returning EFI_BUFFER_TOO_SMALL.
@param ConfigString Binary representation of Unicode String, <string> := (<HexCh>4)+
- @retval EFI_SUCCESS Routine success.
+ @retval EFI_SUCCESS Operation completes successfully.
@retval EFI_BUFFER_TOO_SMALL The string buffer is too small.
**/
If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired.
@param UnicodeString Original Unicode string.
- @retval EFI_SUCCESS Routine success.
+ @retval EFI_SUCCESS Operation completes successfully.
@retval EFI_BUFFER_TOO_SMALL The string buffer is too small.
**/
@param DriverHandle Driver handle which contains the routing
information: PATH.
- @retval EFI_SUCCESS Routine success.
+ @retval EFI_SUCCESS Operation completes successfully.
@retval EFI_BUFFER_TOO_SMALL The ConfigHdr string buffer is too small.
**/
desired.
@param Buffer Buffer to hold retrived data.
- @retval EFI_SUCCESS Routine success.
+ @retval EFI_SUCCESS Operation completes successfully.
@retval EFI_BUFFER_TOO_SMALL The intput buffer is too small.
**/
Browser. <RequestElement> ::=
&OFFSET=<Number>&WIDTH=<Number>*
- @retval EFI_SUCCESS Routine success.
+ @retval EFI_SUCCESS Operation completes successfully.
@retval Other Updating Browser uncommitted data failed.
**/
**/
EFI_STATUS
EFIAPI
-BufferToHexString (
+BufInReverseOrderToHexString (
IN OUT CHAR16 *Str,
IN UINT8 *Buffer,
IN UINTN BufferSize
@param Str String to be converted from.
@retval EFI_SUCCESS The function completed successfully.
+ @retval RETURN_BUFFER_TOO_SMALL The input BufferSize is too small to hold the output. BufferSize
+ will be updated to the size required for the converstion.
**/
EFI_STATUS
EFIAPI
-HexStringToBuffer (
+HexStringToBufInReverseOrder (
IN OUT UINT8 *Buffer,
IN OUT UINTN *BufferSize,
IN CHAR16 *Str
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_SUCCESS Operation completes successfully.
@retval EFI_BUFFER_TOO_SMALL The string buffer is too small.
**/
If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired.
@param UnicodeString Original Unicode string.
- @retval EFI_SUCCESS Routine success.
+ @retval EFI_SUCCESS Operation completes successfully.
@retval EFI_BUFFER_TOO_SMALL The string buffer is too small.
**/
@param DriverHandle Driver handle which contains the routing
information: PATH.
- @retval EFI_SUCCESS Routine success.
+ @retval EFI_SUCCESS Operation completes successfully.
@retval EFI_BUFFER_TOO_SMALL The ConfigHdr string buffer is too small.
**/
StrCpy (StrPtr, L"GUID=");
StrPtr += 5;
- BufferToHexString (StrPtr, (UINT8 *) Guid, sizeof (EFI_GUID));
+ BufInReverseOrderToHexString (StrPtr, (UINT8 *) Guid, sizeof (EFI_GUID));
StrPtr += 32;
//
StrCpy (StrPtr, L"&PATH=");
StrPtr += 6;
- BufferToHexString (StrPtr, (UINT8 *) DevicePath, DevicePathSize);
+ BufInReverseOrderToHexString (StrPtr, (UINT8 *) DevicePath, DevicePathSize);
return EFI_SUCCESS;
}
desired.
@param Buffer Buffer to hold retrived data.
- @retval EFI_SUCCESS Routine success.
+ @retval EFI_SUCCESS Operation completes successfully.
@retval EFI_BUFFER_TOO_SMALL The intput buffer is too small.
@retval EFI_OUT_OF_RESOURCES There is no enough available memory space.
Browser. <RequestElement> ::=
&OFFSET=<Number>&WIDTH=<Number>*
- @retval EFI_SUCCESS Routine success.
+ @retval EFI_SUCCESS Operation completes successfully.
@retval EFI_OUT_OF_RESOURCES There is no enough available memory space.
@retval Other Updating Browser uncommitted data failed.
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
**/
/**
Create EFI_IFR_DEFAULT_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@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_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER The type is not valid.
/**
Create EFI_IFR_ACTION_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param QuestionId Question ID
@param Prompt String ID for Prompt
@param Help String ID for Help
@param QuestionConfig String ID for configuration
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
/**
Create EFI_IFR_SUBTITLE_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@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_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
**/
/**
Create EFI_IFR_TEXT_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@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_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
**/
/**
Create EFI_IFR_REF_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param FormId Destination Form ID
@param Prompt String ID for Prompt
@param Help String ID for Help
@param QuestionId Question ID
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
/**
Create EFI_IFR_ONE_OF_OPTION_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@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_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
+ @retval EFI_INVALID_PARAMETER If OptionCount is not zero but OptionsList is NULL.
**/
EFI_STATUS
/**
Create EFI_IFR_ONE_OF_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param QuestionId Question ID
@param VarStoreId Storage ID
@param VarOffset Offset in Storage
@param OptionCount Number of options in option list
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
/**
Create EFI_IFR_ORDERED_LIST_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param QuestionId Question ID
@param VarStoreId Storage ID
@param VarOffset Offset in Storage
@param OptionCount Number of options in option list
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
/**
Create EFI_IFR_CHECKBOX_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param QuestionId Question ID
@param VarStoreId Storage ID
@param VarOffset Offset in Storage
@param CheckBoxFlags Flags for checkbox opcode
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
/**
Create EFI_IFR_NUMERIC_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param QuestionId Question ID
@param VarStoreId Storage ID
@param VarOffset Offset in Storage
@param Default Numeric default value
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
/**
Create EFI_IFR_STRING_OP opcode.
+ If Data is NULL or Data->Data is NULL, then ASSERT.
+
@param QuestionId Question ID
@param VarStoreId Storage ID
@param VarOffset Offset in Storage
@param MaxSize String maximum length
@param Data Destination for the created opcode binary
- @retval EFI_SUCCESS Opcode create success
+ @retval EFI_SUCCESS Opcode is created successfully.
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.