/** @file\r
The EFI_FORM_CALLBACK_PROTOCOL is the defined interface for access to custom\r
- NV storage devices as well as communication of user selections in a more\r
+ NV storage devices and for communication of user selections in a more\r
interactive environment. This protocol should be published by hardware\r
- specific drivers which want to export access to custom hardware storage or\r
- publish IFR which has a requirement to call back the original driver.\r
+ specific drivers that want to export access to custom hardware storage or\r
+ publish IFR that need to call back the original driver.\r
\r
- Copyright (c) 2006 - 2009, 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
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under\r
+the terms and conditions of the BSD License that accompanies this distribution.\r
+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
+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
@par Revision Reference:\r
This protocol is defined in HII spec 0.92.\r
\r
**/\r
\r
-#ifndef __FORM_CALLBACK_H__\r
-#define __FORM_CALLBACK_H__\r
-\r
-#include <FrameworkDxe.h>\r
+#ifndef __FRAMEWORK_FORM_CALLBACK_H__\r
+#define __FRAMEWORK_FORM_CALLBACK_H__\r
\r
#include <Protocol/FrameworkHii.h>\r
#include <Protocol/FrameworkFormBrowser.h>\r
//\r
typedef struct _EFI_FORM_CALLBACK_PROTOCOL EFI_FORM_CALLBACK_PROTOCOL;\r
\r
+///\r
+/// Inconsistent with specification here:\r
+/// RESET_REQUIRED, EXIT_REQUIRED, SAVE_REQUIRED, NV_CHANGED and NV_NOT_CHANGED are not\r
+/// defined in HII specification. These Flags of EFI_IFR_DATA_ENTRY should be defined\r
+/// to describe the standard behavior of the browser after the callback.\r
+///\r
+/// If this flag is set, the browser will exit and reset after processing callback results.\r
+///\r
+#define RESET_REQUIRED 1\r
+///\r
+/// If this flag is set, the browser will exit after processing callback results.\r
+///\r
+#define EXIT_REQUIRED 2\r
+///\r
+/// If this flag is set, the browser will save the NV data after processing callback results.\r
+///\r
+#define SAVE_REQUIRED 4\r
+///\r
+/// If this flag is set, the browser will turn the NV flag on after processing callback results.\r
+///\r
+#define NV_CHANGED 8\r
+///\r
+/// If this flag is set, the browser will turn the NV flag off after processing callback results.\r
+///\r
+#define NV_NOT_CHANGED 16\r
+\r
#pragma pack(1)\r
typedef struct {\r
UINT8 OpCode; ///< Likely a string, numeric, or one-of\r
- UINT8 Length; ///< Length of the FRAMEWORK_EFI_IFR_DATA_ENTRY packet\r
- UINT16 Flags; ///< Flags settings to determine what behavior is desired from the browser after the callback\r
- VOID *Data; ///< The data in the form based on the op-code type - this is not a pointer to the data, the data follows immediately\r
+ UINT8 Length; ///< Length of the EFI_IFR_DATA_ENTRY packet.\r
+ UINT16 Flags; ///< Flags settings to determine what behavior is desired from the browser after the callback.\r
+ VOID *Data; ///< The data in the form based on the op-code type. This is not a pointer to the data; the data follows immediately.\r
///\r
- /// If the OpCode is a OneOf or Numeric type - Data is a UINT16 value\r
- /// If the OpCode is a String type - Data is a CHAR16[x] type\r
- /// If the OpCode is a Checkbox type - Data is a UINT8 value\r
- /// If the OpCode is a NV Access type - Data is a FRAMEWORK_EFI_IFR_NV_DATA structure\r
+ /// If the OpCode is a OneOf or Numeric type - Data is a UINT16 value.\r
+ /// If the OpCode is a String type - Data is a CHAR16[x] type.\r
+ /// If the OpCode is a Checkbox type - Data is a UINT8 value.\r
+ /// If the OpCode is a NV Access type - Data is a EFI_IFR_NV_DATA structure.\r
///\r
-} FRAMEWORK_EFI_IFR_DATA_ENTRY;\r
+} EFI_IFR_DATA_ENTRY;\r
\r
typedef struct {\r
- VOID *NvRamMap; ///< If the flag of the op-code specified retrieval of a copy of the NVRAM map,\r
+ VOID *NvRamMap; ///< If the flag of the op-code specified retrieval of a copy of the NVRAM map.\r
//\r
// this is a pointer to a buffer copy\r
//\r
- UINT32 EntryCount; ///< How many FRAMEWORK_EFI_IFR_DATA_ENTRY entries\r
+ UINT32 EntryCount; ///< Number of EFI_IFR_DATA_ENTRY entries.\r
//\r
- // FRAMEWORK_EFI_IFR_DATA_ENTRY Data[1]; // The in-line Data entries.\r
+ // EFI_IFR_DATA_ENTRY Data[1]; // The in-line Data entries.\r
//\r
-} FRAMEWORK_EFI_IFR_DATA_ARRAY;\r
+} EFI_IFR_DATA_ARRAY;\r
\r
\r
typedef union {\r
- FRAMEWORK_EFI_IFR_DATA_ARRAY DataArray; ///< Primarily used by those who call back to their drivers and use HII as a repository\r
- FRAMEWORK_EFI_IFR_PACKET DataPacket; ///< Primarily used by those which do not use HII as a repository\r
- CHAR16 String[1]; ///< If returning an error - fill the string with null-terminated contents\r
+ EFI_IFR_DATA_ARRAY DataArray; ///< Primarily used by those that call back to their drivers and use HII as a repository.\r
+ EFI_IFR_PACKET DataPacket; ///< Primarily used by those that do not use HII as a repository.\r
+ CHAR16 String[1]; ///< If returning an error - fill the string with null-terminated contents.\r
} EFI_HII_CALLBACK_PACKET;\r
\r
typedef struct {\r
FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId; ///< Offset into the map\r
- UINT8 StorageWidth; ///< Width of the value\r
+ UINT16 QuestionId; ///< Offset into the map.\r
+ UINT8 StorageWidth; ///< Width of the value.\r
//\r
// CHAR8 Data[1]; // The Data itself\r
//\r
-} FRAMEWORK_EFI_IFR_NV_DATA;\r
+} EFI_IFR_NV_DATA;\r
\r
#pragma pack()\r
//\r
\r
@param This A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance.\r
@param VariableName A NULL-terminated Unicode string that is the\r
- name of the vendor's variable. Each VariableName is unique for each VendorGuid.\r
+ name of the vendor's variable. Each VariableName\r
+ is unique for each VendorGuid.\r
@param VendorGuid A unique identifier for the vendor.\r
@param Attributes Attributes bit-mask to set for the variable.\r
+ Inconsistent with specification here:\r
+ Attributes data type has been changed from\r
+ UINT32 * to UINT32, because the input parameter is\r
+ not necessary to use a pointer date type.\r
@param DataSize The size in bytes of the Buffer. A size of zero causes\r
the variable to be deleted.\r
@param Buffer The buffer containing the contents of the variable.\r
- @param ResetRequired Returns a value from the driver that abstracts\r
- this information and will enable a system to know if a system reset\r
- is required to achieve the configuration changes being enabled through\r
- this function.\r
+ @param ResetRequired Returns a value from the driver that abstracts this\r
+ information and will enable a system to know if a\r
+ system reset is required to achieve the configuration\r
+ changes being enabled through this function.\r
\r
@retval EFI_SUCCESS The firmware has successfully stored the variable and\r
its data as defined by the Attributes.\r
\r
@param This A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance.\r
@param KeyValue A unique value which is sent to the original exporting\r
- driver so that it can identify the type of data to expect. The format of\r
- the data tends to vary based on the opcode that generated the callback.\r
+ driver so that it can identify the type of data\r
+ to expect. The format of the data tends to vary based\r
+ on the opcode that generated the callback.\r
@param Data A pointer to the data being sent to the original exporting driver.\r
- @param Packet A pointer to a packet of information which a driver passes\r
+ @param Packet A pointer to a packet of information that a driver passes\r
back to the browser.\r
\r
@return Status Code\r
(EFIAPI *EFI_FORM_CALLBACK)(\r
IN EFI_FORM_CALLBACK_PROTOCOL *This,\r
IN UINT16 KeyValue,\r
- IN FRAMEWORK_EFI_IFR_DATA_ARRAY *Data,\r
+ IN EFI_IFR_DATA_ARRAY *Data,\r
OUT EFI_HII_CALLBACK_PACKET **Packet\r
);\r
\r
/**\r
The EFI_FORM_CALLBACK_PROTOCOL is the defined interface for access to\r
custom NVS devices as well as communication of user selections in a more\r
- interactive environment. This protocol should be published by hardware-specific\r
+ interactive environment. This protocol should be published by platform-specific\r
drivers that want to export access to custom hardware storage or publish IFR\r
that has a requirement to call back the original driver.\r
**/\r