From: "Chang, Abner" <abner.chang@amd.com>
To: Nickle Wang <nicklew@nvidia.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: Igor Kulchytskyy <igork@ami.com>, Nick Ramirez <nramirez@nvidia.com>
Subject: Re: [PATCH v3 1/5] RedfishPkg: introduce EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL
Date: Wed, 19 Apr 2023 09:44:40 +0000 [thread overview]
Message-ID: <MN2PR12MB3966BCB78BA57F2F2C509BD4EA629@MN2PR12MB3966.namprd12.prod.outlook.com> (raw)
In-Reply-To: <20230419090915.97-1-nicklew@nvidia.com>
[AMD Official Use Only - General]
Reviewed-by: Abner Chang <abner.chang@amd.com>
> -----Original Message-----
> From: Nickle Wang <nicklew@nvidia.com>
> Sent: Wednesday, April 19, 2023 5:09 PM
> To: devel@edk2.groups.io
> Cc: Chang, Abner <Abner.Chang@amd.com>; Igor Kulchytskyy
> <igork@ami.com>; Nick Ramirez <nramirez@nvidia.com>
> Subject: [PATCH v3 1/5] RedfishPkg: introduce
> EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL
>
> Caution: This message originated from an External Source. Use proper
> caution when opening attachments, clicking links, or responding.
>
>
> EDKII Redfish Platform Config Protocol defines the protocol interfaces that
> abstracts the platform configuration format and storage from EDK2 Redfish
> Feature driver. This protocol provides the interfaces to get and set platform
> configuration with the format and configuration storage agnostic to the
> Redfish feature driver.
>
> Signed-off-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>
> ---
> RedfishPkg/RedfishPkg.dec | 3 +
> .../Protocol/EdkIIRedfishPlatformConfig.h | 257 ++++++++++++++++++
> 2 files changed, 260 insertions(+)
> create mode 100644
> RedfishPkg/Include/Protocol/EdkIIRedfishPlatformConfig.h
>
> diff --git a/RedfishPkg/RedfishPkg.dec b/RedfishPkg/RedfishPkg.dec index
> f171053aec10..904630ae4be6 100644
> --- a/RedfishPkg/RedfishPkg.dec
> +++ b/RedfishPkg/RedfishPkg.dec
> @@ -78,6 +78,9 @@
> ## Include/Protocol/Edk2RedfishConfigHandler.h
> gEdkIIRedfishConfigHandlerProtocolGuid = { 0xbc0fe6bb, 0x2cc9, 0x463e,
> { 0x90, 0x82, 0xfa, 0x11, 0x76, 0xfc, 0x67, 0xde } }
>
> + ## Include/Protocol/EdkIIRedfishPlatformConfig.h
> + gEdkIIRedfishPlatformConfigProtocolGuid = { 0X4D94A7C7, 0X4CE4,
> + 0X4A84, { 0X88, 0XC1, 0X33, 0X0C, 0XD4, 0XA3, 0X47, 0X67 } }
> +
> [Guids]
> gEfiRedfishPkgTokenSpaceGuid = { 0x4fdbccb7, 0xe829, 0x4b4c, { 0x88,
> 0x87, 0xb2, 0x3f, 0xd7, 0x25, 0x4b, 0x85 }}
>
> diff --git a/RedfishPkg/Include/Protocol/EdkIIRedfishPlatformConfig.h
> b/RedfishPkg/Include/Protocol/EdkIIRedfishPlatformConfig.h
> new file mode 100644
> index 000000000000..d20b2c980e5a
> --- /dev/null
> +++ b/RedfishPkg/Include/Protocol/EdkIIRedfishPlatformConfig.h
> @@ -0,0 +1,257 @@
> +/** @file
> + This file defines the EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL
> interface.
> +
> + (C) Copyright 2021-2022 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_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
> --
> 2.17.1
prev parent reply other threads:[~2023-04-19 9:44 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-19 9:09 [PATCH v3 1/5] RedfishPkg: introduce EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL Nickle Wang
2023-04-19 9:44 ` Chang, Abner [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=MN2PR12MB3966BCB78BA57F2F2C509BD4EA629@MN2PR12MB3966.namprd12.prod.outlook.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox