blob: 38adea04c5bf559ad9f09f64b3d80143c617645d [file] [log] [blame]
/** @file
This file defines the EDKII Redfish Platform Config Protocol interface.
(C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. 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 <Uefi.h>
//
// Libraries
//
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/DebugLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/PrintLib.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>
///
/// 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_PLATFORM_CONFIG_DEBUG DEBUG_MANAGEABILITY
#define REDFISH_MENU_PATH_SIZE 8
/**
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