/** @file This file defines the EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL interface. (C) Copyright 2021-2022 Hewlett Packard Enterprise Development LP
Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef EDKII_REDFISH_PLATFORM_CONFIG_H_ #define EDKII_REDFISH_PLATFORM_CONFIG_H_ typedef struct _EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL; /// /// Definition of EDKII_REDFISH_TYPE_VALUE /// typedef union { INT64 Integer; BOOLEAN Boolean; CHAR8 *Buffer; CHAR8 **StringArray; INT64 *IntegerArray; BOOLEAN *BooleanArray; } EDKII_REDFISH_TYPE_VALUE; /// /// Definition of EDKII_REDFISH_VALUE_TYPES /// typedef enum { RedfishValueTypeUnknown = 0, RedfishValueTypeInteger, RedfishValueTypeBoolean, RedfishValueTypeString, RedfishValueTypeStringArray, RedfishValueTypeIntegerArray, RedfishValueTypeBooleanArray, RedfishValueTypeMax } EDKII_REDFISH_VALUE_TYPES; /// /// Definition of EDKII_REDFISH_ATTRIBUTE_TYPES /// typedef enum { RedfishAttributeTypeUnknown = 0, RedfishAttributeTypeEnumeration, RedfishAttributeTypeString, RedfishAttributeTypeInteger, RedfishAttributeTypeBoolean, RedfishAttributeTypePassword } EDKII_REDFISH_ATTRIBUTE_TYPES; /// /// Definition of EDKII_REDFISH_VALUE /// typedef struct { EDKII_REDFISH_VALUE_TYPES Type; EDKII_REDFISH_TYPE_VALUE Value; UINTN ArrayCount; } EDKII_REDFISH_VALUE; /// /// Definition of EDKII_REDFISH_ATTRIBUTE_VALUE /// typedef struct { CHAR8 *ValueName; CHAR8 *ValueDisplayName; } EDKII_REDFISH_ATTRIBUTE_VALUE; /// /// Definition of EDKII_REDFISH_POSSIBLE_VALUES /// typedef struct { UINTN ValueCount; EDKII_REDFISH_ATTRIBUTE_VALUE *ValueArray; } EDKII_REDFISH_POSSIBLE_VALUES; /// /// Definition of EDKII_REDFISH_ATTRIBUTE /// typedef struct { CHAR8 *AttributeName; CHAR8 *DisplayName; CHAR8 *HelpText; CHAR8 *MenuPath; EDKII_REDFISH_ATTRIBUTE_TYPES Type; BOOLEAN ResetRequired; BOOLEAN ReadOnly; BOOLEAN GrayedOut; BOOLEAN Suppress; UINT64 NumMaximum; UINT64 NumMinimum; UINT64 NumStep; UINT8 StrMaxSize; UINT8 StrMinSize; EDKII_REDFISH_POSSIBLE_VALUES Values; } EDKII_REDFISH_ATTRIBUTE; /** Get Redfish value with the given Schema and Configure Language. @param[in] This Pointer to EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL instance. @param[in] Schema The Redfish schema to query. @param[in] Version The Redfish version to query. @param[in] ConfigureLang The target value which match this configure Language. @param[out] Value The returned value. @retval EFI_SUCCESS Value is returned successfully. @retval Others Some error happened. **/ typedef EFI_STATUS (EFIAPI *EDKII_REDFISH_PLATFORM_CONFIG_GET_VALUE)( IN EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL *This, IN CHAR8 *Schema, IN CHAR8 *Version, IN EFI_STRING ConfigureLang, OUT EDKII_REDFISH_VALUE *Value ); // // Default class standard // #define EDKII_REDFISH_DEFAULT_CLASS_STANDARD EFI_HII_DEFAULT_CLASS_STANDARD /** Get Redfish default value with the given Schema and Configure Language. @param[in] This Pointer to EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL instance. @param[in] Schema The Redfish schema to query. @param[in] Version The Redfish version to query. @param[in] ConfigureLang The target value which match this configure Language. @param[in] DefaultClass The UEFI defined default class. Please refer to UEFI spec. 33.2.5.8 "defaults" for details. @param[out] Value The returned value. @retval EFI_SUCCESS Value is returned successfully. @retval Others Some error happened. **/ typedef EFI_STATUS (EFIAPI *EDKII_REDFISH_PLATFORM_CONFIG_GET_DEFAULT_VALUE)( IN EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL *This, IN CHAR8 *Schema, IN CHAR8 *Version, IN EFI_STRING ConfigureLang, IN UINT16 DefaultClass, OUT EDKII_REDFISH_VALUE *Value ); /** Set Redfish value with the given Schema and Configure Language. @param[in] This Pointer to EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL instance. @param[in] Schema The Redfish schema to query. @param[in] Version The Redfish version to query. @param[in] ConfigureLang The target value which match this configure Language. @param[in] Value The value to set. @retval EFI_SUCCESS Value is returned successfully. @retval Others Some error happened. **/ typedef EFI_STATUS (EFIAPI *EDKII_REDFISH_PLATFORM_CONFIG_SET_VALUE)( IN EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL *This, IN CHAR8 *Schema, IN CHAR8 *Version, IN EFI_STRING ConfigureLang, IN EDKII_REDFISH_VALUE Value ); /** Get Redfish attribute value with the given Schema and Configure Language. @param[in] This Pointer to EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL instance. @param[in] Schema The Redfish schema to query. @param[in] Version The Redfish version to query. @param[in] ConfigureLang The target value which match this configure Language. @param[out] AttributeValue The attribute value. @retval EFI_SUCCESS Value is returned successfully. @retval Others Some error happened. **/ typedef EFI_STATUS (EFIAPI *EDKII_REDFISH_PLATFORM_CONFIG_GET_ATTRIBUTE)( IN EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL *This, IN CHAR8 *Schema, IN CHAR8 *Version, IN EFI_STRING ConfigureLang, OUT EDKII_REDFISH_ATTRIBUTE *AttributeValue ); /** Get the list of Configure Language from platform configuration by the given Schema and RegexPattern. @param[in] This Pointer to EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL instance. @param[in] Schema The Redfish schema to query. @param[in] Version The Redfish version to query. @param[in] RegexPattern The target Configure Language pattern. This is used for regular expression matching. @param[out] ConfigureLangList The list of Configure Language. @param[out] Count The number of Configure Language in ConfigureLangList. @retval EFI_SUCCESS ConfigureLangList is returned successfully. @retval Others Some error happened. **/ typedef EFI_STATUS (EFIAPI *EDKII_REDFISH_PLATFORM_CONFIG_GET_CONFIG_LANG)( IN EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL *This, IN CHAR8 *Schema, IN CHAR8 *Version, IN EFI_STRING RegexPattern, OUT EFI_STRING **ConfigureLangList, OUT UINTN *Count ); /** Get the list of supported Redfish schema from platform configuration. @param[in] This Pointer to EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL instance. @param[out] SupportedSchema The supported schema list which is separated by ';'. For example: "x-uefi-redfish-Memory.v1_7_1;x-uefi-redfish-Boot.v1_0_1" The SupportedSchema is allocated by the callee. It's caller's responsibility to free this buffer using FreePool(). @retval EFI_SUCCESS Schema is returned successfully. @retval Others Some error happened. **/ typedef EFI_STATUS (EFIAPI *EDKII_REDFISH_PLATFORM_CONFIG_GET_SUPPORTED_SCHEMA)( IN EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL *This, OUT CHAR8 **SupportedSchema ); struct _EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL { UINT64 Revision; EDKII_REDFISH_PLATFORM_CONFIG_GET_VALUE GetValue; EDKII_REDFISH_PLATFORM_CONFIG_SET_VALUE SetValue; EDKII_REDFISH_PLATFORM_CONFIG_GET_DEFAULT_VALUE GetDefaultValue; EDKII_REDFISH_PLATFORM_CONFIG_GET_ATTRIBUTE GetAttribute; EDKII_REDFISH_PLATFORM_CONFIG_GET_CONFIG_LANG GetConfigureLang; EDKII_REDFISH_PLATFORM_CONFIG_GET_SUPPORTED_SCHEMA GetSupportedSchema; }; extern EFI_GUID gEdkIIRedfishPlatformConfigProtocolGuid; #endif