Home | History | Annotate | Download | only in Protocol
      1 /** @file
      2   Extension Form Browser Protocol provides the services that can be used to
      3   register the different hot keys for the standard Browser actions described in UEFI specification.
      4 
      5 Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
      6 This program and the accompanying materials are licensed and made available under
      7 the terms and conditions of the BSD License that accompanies this distribution.
      8 The full text of the license may be found at
      9 http://opensource.org/licenses/bsd-license.php.
     10 
     11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14 **/
     15 
     16 #ifndef __FORM_BROWSER_EXTENSION2_H__
     17 #define __FORM_BROWSER_EXTENSION2_H__
     18 
     19 #include <Protocol/FormBrowserEx.h>
     20 
     21 #define EDKII_FORM_BROWSER_EXTENSION2_PROTOCOL_GUID  \
     22   { 0xa770c357, 0xb693, 0x4e6d, { 0xa6, 0xcf, 0xd2, 0x1c, 0x72, 0x8e, 0x55, 0xb }}
     23 
     24 typedef struct _EDKII_FORM_BROWSER_EXTENSION2_PROTOCOL   EDKII_FORM_BROWSER_EXTENSION2_PROTOCOL;
     25 
     26 #define BROWSER_EXTENSION2_VERSION_1    0x10000
     27 #define BROWSER_EXTENSION2_VERSION_1_1  0x10001
     28 
     29 /**
     30   Check whether the browser data has been modified.
     31 
     32   @retval TRUE        Browser data is modified.
     33   @retval FALSE       No browser data is modified.
     34 
     35 **/
     36 typedef
     37 BOOLEAN
     38 (EFIAPI *IS_BROWSER_DATA_MODIFIED) (
     39   VOID
     40   );
     41 
     42 /**
     43   Execute the action requested by the Action parameter.
     44 
     45   @param[in] Action     Execute the request action.
     46   @param[in] DefaultId  The default Id info when need to load default value.
     47 
     48   @retval EFI_SUCCESS              Execute the request action succss.
     49 
     50 **/
     51 typedef
     52 EFI_STATUS
     53 (EFIAPI *EXECUTE_ACTION) (
     54   IN UINT32        Action,
     55   IN UINT16        DefaultId
     56   );
     57 
     58 /**
     59   Check whether required reset when exit the browser
     60 
     61   @retval TRUE      Browser required to reset after exit.
     62   @retval FALSE     Browser not need to reset after exit.
     63 
     64 **/
     65 typedef
     66 BOOLEAN
     67 (EFIAPI *IS_RESET_REQUIRED) (
     68   VOID
     69   );
     70 
     71 #define FORM_ENTRY_INFO_SIGNATURE    SIGNATURE_32 ('f', 'e', 'i', 's')
     72 
     73 typedef struct {
     74   UINTN           Signature;
     75   LIST_ENTRY      Link;
     76 
     77   EFI_HII_HANDLE  HiiHandle;
     78   EFI_GUID        FormSetGuid;
     79   EFI_FORM_ID     FormId;
     80   EFI_QUESTION_ID QuestionId;
     81 } FORM_ENTRY_INFO;
     82 
     83 #define FORM_ENTRY_INFO_FROM_LINK(a)  CR (a, FORM_ENTRY_INFO, Link, FORM_ENTRY_INFO_SIGNATURE)
     84 
     85 #define FORM_QUESTION_ATTRIBUTE_OVERRIDE_SIGNATURE    SIGNATURE_32 ('f', 'q', 'o', 's')
     86 
     87 typedef struct {
     88   UINTN            Signature;
     89   LIST_ENTRY       Link;
     90 
     91   EFI_QUESTION_ID  QuestionId;           // Find the question
     92   EFI_FORM_ID      FormId;               // Find the form
     93   EFI_GUID         FormSetGuid;          // Find the formset.
     94   EFI_HII_HANDLE   HiiHandle;            // Find the HII handle
     95   UINT32           Attribute;            // Hide or grayout ...
     96 } QUESTION_ATTRIBUTE_OVERRIDE;
     97 
     98 #define FORM_QUESTION_ATTRIBUTE_OVERRIDE_FROM_LINK(a)  CR (a, QUESTION_ATTRIBUTE_OVERRIDE, Link, FORM_QUESTION_ATTRIBUTE_OVERRIDE_SIGNATURE)
     99 
    100 struct _EDKII_FORM_BROWSER_EXTENSION2_PROTOCOL {
    101   ///
    102   /// Version for protocol future extension.
    103   ///
    104   UINT32                    Version;
    105   SET_SCOPE                 SetScope;
    106   REGISTER_HOT_KEY          RegisterHotKey;
    107   REGISTER_EXIT_HANDLER     RegiserExitHandler;
    108   IS_BROWSER_DATA_MODIFIED  IsBrowserDataModified;
    109   EXECUTE_ACTION            ExecuteAction;
    110   ///
    111   /// A list of type FORMID_INFO is Browser View Form History List.
    112   ///
    113   LIST_ENTRY                FormViewHistoryHead;
    114   ///
    115   /// A list of type QUESTION_ATTRIBUTE_OVERRIDE.
    116   ///
    117   LIST_ENTRY                OverrideQestListHead;
    118 
    119   IS_RESET_REQUIRED         IsResetRequired;
    120 };
    121 
    122 extern EFI_GUID gEdkiiFormBrowserEx2ProtocolGuid;
    123 
    124 #endif
    125 
    126