/** @file This file defines the EDKII Redfish Platform Config Protocol interface. (C) Copyright 2021 Hewlett Packard Enterprise Development LP
Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef EDKII_REDFISH_PLATFORM_CONFIG_DXE_H_ #define EDKII_REDFISH_PLATFORM_CONFIG_DXE_H_ #include // // Libraries // #include #include #include #include #include #include #include #include #include #include // // Protocols // #include #include #include // // Produced Protocol // #include // // 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 suborinate debug enablement for RedfishPlatformConfigDxe // must be set in PcdRedfishPlatformConfigDebugPropert (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 capbility #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