Home | History | Annotate | Download | only in TcgConfigDxe
      1 /** @file
      2   The header file of HII Config Access protocol implementation of TCG
      3   configuration module.
      4 
      5 Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
      6 This program and the accompanying materials
      7 are licensed and made available under the terms and conditions of the BSD License
      8 which accompanies this distribution.  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 __TCG_CONFIG_IMPL_H__
     17 #define __TCG_CONFIG_IMPL_H__
     18 
     19 #include <Uefi.h>
     20 
     21 #include <Protocol/HiiConfigAccess.h>
     22 #include <Protocol/HiiConfigRouting.h>
     23 #include <Protocol/TcgService.h>
     24 
     25 #include <Library/BaseLib.h>
     26 #include <Library/BaseMemoryLib.h>
     27 #include <Library/DebugLib.h>
     28 #include <Library/MemoryAllocationLib.h>
     29 #include <Library/UefiBootServicesTableLib.h>
     30 #include <Library/UefiRuntimeServicesTableLib.h>
     31 #include <Library/UefiHiiServicesLib.h>
     32 #include <Library/UefiLib.h>
     33 #include <Library/HiiLib.h>
     34 #include <Library/DevicePathLib.h>
     35 #include <Library/PcdLib.h>
     36 #include <Library/PrintLib.h>
     37 #include <Library/Tpm12DeviceLib.h>
     38 
     39 #include <Guid/MdeModuleHii.h>
     40 
     41 #include "TcgConfigNvData.h"
     42 
     43 //
     44 // Tool generated IFR binary data and String package data
     45 //
     46 extern UINT8                        TcgConfigBin[];
     47 extern UINT8                        TcgConfigDxeStrings[];
     48 
     49 ///
     50 /// HII specific Vendor Device Path definition.
     51 ///
     52 typedef struct {
     53   VENDOR_DEVICE_PATH                VendorDevicePath;
     54   EFI_DEVICE_PATH_PROTOCOL          End;
     55 } HII_VENDOR_DEVICE_PATH;
     56 
     57 typedef struct {
     58   UINTN                             Signature;
     59 
     60   EFI_HII_CONFIG_ACCESS_PROTOCOL    ConfigAccess;
     61   EFI_HII_HANDLE                    HiiHandle;
     62   EFI_HANDLE                        DriverHandle;
     63 
     64   TCG_CONFIGURATION                 *Configuration;
     65   EFI_TCG_PROTOCOL                  *TcgProtocol;
     66 } TCG_CONFIG_PRIVATE_DATA;
     67 
     68 extern TCG_CONFIG_PRIVATE_DATA      mTcgConfigPrivateDateTemplate;
     69 
     70 #define TCG_CONFIG_PRIVATE_DATA_SIGNATURE     SIGNATURE_32 ('T', 'C', 'G', 'D')
     71 #define TCG_CONFIG_PRIVATE_DATA_FROM_THIS(a)  CR (a, TCG_CONFIG_PRIVATE_DATA, ConfigAccess, TCG_CONFIG_PRIVATE_DATA_SIGNATURE)
     72 
     73 
     74 /**
     75   This function publish the TCG configuration Form for TPM device.
     76 
     77   @param[in, out]  PrivateData   Points to TCG configuration private data.
     78 
     79   @retval EFI_SUCCESS            HII Form is installed for this network device.
     80   @retval EFI_OUT_OF_RESOURCES   Not enough resource for HII Form installation.
     81   @retval Others                 Other errors as indicated.
     82 
     83 **/
     84 EFI_STATUS
     85 InstallTcgConfigForm (
     86   IN OUT TCG_CONFIG_PRIVATE_DATA  *PrivateData
     87   );
     88 
     89 /**
     90   This function removes TCG configuration Form.
     91 
     92   @param[in, out]  PrivateData   Points to TCG configuration private data.
     93 
     94 **/
     95 VOID
     96 UninstallTcgConfigForm (
     97   IN OUT TCG_CONFIG_PRIVATE_DATA    *PrivateData
     98   );
     99 
    100 /**
    101   This function allows a caller to extract the current configuration for one
    102   or more named elements from the target driver.
    103 
    104   @param[in]   This              Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
    105   @param[in]   Request           A null-terminated Unicode string in
    106                                  <ConfigRequest> format.
    107   @param[out]  Progress          On return, points to a character in the Request
    108                                  string. Points to the string's null terminator if
    109                                  request was successful. Points to the most recent
    110                                  '&' before the first failing name/value pair (or
    111                                  the beginning of the string if the failure is in
    112                                  the first name/value pair) if the request was not
    113                                  successful.
    114   @param[out]  Results           A null-terminated Unicode string in
    115                                  <ConfigAltResp> format which has all values filled
    116                                  in for the names in the Request string. String to
    117                                  be allocated by the called function.
    118 
    119   @retval EFI_SUCCESS            The Results is filled with the requested values.
    120   @retval EFI_OUT_OF_RESOURCES   Not enough memory to store the results.
    121   @retval EFI_INVALID_PARAMETER  Request is illegal syntax, or unknown name.
    122   @retval EFI_NOT_FOUND          Routing data doesn't match any storage in this
    123                                  driver.
    124 
    125 **/
    126 EFI_STATUS
    127 EFIAPI
    128 TcgExtractConfig (
    129   IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL        *This,
    130   IN CONST EFI_STRING                            Request,
    131        OUT EFI_STRING                            *Progress,
    132        OUT EFI_STRING                            *Results
    133   );
    134 
    135 /**
    136   This function processes the results of changes in configuration.
    137 
    138   @param[in]  This               Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
    139   @param[in]  Configuration      A null-terminated Unicode string in <ConfigResp>
    140                                  format.
    141   @param[out] Progress           A pointer to a string filled in with the offset of
    142                                  the most recent '&' before the first failing
    143                                  name/value pair (or the beginning of the string if
    144                                  the failure is in the first name/value pair) or
    145                                  the terminating NULL if all was successful.
    146 
    147   @retval EFI_SUCCESS            The Results is processed successfully.
    148   @retval EFI_INVALID_PARAMETER  Configuration is NULL.
    149   @retval EFI_NOT_FOUND          Routing data doesn't match any storage in this
    150                                  driver.
    151 
    152 **/
    153 EFI_STATUS
    154 EFIAPI
    155 TcgRouteConfig (
    156   IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL      *This,
    157   IN CONST EFI_STRING                          Configuration,
    158        OUT EFI_STRING                          *Progress
    159   );
    160 
    161 /**
    162   This function processes the results of changes in configuration.
    163 
    164   @param[in]  This               Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
    165   @param[in]  Action             Specifies the type of action taken by the browser.
    166   @param[in]  QuestionId         A unique value which is sent to the original
    167                                  exporting driver so that it can identify the type
    168                                  of data to expect.
    169   @param[in]  Type               The type of value for the question.
    170   @param[in]  Value              A pointer to the data being sent to the original
    171                                  exporting driver.
    172   @param[out] ActionRequest      On return, points to the action requested by the
    173                                  callback function.
    174 
    175   @retval EFI_SUCCESS            The callback successfully handled the action.
    176   @retval EFI_OUT_OF_RESOURCES   Not enough storage is available to hold the
    177                                  variable and its data.
    178   @retval EFI_DEVICE_ERROR       The variable could not be saved.
    179   @retval EFI_UNSUPPORTED        The specified Action is not supported by the
    180                                  callback.
    181 
    182 **/
    183 EFI_STATUS
    184 EFIAPI
    185 TcgCallback (
    186   IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL      *This,
    187   IN     EFI_BROWSER_ACTION                    Action,
    188   IN     EFI_QUESTION_ID                       QuestionId,
    189   IN     UINT8                                 Type,
    190   IN     EFI_IFR_TYPE_VALUE                    *Value,
    191      OUT EFI_BROWSER_ACTION_REQUEST            *ActionRequest
    192   );
    193 
    194 #endif
    195