Files
system76-edk2/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.h
Nickle Wang 5258c4186f RedfishPkg/RedfishPlatformConfigDxe: Fix string assert issue
When calling SetValue() with string type input, there is
assertion of providing zero string ID to HII string function.
Fix this issue by creating string ID for input string buffer.
Fix Unicode and Ascii code convert issue together.
Add text op-code support

Signed-off-by: Nickle Wang <nicklew@nvidia.com>
Cc: Abner Chang <abner.chang@amd.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Reviewed-by: Abner Chang <abner.chang@amd.com>
Reviewed-by: Igor Kulchytskyy <igork@ami.com>
2023-05-29 03:28:18 +00:00

96 lines
3.1 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-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_VERBOSE
#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