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