Rename x-uefi-redfish to x-UEFI-redfish to match the format of UEFI configuration namespace prefix. RFC: https://edk2.groups.io/g/rfc/message/849 Signed-off-by: Jeff Brasen <jbrasen@nvidia.com> Co-authored-by: Nickle Wang <nicklew@nvidia.com> Cc: Abner Chang <abner.chang@amd.com> Cc: Igor Kulchytskyy <igork@ami.com> Cc: Nick Ramirez <nramirez@nvidia.com> Reviewed-by: Abner Chang <abner.chang@amd.com>
		
			
				
	
	
		
			138 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  This file defines the EDKII Redfish Platform Config Protocol interface.
 | 
						|
 | 
						|
  (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
 | 
						|
  Copyright (c) 2022-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
 | 
						|
  Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.<BR>
 | 
						|
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef EDKII_REDFISH_PLATFORM_CONFIG_DXE_H_
 | 
						|
#define EDKII_REDFISH_PLATFORM_CONFIG_DXE_H_
 | 
						|
 | 
						|
#include <Uefi.h>
 | 
						|
 | 
						|
//
 | 
						|
// Libraries
 | 
						|
//
 | 
						|
#include <Library/BaseLib.h>
 | 
						|
#include <Library/BaseMemoryLib.h>
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
#include <Library/MemoryAllocationLib.h>
 | 
						|
#include <Library/PcdLib.h>
 | 
						|
#include <Library/PrintLib.h>
 | 
						|
#include <Library/RedfishDebugLib.h>
 | 
						|
#include <Library/UefiLib.h>
 | 
						|
#include <Library/UefiBootServicesTableLib.h>
 | 
						|
#include <Library/UefiDriverEntryPoint.h>
 | 
						|
 | 
						|
//
 | 
						|
// Protocols
 | 
						|
//
 | 
						|
#include <Protocol/HiiDatabase.h>
 | 
						|
#include <Protocol/HiiString.h>
 | 
						|
#include <Protocol/RegularExpressionProtocol.h>
 | 
						|
 | 
						|
//
 | 
						|
// Produced Protocol
 | 
						|
//
 | 
						|
#include <Protocol/EdkIIRedfishPlatformConfig.h>
 | 
						|
 | 
						|
//
 | 
						|
// Debug message in DEBUG_REDFISH_COMPONENT_PLATFORM_CONFIG_DXE scope.
 | 
						|
// To enable the debug message for this module, below PCDs must be set.
 | 
						|
//
 | 
						|
// 1. DEBUG_MANAGEABILITY must be set PcdDebugPrintErrorLevel.
 | 
						|
//
 | 
						|
// 2  RedfishPlatformConfigDxe debug enablement must be set in
 | 
						|
//    PcdRedfishDebugCategory (defined in RedfishPkg.dec)
 | 
						|
//
 | 
						|
// 3. The subordinate debug enablement for RedfishPlatformConfigDxe
 | 
						|
//    must be set in PcdRedfishPlatformConfigDebugProperty (defined
 | 
						|
//    in RedfishPkg.dec).
 | 
						|
//
 | 
						|
#define DEBUG_REDFISH_THIS_MODULE(DebugSubordinate, ...) \
 | 
						|
  while (RedfishPlatformConfigDebugProp (DebugSubordinate)) { \
 | 
						|
    DEBUG_REDFISH(DEBUG_REDFISH_COMPONENT_PLATFORM_CONFIG_DXE, ##__VA_ARGS__); \
 | 
						|
    break; \
 | 
						|
  }
 | 
						|
 | 
						|
#define DEBUG_REDFISH_THIS_MODULE_CODE_BEGIN(DebugSubordinate) \
 | 
						|
  if (RedfishPlatformConfigDebugProp (DebugSubordinate)) {
 | 
						|
 | 
						|
#define DEBUG_REDFISH_THIS_MODULE_CODE_END()  }
 | 
						|
 | 
						|
#define DEBUG_REDFISH_THIS_MODULE_CODE(DebugSubordinate, Expression) \
 | 
						|
  DEBUG_REDFISH_THIS_MODULE_CODE_BEGIN(DebugSubordinate) \
 | 
						|
  Expression \
 | 
						|
  DEBUG_REDFISH_THIS_MODULE_CODE_END()
 | 
						|
 | 
						|
// Subordinate debug property for DEBUG_REDFISH_PLATFORM_CONFIG_DXE
 | 
						|
#define REDFISH_PLATFORM_CONFIG_DEBUG_STRING_DATABASE     0x00000001
 | 
						|
#define REDFISH_PLATFORM_CONFIG_DEBUG_DUMP_FORMSET        0x00000002
 | 
						|
#define REDFISH_PLATFORM_CONFIG_DEBUG_CONFIG_LANG_SEARCH  0x00000004
 | 
						|
#define REDFISH_PLATFORM_CONFIG_DEBUG_CONFIG_LANG_REGEX   0x00000008
 | 
						|
 | 
						|
///
 | 
						|
/// Definition of EDKII_REDFISH_PLATFORM_CONFIG_NOTIFY.
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  EFI_EVENT    ProtocolEvent;                  ///< Protocol notification event.
 | 
						|
  VOID         *Registration;                  ///< Protocol notification registration.
 | 
						|
} REDFISH_PLATFORM_CONFIG_NOTIFY;
 | 
						|
 | 
						|
///
 | 
						|
/// Definition of REDFISH_PLATFORM_CONFIG_PRIVATE.
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  EFI_HANDLE                                ImageHandle;                ///< Driver image handle.
 | 
						|
  EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL    Protocol;
 | 
						|
  REDFISH_PLATFORM_CONFIG_NOTIFY            HiiDbNotify;
 | 
						|
  EFI_HII_DATABASE_PROTOCOL                 *HiiDatabase;               ///< The HII database protocol.
 | 
						|
  REDFISH_PLATFORM_CONFIG_NOTIFY            HiiStringNotify;
 | 
						|
  EFI_HII_STRING_PROTOCOL                   *HiiString;                 ///< HII String Protocol.
 | 
						|
  REDFISH_PLATFORM_CONFIG_NOTIFY            RegexNotify;
 | 
						|
  EFI_REGULAR_EXPRESSION_PROTOCOL           *RegularExpressionProtocol; ///< Regular Expression Protocol.
 | 
						|
  EFI_HANDLE                                NotifyHandle;               ///< The notify handle.
 | 
						|
  LIST_ENTRY                                FormsetList;                ///< The list to keep cached HII formset.
 | 
						|
  LIST_ENTRY                                PendingList;                ///< The list to keep updated HII handle.
 | 
						|
} REDFISH_PLATFORM_CONFIG_PRIVATE;
 | 
						|
 | 
						|
///
 | 
						|
/// Definition of REDFISH_STACK.
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  VOID     **Pool;
 | 
						|
  UINTN    Size;
 | 
						|
  UINTN    Index;
 | 
						|
} REDFISH_STACK;
 | 
						|
 | 
						|
#define REDFISH_PLATFORM_CONFIG_PRIVATE_FROM_THIS(a)  BASE_CR (a, REDFISH_PLATFORM_CONFIG_PRIVATE, Protocol)
 | 
						|
#define REGULAR_EXPRESSION_INCLUDE_ALL   L".*"
 | 
						|
#define CONFIGURE_LANGUAGE_PREFIX        "x-UEFI-redfish-"
 | 
						|
#define REDFISH_PLATFORM_CONFIG_VERSION  0x00010000
 | 
						|
 | 
						|
#define REDFISH_MENU_PATH_SIZE  8
 | 
						|
 | 
						|
// Definitions of Redfish platform config capability
 | 
						|
#define REDFISH_PLATFORM_CONFIG_BUILD_MENU_PATH   0x000000001
 | 
						|
#define REDFISH_PLATFORM_CONFIG_ALLOW_SUPPRESSED  0x000000002
 | 
						|
 | 
						|
/**
 | 
						|
  Convert input unicode string to ascii string. It's caller's
 | 
						|
  responsibility to free returned buffer using FreePool().
 | 
						|
 | 
						|
  @param[in]  UnicodeString     Unicode string to be converted.
 | 
						|
 | 
						|
  @retval CHAR8 *               Ascii string on return.
 | 
						|
 | 
						|
**/
 | 
						|
CHAR8 *
 | 
						|
StrToAsciiStr (
 | 
						|
  IN  EFI_STRING  UnicodeString
 | 
						|
  );
 | 
						|
 | 
						|
#endif
 |