[edk2-devel] [edk2-staging][PATCH 1/3] RedfishClientPkg: RedfishFeatureUtilityLib
Chang, Abner via groups.io
abner.chang=amd.com at groups.io
Thu Mar 2 07:17:58 UTC 2023
[AMD Official Use Only - General]
Hi Nickle,
One comment to the new added function.
Abner
> -----Original Message-----
> From: Nickle Wang <nicklew at nvidia.com>
> Sent: Wednesday, March 1, 2023 10:09 PM
> To: devel at edk2.groups.io
> Cc: Chang, Abner <Abner.Chang at amd.com>; Igor Kulchytskyy
> <igork at ami.com>; Nick Ramirez <nramirez at nvidia.com>
> Subject: [edk2-staging][PATCH 1/3] RedfishClientPkg:
> RedfishFeatureUtilityLib
>
> Caution: This message originated from an External Source. Use proper
> caution when opening attachments, clicking links, or responding.
>
>
> - Add new interface GetPendingSettings() to check and see if
> "Redfish.Settings" is in the JSON data or not. If "Redfish.Settings"
> is found, return the URI and the context to Redfish pending settings.
> - Fix missing FreePool() and uncrustify issues.
>
> Signed-off-by: Nickle Wang <nicklew at nvidia.com>
> Cc: Abner Chang <abner.chang at amd.com>
> Cc: Igor Kulchytskyy <igork at ami.com>
> Cc: Nick Ramirez <nramirez at nvidia.com>
> ---
> .../Library/RedfishFeatureUtilityLib.h | 260 ++--
> .../RedfishFeatureUtilityLib.c | 1118 +++++++++--------
> 2 files changed, 770 insertions(+), 608 deletions(-)
>
> diff --git a/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h
> b/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h
> index 1325976d8c..857f8c6ce6 100644
> --- a/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h
> +++ b/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h
> @@ -2,6 +2,7 @@
> This file defines the Redfish Feature Utility Library interface.
>
> (C) Copyright 2021-2022 Hewlett Packard Enterprise Development LP<BR>
> + Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> @@ -18,16 +19,16 @@
> // Definition of REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG
> //
> typedef struct {
> - UINTN Index;
> - EFI_STRING ConfigureLang;
> + UINTN Index;
> + EFI_STRING ConfigureLang;
> } REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG;
>
> //
> // Definition of REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> //
> typedef struct {
> - UINTN Count;
> - REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG *List;
> + UINTN Count;
> + REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG *List;
> } REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST;
>
> /**
> @@ -44,9 +45,9 @@ typedef struct {
> **/
> EFI_STATUS
> GetResourceByUri (
> - IN REDFISH_SERVICE *Service,
> - IN EFI_STRING ResourceUri,
> - OUT REDFISH_RESPONSE *Response
> + IN REDFISH_SERVICE *Service,
> + IN EFI_STRING ResourceUri,
> + OUT REDFISH_RESPONSE *Response
> );
>
> /**
> @@ -66,9 +67,9 @@ GetResourceByUri (
> **/
> EFI_STATUS
> IsRedpathArray (
> - IN EFI_STRING ConfigureLang,
> - OUT EFI_STRING *ArraySignatureOpen,
> - OUT EFI_STRING *ArraySignatureClose
> + IN EFI_STRING ConfigureLang,
> + OUT EFI_STRING *ArraySignatureOpen,
> + OUT EFI_STRING *ArraySignatureClose
> );
>
> /**
> @@ -106,8 +107,8 @@ RedfishFeatureGetUnifiedArrayTypeConfigureLang (
> **/
> EFI_STATUS
> CopyConfiglanguageList (
> - IN REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *SourceConfigureLangList,
> - OUT REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *DestConfigureLangList
> + IN REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *SourceConfigureLangList,
> + OUT REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *DestConfigureLangList
> );
>
> /**
> @@ -121,7 +122,7 @@ CopyConfiglanguageList (
> **/
> UINTN
> GetNumberOfRedpathNodes (
> - IN EFI_STRING NodeString
> + IN EFI_STRING NodeString
> );
>
> /**
> @@ -138,9 +139,9 @@ GetNumberOfRedpathNodes (
> **/
> EFI_STRING
> GetRedpathNodeByIndex (
> - IN EFI_STRING NodeString,
> - IN UINTN Index,
> - OUT EFI_STRING *EndOfNodePtr OPTIONAL
> + IN EFI_STRING NodeString,
> + IN UINTN Index,
> + OUT EFI_STRING *EndOfNodePtr OPTIONAL
> );
>
> /**
> @@ -159,9 +160,9 @@ GetRedpathNodeByIndex (
> **/
> EFI_STATUS
> GetArrayIndexFromArrayTypeConfigureLang (
> - IN CHAR16 *ConfigureLang,
> - OUT CHAR16 **UnifiedConfigureLang,
> - OUT UINTN *Index
> + IN CHAR16 *ConfigureLang,
> + OUT CHAR16 **UnifiedConfigureLang,
> + OUT UINTN *Index
> );
>
> /**
> @@ -175,7 +176,7 @@ GetArrayIndexFromArrayTypeConfigureLang (
> **/
> UINTN
> ConfiglanguageGetInstanceIndex (
> - IN EFI_STRING ConfigureLang
> + IN EFI_STRING ConfigureLang
> );
>
> /**
> @@ -191,7 +192,7 @@ ConfiglanguageGetInstanceIndex (
> **/
> EFI_STATUS
> DestroyConfiglanguageList (
> - IN REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *ConfigureLangList
> + IN REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *ConfigureLangList
> );
>
> /**
> @@ -211,9 +212,9 @@ DestroyConfiglanguageList (
> **/
> EFI_STATUS
> SetResourceConfigLangMemberInstance (
> - IN EFI_STRING *DestConfigLang,
> - IN UINTN MaxtLengthConfigLang,
> - IN REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG *ConfigLangInstance
> + IN EFI_STRING *DestConfigLang,
> + IN UINTN MaxtLengthConfigLang,
> + IN REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG *ConfigLangInstance
> );
>
> /**
> @@ -229,8 +230,8 @@ SetResourceConfigLangMemberInstance (
> **/
> EFI_STATUS
> GetArraykeyFromUri (
> - IN CHAR8 *Uri,
> - OUT CHAR8 **ArrayKey
> + IN CHAR8 *Uri,
> + OUT CHAR8 **ArrayKey
> );
>
> /**
> @@ -248,10 +249,10 @@ GetArraykeyFromUri (
> **/
> EFI_STATUS
> ApplyFeatureSettingsStringType (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING ConfigureLang,
> - IN CHAR8 *FeatureValue
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING ConfigureLang,
> + IN CHAR8 *FeatureValue
> );
>
> /**
> @@ -269,10 +270,10 @@ ApplyFeatureSettingsStringType (
> **/
> EFI_STATUS
> ApplyFeatureSettingsNumericType (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING ConfigureLang,
> - IN INTN FeatureValue
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING ConfigureLang,
> + IN INTN FeatureValue
> );
>
> /**
> @@ -290,10 +291,10 @@ ApplyFeatureSettingsNumericType (
> **/
> EFI_STATUS
> ApplyFeatureSettingsBooleanType (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING ConfigureLang,
> - IN BOOLEAN FeatureValue
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING ConfigureLang,
> + IN BOOLEAN FeatureValue
> );
>
> /**
> @@ -312,11 +313,11 @@ ApplyFeatureSettingsBooleanType (
> **/
> EFI_STATUS
> ApplyFeatureSettingsVagueType (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING ConfigureLang,
> - IN RedfishCS_EmptyProp_KeyValue *VagueValuePtr,
> - IN UINT32 NumberOfVagueValues
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING ConfigureLang,
> + IN RedfishCS_EmptyProp_KeyValue *VagueValuePtr,
> + IN UINT32 NumberOfVagueValues
> );
>
> /**
> @@ -355,9 +356,9 @@ ApplyFeatureSettingsStringArrayType (
> **/
> EFI_STATUS
> ApplyFeatureSettingsNumericArrayType (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING ConfigureLang,
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING ConfigureLang,
> IN RedfishCS_int64_Array *ArrayHead
> );
>
> @@ -398,11 +399,11 @@ ApplyFeatureSettingsBooleanArrayType (
> **/
> EFI_STATUS
> CreatePayloadToPostResource (
> - IN REDFISH_SERVICE *Service,
> - IN REDFISH_PAYLOAD *TargetPayload,
> - IN CHAR8 *Json,
> - OUT EFI_STRING *Location,
> - OUT CHAR8 **Etag
> + IN REDFISH_SERVICE *Service,
> + IN REDFISH_PAYLOAD *TargetPayload,
> + IN CHAR8 *Json,
> + OUT EFI_STRING *Location,
> + OUT CHAR8 **Etag
> );
>
> /**
> @@ -420,10 +421,10 @@ CreatePayloadToPostResource (
> **/
> EFI_STATUS
> CreatePayloadToPatchResource (
> - IN REDFISH_SERVICE *Service,
> - IN REDFISH_PAYLOAD *TargetPayload,
> - IN CHAR8 *Json,
> - OUT CHAR8 **Etag
> + IN REDFISH_SERVICE *Service,
> + IN REDFISH_PAYLOAD *TargetPayload,
> + IN CHAR8 *Json,
> + OUT CHAR8 **Etag
> );
>
> /**
> @@ -456,8 +457,8 @@ RedfisSetRedfishUri (
> **/
> EFI_STRING
> GetPropertyFromConfigureLang (
> - IN EFI_STRING ResourceUri,
> - IN EFI_STRING ConfigureLang
> + IN EFI_STRING ResourceUri,
> + IN EFI_STRING ConfigureLang
> );
>
> /**
> @@ -475,10 +476,10 @@ GetPropertyFromConfigureLang (
> **/
> CHAR8 *
> GetPropertyStringValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang
> );
>
> /**
> @@ -496,10 +497,10 @@ GetPropertyStringValue (
> **/
> INT64 *
> GetPropertyNumericValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang
> );
>
> /**
> @@ -516,10 +517,10 @@ GetPropertyNumericValue (
> **/
> BOOLEAN *
> GetPropertyBooleanValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang
> );
>
> /**
> @@ -535,8 +536,8 @@ GetPropertyBooleanValue (
> **/
> BOOLEAN
> PropertyChecker (
> - IN VOID *PropertyBuffer,
> - IN BOOLEAN ProvisionMode
> + IN VOID *PropertyBuffer,
> + IN BOOLEAN ProvisionMode
> );
>
> /**
> @@ -583,7 +584,7 @@ GetEtagWithUri (
> **/
> EFI_STRING
> GetOdataId (
> - IN REDFISH_PAYLOAD *Payload
> + IN REDFISH_PAYLOAD *Payload
> );
>
> /**
> @@ -599,8 +600,8 @@ GetOdataId (
> **/
> EFI_STRING
> GetConfigureLang (
> - IN CHAR8 *Uri,
> - IN CHAR8 *PropertyName OPTIONAL
> + IN CHAR8 *Uri,
> + IN CHAR8 *PropertyName OPTIONAL
> );
>
> /**
> @@ -615,7 +616,7 @@ GetConfigureLang (
> **/
> EFI_STRING
> RedfishGetUri (
> - IN EFI_STRING ConfigLang
> + IN EFI_STRING ConfigLang
> );
>
> /**
> @@ -630,7 +631,7 @@ RedfishGetUri (
> **/
> EFI_STRING
> RedfishGetConfigLanguage (
> - IN EFI_STRING Uri
> + IN EFI_STRING Uri
> );
>
> /**
> @@ -645,7 +646,7 @@ RedfishGetConfigLanguage (
> **/
> CHAR8 *
> StrUnicodeToAscii (
> - IN EFI_STRING UnicodeStr
> + IN EFI_STRING UnicodeStr
> );
>
> /**
> @@ -677,9 +678,9 @@ StrAsciiToUnicode (
> **/
> BOOLEAN
> CheckEtag (
> - IN EFI_STRING Uri,
> - IN CHAR8 *EtagInHeader,
> - IN CHAR8 *EtagInJson
> + IN EFI_STRING Uri,
> + IN CHAR8 *EtagInHeader,
> + IN CHAR8 *EtagInJson
> );
>
> /**
> @@ -697,11 +698,11 @@ CheckEtag (
> **/
> CHAR8 **
> GetPropertyStringArrayValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang,
> - OUT UINTN *ArraySize
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang,
> + OUT UINTN *ArraySize
> );
>
> /**
> @@ -719,11 +720,11 @@ GetPropertyStringArrayValue (
> **/
> INT64 *
> GetPropertyNumericArrayValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang,
> - OUT UINTN *ArraySize
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang,
> + OUT UINTN *ArraySize
> );
>
> /**
> @@ -741,11 +742,11 @@ GetPropertyNumericArrayValue (
> **/
> BOOLEAN *
> GetPropertyBooleanArrayValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang,
> - OUT UINTN *ArraySize
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang,
> + OUT UINTN *ArraySize
> );
>
> /**
> @@ -764,11 +765,11 @@ GetPropertyBooleanArrayValue (
> **/
> RedfishCS_EmptyProp_KeyValue *
> GetPropertyVagueValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang,
> - OUT UINT32 *NumberOfValues
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang,
> + OUT UINT32 *NumberOfValues
> );
>
> /**
> @@ -780,7 +781,7 @@ GetPropertyVagueValue (
> **/
> VOID
> FreeEmptyPropKeyValueList (
> - RedfishCS_EmptyProp_KeyValue *EmptyPropKeyValueListHead
> + RedfishCS_EmptyProp_KeyValue *EmptyPropKeyValueListHead
> );
>
> /**
> @@ -798,7 +799,7 @@ BOOLEAN
> MatchPropertyWithJsonContext (
> IN EFI_STRING Property,
> IN CHAR8 *Json
> -);
> + );
>
> /**
>
> @@ -814,7 +815,7 @@ MatchPropertyWithJsonContext (
> **/
> EFI_STATUS
> AddRedfishCharArray (
> - IN OUT RedfishCS_char_Array **Head,
> + IN OUT RedfishCS_char_Array **Head,
> IN CHAR8 **StringArray,
> IN UINTN ArraySize
> );
> @@ -833,9 +834,9 @@ AddRedfishCharArray (
> **/
> EFI_STATUS
> AddRedfishNumericArray (
> - IN OUT RedfishCS_int64_Array **Head,
> - IN INT64 *NumericArray,
> - IN UINTN ArraySize
> + IN OUT RedfishCS_int64_Array **Head,
> + IN INT64 *NumericArray,
> + IN UINTN ArraySize
> );
>
> /**
> @@ -856,6 +857,7 @@ AddRedfishBooleanArray (
> IN BOOLEAN *BooleanArray,
> IN UINTN ArraySize
> );
> +
> /**
>
> Check and see if value in Redfish string array are all the same as the one
> @@ -872,9 +874,9 @@ AddRedfishBooleanArray (
> **/
> BOOLEAN
> CompareRedfishStringArrayValues (
> - IN RedfishCS_char_Array *Head,
> - IN CHAR8 **StringArray,
> - IN UINTN ArraySize
> + IN RedfishCS_char_Array *Head,
> + IN CHAR8 **StringArray,
> + IN UINTN ArraySize
> );
>
> /**
> @@ -893,9 +895,9 @@ CompareRedfishStringArrayValues (
> **/
> BOOLEAN
> CompareRedfishNumericArrayValues (
> - IN RedfishCS_int64_Array *Head,
> - IN INT64 *NumericArray,
> - IN UINTN ArraySize
> + IN RedfishCS_int64_Array *Head,
> + IN INT64 *NumericArray,
> + IN UINTN ArraySize
> );
>
> /**
> @@ -935,10 +937,10 @@ CompareRedfishBooleanArrayValues (
> **/
> BOOLEAN
> CompareRedfishPropertyVagueValues (
> - IN RedfishCS_EmptyProp_KeyValue *RedfishVagueKeyValuePtr,
> - IN UINT32 RedfishVagueKeyValueNumber,
> - IN RedfishCS_EmptyProp_KeyValue *ConfigVagueKeyValuePtr,
> - IN UINT32 ConfigVagueKeyValueNumber
> + IN RedfishCS_EmptyProp_KeyValue *RedfishVagueKeyValuePtr,
> + IN UINT32 RedfishVagueKeyValueNumber,
> + IN RedfishCS_EmptyProp_KeyValue *ConfigVagueKeyValuePtr,
> + IN UINT32 ConfigVagueKeyValueNumber
> );
>
> /**
> @@ -955,9 +957,31 @@ CompareRedfishPropertyVagueValues (
> **/
> EFI_STATUS
> GetEtagAndLocation (
> - IN REDFISH_RESPONSE *Response,
> - OUT CHAR8 **Etag, OPTIONAL
> + IN REDFISH_RESPONSE *Response,
> + OUT CHAR8 **Etag, OPTIONAL
> OUT EFI_STRING *Location OPTIONAL
> );
>
> +/**
> +
> + Check and see if "@Redfish.Settings" exist in given Payload. If found,
> return the
> + payload and URI to pending settings. Caller has to release "SettingPayload"
> and
> + "SettingUri".
> +
> + @param[in] Payload Payload that may contain "@Redfish.Settings"
> + @param[out] SettingPayload Payload keeps pending settings.
> + @param[out] SettingUri URI to pending settings.
> +
> + @retval EFI_SUCCESS Pending settings is found and returned.
> + @retval Others Error happens
> +
> +**/
> +EFI_STATUS
> +GetPendingSettings (
> + IN REDFISH_SERVICE RedfishService,
> + IN REDFISH_PAYLOAD Payload,
> + OUT REDFISH_RESPONSE *SettingResponse,
> + OUT EFI_STRING *SettingUri
> + );
> +
> #endif
> diff --git
> a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib
> .c
> b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib
> .c
> index bfd6fff2a7..d95d399462 100644
> ---
> a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib
> .c
> +++
> b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib
> .c
> @@ -2,7 +2,7 @@
> Redfish feature utility library implementation
>
> (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP<BR>
> - Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
> + Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> @@ -10,7 +10,7 @@
>
> #include "RedfishFeatureUtilityInternal.h"
>
> -EDKII_REDFISH_ETAG_PROTOCOL *mEtagProtocol = NULL;
> +EDKII_REDFISH_ETAG_PROTOCOL *mEtagProtocol = NULL;
> EDKII_REDFISH_CONFIG_LANG_MAP_PROTOCOL
> *mConfigLangMapProtocol = NULL;
>
> /**
> @@ -33,7 +33,7 @@ RedfishLocateProtocol (
> {
> EFI_STATUS Status;
>
> - if (ProtocolInstance == NULL || ProtocolGuid == NULL) {
> + if ((ProtocolInstance == NULL) || (ProtocolGuid == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
>
> @@ -62,14 +62,14 @@ RedfishLocateProtocol (
> **/
> EFI_STATUS
> GetArraykeyFromUri (
> - IN CHAR8 *Uri,
> - OUT CHAR8 **ArrayKey
> + IN CHAR8 *Uri,
> + OUT CHAR8 **ArrayKey
> )
> {
> - CHAR8 *LeftBracket;
> - UINTN Index;
> + CHAR8 *LeftBracket;
> + UINTN Index;
>
> - if (IS_EMPTY_STRING (Uri) || ArrayKey == NULL) {
> + if (IS_EMPTY_STRING (Uri) || (ArrayKey == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
>
> @@ -207,19 +207,19 @@ GetEtagWithUri (
> **/
> CHAR8 *
> StrUnicodeToAscii (
> - IN EFI_STRING UnicodeStr
> + IN EFI_STRING UnicodeStr
> )
> {
> - CHAR8 *AsciiStr;
> - UINTN AsciiStrSize;
> - EFI_STATUS Status;
> + CHAR8 *AsciiStr;
> + UINTN AsciiStrSize;
> + EFI_STATUS Status;
>
> if (IS_EMPTY_STRING (UnicodeStr)) {
> return NULL;
> }
>
> AsciiStrSize = StrLen (UnicodeStr) + 1;
> - AsciiStr = AllocatePool (AsciiStrSize);
> + AsciiStr = AllocatePool (AsciiStrSize);
> if (AsciiStr == NULL) {
> return NULL;
> }
> @@ -258,7 +258,7 @@ StrAsciiToUnicode (
> }
>
> UnicodeStrSize = (AsciiStrLen (AsciiStr) + 1) * sizeof (CHAR16);
> - UnicodeStr = AllocatePool (UnicodeStrSize);
> + UnicodeStr = AllocatePool (UnicodeStrSize);
> if (UnicodeStr == NULL) {
> return NULL;
> }
> @@ -288,16 +288,16 @@ StrAsciiToUnicode (
> **/
> EFI_STATUS
> ApplyFeatureSettingsStringType (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING ConfigureLang,
> - IN CHAR8 *FeatureValue
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING ConfigureLang,
> + IN CHAR8 *FeatureValue
> )
> {
> - EFI_STATUS Status;
> - EDKII_REDFISH_VALUE RedfishValue;
> + EFI_STATUS Status;
> + EDKII_REDFISH_VALUE RedfishValue;
>
> - if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || FeatureValue == NULL) {
> + if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || (FeatureValue == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
>
> @@ -308,9 +308,8 @@ ApplyFeatureSettingsStringType (
> if (EFI_ERROR (Status)) {
> DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __FUNCTION__,
> Schema, Version, ConfigureLang, Status));
> } else {
> -
> if (RedfishValue.Type != REDFISH_VALUE_TYPE_STRING) {
> - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string type\n",
> __FUNCTION__, Schema, Version, ConfigureLang));
> + DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string type\n",
> __FUNCTION__, Schema, Version, ConfigureLang));
> return EFI_DEVICE_ERROR;
> }
>
> @@ -350,14 +349,14 @@ ApplyFeatureSettingsStringType (
> **/
> EFI_STATUS
> ApplyFeatureSettingsNumericType (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING ConfigureLang,
> - IN INTN FeatureValue
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING ConfigureLang,
> + IN INTN FeatureValue
> )
> {
> - EFI_STATUS Status;
> - EDKII_REDFISH_VALUE RedfishValue;
> + EFI_STATUS Status;
> + EDKII_REDFISH_VALUE RedfishValue;
>
> if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang)) {
> return EFI_INVALID_PARAMETER;
> @@ -368,11 +367,10 @@ ApplyFeatureSettingsNumericType (
> //
> Status = RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang,
> &RedfishValue);
> if (EFI_ERROR (Status)) {
> - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __FUNCTION__,
> Schema, Version, ConfigureLang, Status));
> + DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __FUNCTION__,
> Schema, Version, ConfigureLang, Status));
> } else {
> -
> if (RedfishValue.Type != REDFISH_VALUE_TYPE_INTEGER) {
> - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not numeric type\n",
> __FUNCTION__, Schema, Version, ConfigureLang));
> + DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not numeric type\n",
> __FUNCTION__, Schema, Version, ConfigureLang));
> return EFI_DEVICE_ERROR;
> }
>
> @@ -411,14 +409,14 @@ ApplyFeatureSettingsNumericType (
> **/
> EFI_STATUS
> ApplyFeatureSettingsBooleanType (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING ConfigureLang,
> - IN BOOLEAN FeatureValue
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING ConfigureLang,
> + IN BOOLEAN FeatureValue
> )
> {
> - EFI_STATUS Status;
> - EDKII_REDFISH_VALUE RedfishValue;
> + EFI_STATUS Status;
> + EDKII_REDFISH_VALUE RedfishValue;
>
> if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang)) {
> return EFI_INVALID_PARAMETER;
> @@ -429,11 +427,10 @@ ApplyFeatureSettingsBooleanType (
> //
> Status = RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang,
> &RedfishValue);
> if (EFI_ERROR (Status)) {
> - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __FUNCTION__,
> Schema, Version, ConfigureLang, Status));
> + DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __FUNCTION__,
> Schema, Version, ConfigureLang, Status));
> } else {
> -
> if (RedfishValue.Type != REDFISH_VALUE_TYPE_BOOLEAN) {
> - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not boolean type\n",
> __FUNCTION__, Schema, Version, ConfigureLang));
> + DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not boolean type\n",
> __FUNCTION__, Schema, Version, ConfigureLang));
> return EFI_DEVICE_ERROR;
> }
>
> @@ -473,32 +470,35 @@ ApplyFeatureSettingsBooleanType (
> **/
> EFI_STATUS
> ApplyFeatureSettingsVagueType (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING ConfigureLang,
> - IN RedfishCS_EmptyProp_KeyValue *VagueValuePtr,
> - IN UINT32 NumberOfVagueValues
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING ConfigureLang,
> + IN RedfishCS_EmptyProp_KeyValue *VagueValuePtr,
> + IN UINT32 NumberOfVagueValues
> )
> {
> - EFI_STATUS Status;
> - UINTN StrSize;
> - CHAR8 *ConfigureLangAscii;
> - CHAR8 *ConfigureLangKeyAscii;
> - EFI_STRING ConfigureKeyLang;
> - EDKII_REDFISH_VALUE RedfishValue;
> - EDKII_REDFISH_VALUE_TYPES PropertyDatatype;
> - RedfishCS_EmptyProp_KeyValue *CurrentVagueValuePtr;
> -
> - if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || VagueValuePtr == NULL ||
> NumberOfVagueValues == 0) {
> + EFI_STATUS Status;
> + UINTN StrSize;
> + CHAR8 *ConfigureLangAscii;
> + CHAR8 *ConfigureLangKeyAscii;
> + EFI_STRING ConfigureKeyLang;
> + EDKII_REDFISH_VALUE RedfishValue;
> + EDKII_REDFISH_VALUE_TYPES PropertyDatatype;
> + RedfishCS_EmptyProp_KeyValue *CurrentVagueValuePtr;
> +
> + if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || (VagueValuePtr == NULL) ||
> (NumberOfVagueValues == 0)) {
> return EFI_INVALID_PARAMETER;
> }
>
> + DEBUG ((REDFISH_DEBUG_TRACE, "%a: schema: %a %a config lang: %s
> NumberOfVagueValues: %d\n", __FUNCTION__, Schema, Version,
> ConfigureLang, NumberOfVagueValues));
> +
> ConfigureLangAscii = AllocatePool (StrLen (ConfigureLang) + 1);
> if (ConfigureLangAscii == NULL) {
> Status = EFI_OUT_OF_RESOURCES;
> DEBUG ((DEBUG_ERROR, "%a, Allocate memory for generate
> ConfigureLang of vague key of %a.%a %s failed: %r\n", __FUNCTION__,
> Schema, Version, ConfigureLang, Status));
> return Status;
> }
> +
> Status = UnicodeStrToAsciiStrS (ConfigureLang, ConfigureLangAscii, StrLen
> (ConfigureLang) + 1);
> if (EFI_ERROR (Status)) {
> DEBUG ((DEBUG_ERROR, "%a, Convert the configureLang of vague key of
> %a.%a %s failed: %r\n", __FUNCTION__, Schema, Version, ConfigureLang,
> Status));
> @@ -510,18 +510,19 @@ ApplyFeatureSettingsVagueType (
> //
> // Generate ConfigureLang with the key name
> //
> - //ConfigureKeyLang = GetConfigureLang (ConfigureLangAscii,
> CurrentVagueValuePtr->KeyNamePtr);
> - StrSize = AsciiStrLen (ConfigureLangAscii) + AsciiStrLen
> (CurrentVagueValuePtr->KeyNamePtr) + 2;
> + // ConfigureKeyLang = GetConfigureLang (ConfigureLangAscii,
> CurrentVagueValuePtr->KeyNamePtr);
> + StrSize = AsciiStrLen (ConfigureLangAscii) + AsciiStrLen
> (CurrentVagueValuePtr->KeyNamePtr) + 2;
> ConfigureLangKeyAscii = AllocateZeroPool (StrSize);
> - ConfigureKeyLang = AllocateZeroPool (StrSize * sizeof (CHAR16));
> - if (ConfigureLangKeyAscii == NULL || ConfigureKeyLang == NULL) {
> - DEBUG ((DEBUG_ERROR, "%a, Generate ConfigureLang of vague key of
> %a.%a %s %a failed!\n", __FUNCTION__, Schema, Version, ConfigureLang,
> CurrentVagueValuePtr->KeyNamePtr));
> - goto ErrorContinue;
> + ConfigureKeyLang = AllocateZeroPool (StrSize * sizeof (CHAR16));
> + if ((ConfigureLangKeyAscii == NULL) || (ConfigureKeyLang == NULL)) {
> + DEBUG ((DEBUG_ERROR, "%a, Generate ConfigureLang of vague key of
> %a.%a %s %a failed!\n", __FUNCTION__, Schema, Version, ConfigureLang,
> CurrentVagueValuePtr->KeyNamePtr));
> + goto ErrorContinue;
> }
> - AsciiStrCatS(ConfigureLangKeyAscii, StrSize, ConfigureLangAscii);
> - AsciiStrCatS(ConfigureLangKeyAscii, StrSize, "/");
> - AsciiStrCatS(ConfigureLangKeyAscii, StrSize, CurrentVagueValuePtr-
> >KeyNamePtr);
> - AsciiStrToUnicodeStrS(ConfigureLangKeyAscii, ConfigureKeyLang, StrSize);
> +
> + AsciiStrCatS (ConfigureLangKeyAscii, StrSize, ConfigureLangAscii);
> + AsciiStrCatS (ConfigureLangKeyAscii, StrSize, "/");
> + AsciiStrCatS (ConfigureLangKeyAscii, StrSize, CurrentVagueValuePtr-
> >KeyNamePtr);
> + AsciiStrToUnicodeStrS (ConfigureLangKeyAscii, ConfigureKeyLang,
> StrSize);
> FreePool (ConfigureLangKeyAscii);
> ConfigureLangKeyAscii = NULL;
> //
> @@ -534,7 +535,7 @@ ApplyFeatureSettingsVagueType (
> } else if (CurrentVagueValuePtr->Value->DataType ==
> RedfishCS_Vague_DataType_Int64) {
> PropertyDatatype = REDFISH_VALUE_TYPE_INTEGER;
> } else {
> - DEBUG((DEBUG_ERROR, "%a, %a.%a %s Unsupported Redfish property
> data type\n", __FUNCTION__, Schema, Version, ConfigureLang));
> + DEBUG ((DEBUG_ERROR, "%a, %a.%a %s Unsupported Redfish property
> data type\n", __FUNCTION__, Schema, Version, ConfigureLang));
> goto ErrorContinue;
> }
>
> @@ -546,9 +547,10 @@ ApplyFeatureSettingsVagueType (
> DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __FUNCTION__,
> Schema, Version, ConfigureKeyLang, Status));
> } else {
> if (RedfishValue.Type != PropertyDatatype) {
> - DEBUG((DEBUG_ERROR, "%a, %a.%a %s mismatched data type\n",
> __FUNCTION__, Schema, Version, ConfigureKeyLang));
> + DEBUG ((DEBUG_ERROR, "%a, %a.%a %s mismatched data type\n",
> __FUNCTION__, Schema, Version, ConfigureKeyLang));
> goto ErrorContinue;
> }
> +
> if (PropertyDatatype == REDFISH_VALUE_TYPE_STRING) {
> //
> // This is a string property.
> @@ -560,7 +562,7 @@ ApplyFeatureSettingsVagueType (
> DEBUG ((DEBUG_INFO, "%a, %a.%a apply %s from %a to %a\n",
> __FUNCTION__, Schema, Version, ConfigureKeyLang,
> RedfishValue.Value.Buffer, CurrentVagueValuePtr->Value-
> >DataValue.CharPtr));
> FreePool (RedfishValue.Value.Buffer);
> RedfishValue.Value.Buffer = CurrentVagueValuePtr->Value-
> >DataValue.CharPtr;
> - Status = RedfishPlatformConfigSetValue (Schema, Version,
> ConfigureKeyLang, RedfishValue);
> + Status = RedfishPlatformConfigSetValue (Schema, Version,
> ConfigureKeyLang, RedfishValue);
> if (EFI_ERROR (Status)) {
> DEBUG ((DEBUG_ERROR, "%a, apply %a to %a failed: %r\n",
> __FUNCTION__, ConfigureKeyLang, CurrentVagueValuePtr->Value-
> >DataValue.CharPtr, Status));
> }
> @@ -575,16 +577,19 @@ ApplyFeatureSettingsVagueType (
> //
> // Apply settings from redfish
> //
> - DEBUG ((DEBUG_INFO, "%a, %a.%a apply %s from %a to %a\n",
> - __FUNCTION__,
> - Schema,
> - Version,
> - ConfigureKeyLang,
> - (RedfishValue.Value.Boolean ? "True" : "False"),
> - (*CurrentVagueValuePtr->Value->DataValue.BoolPtr ? "True" :
> "False")));
> + DEBUG ((
> + DEBUG_INFO,
> + "%a, %a.%a apply %s from %a to %a\n",
> + __FUNCTION__,
> + Schema,
> + Version,
> + ConfigureKeyLang,
> + (RedfishValue.Value.Boolean ? "True" : "False"),
> + (*CurrentVagueValuePtr->Value->DataValue.BoolPtr ? "True" :
> "False")
> + ));
>
> RedfishValue.Value.Boolean = (BOOLEAN)*CurrentVagueValuePtr-
> >Value->DataValue.BoolPtr;
> - Status = RedfishPlatformConfigSetValue (Schema, Version,
> ConfigureKeyLang, RedfishValue);
> + Status = RedfishPlatformConfigSetValue (Schema, Version,
> ConfigureKeyLang, RedfishValue);
> if (EFI_ERROR (Status)) {
> DEBUG ((DEBUG_ERROR, "%a, apply %s to %a failed: %r\n",
> __FUNCTION__, ConfigureKeyLang, (*CurrentVagueValuePtr->Value-
> >DataValue.BoolPtr ? "True" : "False"), Status));
> }
> @@ -602,7 +607,7 @@ ApplyFeatureSettingsVagueType (
> DEBUG ((DEBUG_INFO, "%a, %a.%a apply %s from 0x%x to 0x%x\n",
> __FUNCTION__, Schema, Version, ConfigureKeyLang,
> RedfishValue.Value.Integer, *CurrentVagueValuePtr->Value-
> >DataValue.Int64Ptr));
>
> RedfishValue.Value.Integer = (INT64)*CurrentVagueValuePtr->Value-
> >DataValue.Int64Ptr;
> - Status = RedfishPlatformConfigSetValue (Schema, Version,
> ConfigureKeyLang, RedfishValue);
> + Status = RedfishPlatformConfigSetValue (Schema, Version,
> ConfigureKeyLang, RedfishValue);
> if (EFI_ERROR (Status)) {
> DEBUG ((DEBUG_ERROR, "%a, apply %s to 0x%x failed: %r\n",
> __FUNCTION__, ConfigureKeyLang, *CurrentVagueValuePtr->Value-
> >DataValue.Int64Ptr, Status));
> }
> @@ -610,7 +615,7 @@ ApplyFeatureSettingsVagueType (
> DEBUG ((DEBUG_INFO, "%a, %a.%a %s value is: 0x%x\n",
> __FUNCTION__, Schema, Version, ConfigureKeyLang,
> RedfishValue.Value.Integer, Status));
> }
> } else {
> - DEBUG((DEBUG_ERROR, "%a, %a.%a %s Unsupported Redfish property
> data type\n", __FUNCTION__, Schema, Version, ConfigureLang));
> + DEBUG ((DEBUG_ERROR, "%a, %a.%a %s Unsupported Redfish
> property data type\n", __FUNCTION__, Schema, Version, ConfigureLang));
> goto ErrorContinue;
> }
> }
> @@ -620,22 +625,27 @@ ErrorContinue:;
> FreePool (ConfigureLangKeyAscii);
> ConfigureLangKeyAscii = NULL;
> }
> +
> if (ConfigureKeyLang != NULL) {
> FreePool (ConfigureKeyLang);
> ConfigureKeyLang = NULL;
> }
> +
> CurrentVagueValuePtr = CurrentVagueValuePtr->NextKeyValuePtr;
> - };
> + }
>
> if (ConfigureLangAscii != NULL) {
> FreePool (ConfigureLangAscii);
> }
> +
> if (ConfigureLangKeyAscii != NULL) {
> FreePool (ConfigureLangKeyAscii);
> }
> +
> if (ConfigureKeyLang != NULL) {
> FreePool (ConfigureKeyLang);
> }
> +
> return EFI_SUCCESS;
> }
>
> @@ -648,16 +658,16 @@ ErrorContinue:;
> **/
> VOID
> FreeArrayTypeRedfishValue (
> - EDKII_REDFISH_VALUE *RedfishValue
> + EDKII_REDFISH_VALUE *RedfishValue
> )
> {
> - UINTN Index;
> + UINTN Index;
>
> if (RedfishValue == NULL) {
> return;
> }
>
> - if (RedfishValue->Type != REDFISH_VALUE_TYPE_INTEGER_ARRAY &&
> RedfishValue->Type != REDFISH_VALUE_TYPE_STRING_ARRAY) {
> + if ((RedfishValue->Type != REDFISH_VALUE_TYPE_INTEGER_ARRAY) &&
> (RedfishValue->Type != REDFISH_VALUE_TYPE_STRING_ARRAY)) {
> return;
> }
>
> @@ -666,6 +676,7 @@ FreeArrayTypeRedfishValue (
> for (Index = 0; Index < RedfishValue->ArrayCount; Index++) {
> FreePool (RedfishValue->Value.StringArray[Index]);
> }
> +
> FreePool (RedfishValue->Value.StringArray);
> RedfishValue->Value.StringArray = NULL;
> break;
> @@ -687,7 +698,6 @@ FreeArrayTypeRedfishValue (
> RedfishValue->ArrayCount = 0;
> }
>
> -
> /**
>
> Apply property value to UEFI HII database in string array type.
> @@ -714,7 +724,7 @@ ApplyFeatureSettingsStringArrayType (
> UINTN Index;
> RedfishCS_char_Array *Buffer;
>
> - if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || ArrayHead == NULL) {
> + if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || (ArrayHead == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
>
> @@ -725,9 +735,8 @@ ApplyFeatureSettingsStringArrayType (
> if (EFI_ERROR (Status)) {
> DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __FUNCTION__,
> Schema, Version, ConfigureLang, Status));
> } else {
> -
> if (RedfishValue.Type != REDFISH_VALUE_TYPE_STRING_ARRAY) {
> - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string array type\n",
> __FUNCTION__, Schema, Version, ConfigureLang));
> + DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string array type\n",
> __FUNCTION__, Schema, Version, ConfigureLang));
> return EFI_DEVICE_ERROR;
> }
>
> @@ -745,10 +754,10 @@ ApplyFeatureSettingsStringArrayType (
> // Convert array from RedfishCS_char_Array to EDKII_REDFISH_VALUE
> //
> RedfishValue.ArrayCount = 0;
> - Buffer = ArrayHead;
> + Buffer = ArrayHead;
> while (Buffer != NULL) {
> RedfishValue.ArrayCount += 1;
> - Buffer = Buffer->Next;
> + Buffer = Buffer->Next;
> }
>
> //
> @@ -761,13 +770,14 @@ ApplyFeatureSettingsStringArrayType (
> }
>
> Buffer = ArrayHead;
> - Index = 0;
> + Index = 0;
> while (Buffer != NULL) {
> RedfishValue.Value.StringArray[Index] = AllocateCopyPool (AsciiStrSize
> (Buffer->ArrayValue), Buffer->ArrayValue);
> if (RedfishValue.Value.StringArray[Index] == NULL) {
> ASSERT (FALSE);
> return EFI_OUT_OF_RESOURCES;
> }
> +
> Buffer = Buffer->Next;
> Index++;
> }
> @@ -801,18 +811,18 @@ ApplyFeatureSettingsStringArrayType (
> **/
> EFI_STATUS
> ApplyFeatureSettingsNumericArrayType (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING ConfigureLang,
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING ConfigureLang,
> IN RedfishCS_int64_Array *ArrayHead
> )
> {
> - EFI_STATUS Status;
> - EDKII_REDFISH_VALUE RedfishValue;
> - UINTN Index;
> - RedfishCS_int64_Array *Buffer;
> + EFI_STATUS Status;
> + EDKII_REDFISH_VALUE RedfishValue;
> + UINTN Index;
> + RedfishCS_int64_Array *Buffer;
>
> - if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || ArrayHead == NULL) {
> + if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || (ArrayHead == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
>
> @@ -823,7 +833,6 @@ ApplyFeatureSettingsNumericArrayType (
> if (EFI_ERROR (Status)) {
> DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __FUNCTION__,
> Schema, Version, ConfigureLang, Status));
> } else {
> -
> if (RedfishValue.Type != REDFISH_VALUE_TYPE_INTEGER_ARRAY) {
> DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string array type\n",
> __FUNCTION__, Schema, Version, ConfigureLang));
> return EFI_DEVICE_ERROR;
> @@ -843,10 +852,10 @@ ApplyFeatureSettingsNumericArrayType (
> // Convert array from RedfishCS_int64_Array to EDKII_REDFISH_VALUE
> //
> RedfishValue.ArrayCount = 0;
> - Buffer = ArrayHead;
> + Buffer = ArrayHead;
> while (Buffer != NULL) {
> RedfishValue.ArrayCount += 1;
> - Buffer = Buffer->Next;
> + Buffer = Buffer->Next;
> }
>
> //
> @@ -859,10 +868,10 @@ ApplyFeatureSettingsNumericArrayType (
> }
>
> Buffer = ArrayHead;
> - Index = 0;
> + Index = 0;
> while (Buffer != NULL) {
> RedfishValue.Value.IntegerArray[Index] = (INT64)*Buffer->ArrayValue;
> - Buffer = Buffer->Next;
> + Buffer = Buffer->Next;
> Index++;
> }
>
> @@ -904,9 +913,9 @@ ApplyFeatureSettingsBooleanArrayType (
> EFI_STATUS Status;
> EDKII_REDFISH_VALUE RedfishValue;
> UINTN Index;
> - RedfishCS_bool_Array *Buffer;
> + RedfishCS_bool_Array *Buffer;
>
> - if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || ArrayHead == NULL) {
> + if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || (ArrayHead == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
>
> @@ -917,7 +926,6 @@ ApplyFeatureSettingsBooleanArrayType (
> if (EFI_ERROR (Status)) {
> DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __FUNCTION__,
> Schema, Version, ConfigureLang, Status));
> } else {
> -
> if (RedfishValue.Type != REDFISH_VALUE_TYPE_BOOLEAN_ARRAY) {
> DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string array type\n",
> __FUNCTION__, Schema, Version, ConfigureLang));
> return EFI_DEVICE_ERROR;
> @@ -937,10 +945,10 @@ ApplyFeatureSettingsBooleanArrayType (
> // Convert array from RedfishCS_int64_Array to EDKII_REDFISH_VALUE
> //
> RedfishValue.ArrayCount = 0;
> - Buffer = ArrayHead;
> + Buffer = ArrayHead;
> while (Buffer != NULL) {
> RedfishValue.ArrayCount += 1;
> - Buffer = Buffer->Next;
> + Buffer = Buffer->Next;
> }
>
> //
> @@ -953,10 +961,10 @@ ApplyFeatureSettingsBooleanArrayType (
> }
>
> Buffer = ArrayHead;
> - Index = 0;
> + Index = 0;
> while (Buffer != NULL) {
> RedfishValue.Value.BooleanArray[Index] = (BOOLEAN)*Buffer-
> >ArrayValue;
> - Buffer = Buffer->Next;
> + Buffer = Buffer->Next;
> Index++;
> }
>
> @@ -988,15 +996,15 @@ ApplyFeatureSettingsBooleanArrayType (
> **/
> EFI_STATUS
> GetResourceByUri (
> - IN REDFISH_SERVICE *Service,
> - IN EFI_STRING ResourceUri,
> - OUT REDFISH_RESPONSE *Response
> + IN REDFISH_SERVICE *Service,
> + IN EFI_STRING ResourceUri,
> + OUT REDFISH_RESPONSE *Response
> )
> {
> EFI_STATUS Status;
> CHAR8 *AsciiResourceUri;
>
> - if (Service == NULL || Response == NULL || IS_EMPTY_STRING
> (ResourceUri)) {
> + if ((Service == NULL) || (Response == NULL) || IS_EMPTY_STRING
> (ResourceUri)) {
> return EFI_INVALID_PARAMETER;
> }
>
> @@ -1051,9 +1059,9 @@ GetResourceByUri (
> **/
> EFI_STATUS
> IsRedpathArray (
> - IN EFI_STRING ConfigureLang,
> - OUT EFI_STRING *ArraySignatureOpen OPTIONAL,
> - OUT EFI_STRING *ArraySignatureClose OPTIONAL
> + IN EFI_STRING ConfigureLang,
> + OUT EFI_STRING *ArraySignatureOpen OPTIONAL,
> + OUT EFI_STRING *ArraySignatureClose OPTIONAL
> )
> {
> CHAR16 *IndexString;
> @@ -1061,9 +1069,11 @@ IsRedpathArray (
> if (ConfigureLang == NULL) {
> return EFI_INVALID_PARAMETER;
> }
> +
> if (ArraySignatureOpen != NULL) {
> *ArraySignatureOpen = NULL;
> }
> +
> if (ArraySignatureClose != NULL) {
> *ArraySignatureClose = NULL;
> }
> @@ -1076,6 +1086,7 @@ IsRedpathArray (
> if (ArraySignatureOpen != NULL) {
> *ArraySignatureOpen = IndexString;
> }
> +
> //
> // Skip "{"
> //
> @@ -1087,11 +1098,14 @@ IsRedpathArray (
> if (IndexString == NULL) {
> return EFI_INVALID_PARAMETER;
> }
> +
> if (ArraySignatureClose != NULL) {
> *ArraySignatureClose = IndexString;
> }
> +
> return EFI_SUCCESS;
> }
> +
> return EFI_NOT_FOUND;
> }
>
> @@ -1106,23 +1120,25 @@ IsRedpathArray (
> **/
> UINTN
> GetNumberOfRedpathNodes (
> - IN EFI_STRING NodeString
> + IN EFI_STRING NodeString
> )
> {
> - UINTN Index;
> - UINTN NumberNodes;
> - UINTN StringLen;
> + UINTN Index;
> + UINTN NumberNodes;
> + UINTN StringLen;
>
> NumberNodes = 0;
> - StringLen = StrLen (NodeString);
> - Index = 1; // ConfigLang always starts with '/'.
> + StringLen = StrLen (NodeString);
> + Index = 1; // ConfigLang always starts with '/'.
> while (Index < StringLen) {
> if (*(NodeString + Index) == L'/') {
> - NumberNodes ++;
> + NumberNodes++;
> }
> - Index ++;
> - };
> - NumberNodes ++;
> +
> + Index++;
> + }
> +
> + NumberNodes++;
>
> return (NumberNodes);
> }
> @@ -1141,24 +1157,25 @@ GetNumberOfRedpathNodes (
> **/
> EFI_STRING
> GetRedpathNodeByIndex (
> - IN EFI_STRING NodeString,
> - IN UINTN Index,
> - OUT EFI_STRING *EndOfNodePtr OPTIONAL
> + IN EFI_STRING NodeString,
> + IN UINTN Index,
> + OUT EFI_STRING *EndOfNodePtr OPTIONAL
> )
> {
> - UINTN NumberNodes;
> - UINTN StringLen;
> - UINTN StringIndex;
> - EFI_STRING NodeStart;
> - EFI_STRING NodeEnd;
> + UINTN NumberNodes;
> + UINTN StringLen;
> + UINTN StringIndex;
> + EFI_STRING NodeStart;
> + EFI_STRING NodeEnd;
>
> NumberNodes = 0;
> - StringLen = StrLen (NodeString);
> + StringLen = StrLen (NodeString);
> StringIndex = 1; // ConfigLang always starts with '/'.
> - NodeStart = NodeString;
> + NodeStart = NodeString;
> if (EndOfNodePtr != NULL) {
> *EndOfNodePtr = NULL;
> }
> +
> while (StringIndex < StringLen) {
> if (*(NodeString + StringIndex) == L'/') {
> NodeEnd = NodeString + StringIndex - 1;
> @@ -1166,14 +1183,17 @@ GetRedpathNodeByIndex (
> if (EndOfNodePtr != NULL) {
> *EndOfNodePtr = NodeEnd;
> }
> +
> return NodeStart;
> } else {
> NodeStart = NodeString + StringIndex + 1;
> }
> }
> - StringIndex ++;
> - };
> - return (NULL);
> +
> + StringIndex++;
> + }
> +
> + return (NULL);
> }
>
> /**
> @@ -1192,18 +1212,18 @@ GetRedpathNodeByIndex (
> **/
> EFI_STATUS
> GetArrayIndexFromArrayTypeConfigureLang (
> - IN CHAR16 *ConfigureLang,
> - OUT CHAR16 **UnifiedConfigureLang,
> - OUT UINTN *Index
> + IN CHAR16 *ConfigureLang,
> + OUT CHAR16 **UnifiedConfigureLang,
> + OUT UINTN *Index
> )
> {
> - EFI_STATUS Status;
> - CHAR16 *TmpConfigureLang;
> - CHAR16 *ArrayOpenStr;
> - CHAR16 *ArrayCloseStr;
> - INTN StringIndex;
> + EFI_STATUS Status;
> + CHAR16 *TmpConfigureLang;
> + CHAR16 *ArrayOpenStr;
> + CHAR16 *ArrayCloseStr;
> + INTN StringIndex;
>
> - if (ConfigureLang == NULL || UnifiedConfigureLang == NULL || Index ==
> NULL) {
> + if ((ConfigureLang == NULL) || (UnifiedConfigureLang == NULL) || (Index
> == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
>
> @@ -1227,28 +1247,30 @@ GetArrayIndexFromArrayTypeConfigureLang (
> //
> // Resotre the '}' character and remove rest of string.
> //
> - ArrayCloseStr[0] = L'}';
> - ArrayCloseStr[1] = '\0';
> + ArrayCloseStr[0] = L'}';
> + ArrayCloseStr[1] = '\0';
> *UnifiedConfigureLang = TmpConfigureLang;
> } else {
> if (Status == EFI_NOT_FOUND) {
> //
> // This is not the redpath array. Search "/" for the parent root.
> //
> - *Index = 0;
> + *Index = 0;
> StringIndex = StrLen (TmpConfigureLang) - 1;
> while (StringIndex >= 0 && *(TmpConfigureLang + StringIndex) != '/') {
> - StringIndex --;
> - };
> + StringIndex--;
> + }
> +
> if (StringIndex >= 0 ) {
> *(TmpConfigureLang + StringIndex) = '\0';
> - *UnifiedConfigureLang = TmpConfigureLang;
> - Status = EFI_SUCCESS;
> + *UnifiedConfigureLang = TmpConfigureLang;
> + Status = EFI_SUCCESS;
> } else {
> Status = EFI_INVALID_PARAMETER;
> }
> }
> }
> +
> return Status;
> }
>
> @@ -1265,27 +1287,30 @@ GetArrayIndexFromArrayTypeConfigureLang (
> **/
> EFI_STATUS
> CopyConfiglanguageList (
> - IN REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *SourceConfigureLangList,
> - OUT REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *DestConfigureLangList
> + IN REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *SourceConfigureLangList,
> + OUT REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *DestConfigureLangList
> )
> {
> - UINTN Index;
> + UINTN Index;
>
> - if (SourceConfigureLangList == NULL || DestConfigureLangList == NULL) {
> + if ((SourceConfigureLangList == NULL) || (DestConfigureLangList == NULL))
> {
> return EFI_INVALID_PARAMETER;
> }
> +
> DestConfigureLangList->Count = SourceConfigureLangList->Count;
> - DestConfigureLangList->List =
> - (REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG *)AllocateZeroPool
> (sizeof (REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG) *
> DestConfigureLangList->Count);
> + DestConfigureLangList->List =
> + (REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG *)AllocateZeroPool
> (sizeof (REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG) *
> DestConfigureLangList->Count);
> if (DestConfigureLangList->List == NULL) {
> DEBUG ((DEBUG_ERROR, "%a, Fail to allocate memory for
> REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG.\n", __FUNCTION__));
> return EFI_OUT_OF_RESOURCES;
> }
> +
> for (Index = 0; Index < SourceConfigureLangList->Count; Index++) {
> - DestConfigureLangList->List [Index].Index = SourceConfigureLangList-
> >List[Index].Index;
> - DestConfigureLangList->List [Index].ConfigureLang =
> - (EFI_STRING)AllocateCopyPool(StrSize(SourceConfigureLangList-
> >List[Index].ConfigureLang), (VOID *)SourceConfigureLangList-
> >List[Index].ConfigureLang);
> + DestConfigureLangList->List[Index].Index = SourceConfigureLangList-
> >List[Index].Index;
> + DestConfigureLangList->List[Index].ConfigureLang =
> + (EFI_STRING)AllocateCopyPool (StrSize (SourceConfigureLangList-
> >List[Index].ConfigureLang), (VOID *)SourceConfigureLangList-
> >List[Index].ConfigureLang);
> }
> +
> return EFI_SUCCESS;
> }
>
> @@ -1300,39 +1325,45 @@ CopyConfiglanguageList (
> **/
> UINTN
> ConfiglanguageGetInstanceIndex (
> - IN EFI_STRING ConfigureLang
> + IN EFI_STRING ConfigureLang
> )
> {
> - INTN LeftBracketIndex;
> - INTN RightBracketIndex;
> - INTN Index;
> - UINT64 Instance;
> - EFI_STATUS Status;
> + INTN LeftBracketIndex;
> + INTN RightBracketIndex;
> + INTN Index;
> + UINT64 Instance;
> + EFI_STATUS Status;
>
> if (ConfigureLang == NULL) {
> return 0;
> }
> - LeftBracketIndex = 0;
> +
> + LeftBracketIndex = 0;
> RightBracketIndex = 0;
> - Index = StrLen (ConfigureLang) - 1;
> + Index = StrLen (ConfigureLang) - 1;
> while (Index >= 0) {
> if (*(ConfigureLang + Index) == L'{') {
> LeftBracketIndex = Index;
> break;
> }
> +
> if (*(ConfigureLang + Index) == L'}') {
> RightBracketIndex = Index;
> }
> - Index --;
> - };
> +
> + Index--;
> + }
> +
> if ((RightBracketIndex - LeftBracketIndex) <= 1) {
> return 0;
> }
> +
> *(ConfigureLang + RightBracketIndex) = 0;
> - Status = StrDecimalToUint64S (ConfigureLang + LeftBracketIndex + 1, NULL,
> &Instance);
> - if (EFI_ERROR(Status)) {
> + Status = StrDecimalToUint64S (ConfigureLang +
> LeftBracketIndex + 1, NULL, &Instance);
> + if (EFI_ERROR (Status)) {
> Instance = 0;
> }
> +
> //
> // Restore right curly bracket.
> //
> @@ -1353,20 +1384,22 @@ ConfiglanguageGetInstanceIndex (
> **/
> EFI_STATUS
> DestroyConfiglanguageList (
> - IN REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *ConfigureLangList
> + IN REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *ConfigureLangList
> )
> {
> - UINTN Index;
> + UINTN Index;
>
> if (ConfigureLangList == NULL) {
> return EFI_INVALID_PARAMETER;
> }
> +
> if (ConfigureLangList->List != NULL) {
> for (Index = 0; Index < ConfigureLangList->Count; Index++) {
> - if (ConfigureLangList->List [Index].ConfigureLang != NULL) {
> - FreePool (ConfigureLangList->List [Index].ConfigureLang);
> + if (ConfigureLangList->List[Index].ConfigureLang != NULL) {
> + FreePool (ConfigureLangList->List[Index].ConfigureLang);
> }
> }
> +
> FreePool (ConfigureLangList->List);
> ConfigureLangList->List = NULL;
> }
> @@ -1391,56 +1424,60 @@ DestroyConfiglanguageList (
> **/
> EFI_STATUS
> SetResourceConfigLangMemberInstance (
> - IN EFI_STRING *DestConfigLang,
> - IN UINTN MaxtLengthConfigLang,
> - IN REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG *ConfigLangInstance
> + IN EFI_STRING *DestConfigLang,
> + IN UINTN MaxtLengthConfigLang,
> + IN REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG *ConfigLangInstance
> )
> {
> - EFI_STRING ThisConfigLang;
> - EFI_STRING NewConfigLang;
> - CHAR16 InstanceStr [10];
> - INTN Index;
> - UINTN Length;
> - UINTN MaxStrLength;
> -
> - if (DestConfigLang == NULL || ConfigLangInstance == NULL) {
> + EFI_STRING ThisConfigLang;
> + EFI_STRING NewConfigLang;
> + CHAR16 InstanceStr[10];
> + INTN Index;
> + UINTN Length;
> + UINTN MaxStrLength;
> +
> + if ((DestConfigLang == NULL) || (ConfigLangInstance == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
> +
> UnicodeSPrint ((CHAR16 *)&InstanceStr, 10, L"%d", ConfigLangInstance-
> >Index);
>
> ThisConfigLang = *DestConfigLang;
> - if (ThisConfigLang [0] == 0) {
> + if (ThisConfigLang[0] == 0) {
> //
> // Return ConfigLangInstance->ConfigureLang
> //
> if (ConfigLangInstance->ConfigureLang == NULL) {
> return EFI_INVALID_PARAMETER;
> } else {
> - StrCatS(*DestConfigLang, MaxtLengthConfigLang, ConfigLangInstance-
> >ConfigureLang);
> + StrCatS (*DestConfigLang, MaxtLengthConfigLang, ConfigLangInstance-
> >ConfigureLang);
> return EFI_SUCCESS;
> }
> }
>
> - MaxStrLength = StrSize (ThisConfigLang) + StrSize
> ((EFI_STRING)&InstanceStr);
> + MaxStrLength = StrSize (ThisConfigLang) + StrSize
> ((EFI_STRING)&InstanceStr);
> NewConfigLang = ThisConfigLang;
> if (MaxtLengthConfigLang < MaxStrLength) {
> - NewConfigLang = (EFI_STRING)AllocateZeroPool(MaxStrLength);
> + NewConfigLang = (EFI_STRING)AllocateZeroPool (MaxStrLength);
> if (NewConfigLang == NULL) {
> DEBUG ((DEBUG_ERROR, "%a, Fail to allocate memory for
> NewConfigLang.\n", __FUNCTION__));
> return EFI_OUT_OF_RESOURCES;
> }
> }
> +
> //
> // Search the last "{"
> //
> Index = StrLen (ThisConfigLang) - 1;
> while ((ThisConfigLang[Index] != '{') && (Index >= 0)) {
> - Index --;
> - };
> + Index--;
> + }
> +
> if (Index == -1) {
> if (NewConfigLang != ThisConfigLang) {
> - FreePool(NewConfigLang);
> + FreePool (NewConfigLang);
> }
> +
> return EFI_NOT_FOUND;
> }
>
> @@ -1449,15 +1486,17 @@ SetResourceConfigLangMemberInstance (
> //
> Length = 0;
> while (Index >= 0) {
> - NewConfigLang [Index] = ThisConfigLang[Index];
> - Index --;
> - Length ++;
> - };
> + NewConfigLang[Index] = ThisConfigLang[Index];
> + Index--;
> + Length++;
> + }
> +
> UnicodeSPrint ((CHAR16 *)(NewConfigLang + Length), MaxStrLength,
> L"%d", ConfigLangInstance->Index);
> StrCatS (NewConfigLang, MaxStrLength, L"}");
> if (NewConfigLang != ThisConfigLang) {
> FreePool (ThisConfigLang);
> }
> +
> *DestConfigLang = NewConfigLang;
> return EFI_SUCCESS;
> }
> @@ -1478,28 +1517,28 @@ SetResourceConfigLangMemberInstance (
> **/
> EFI_STATUS
> RedfishFeatureGetUnifiedArrayTypeConfigureLang (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING Pattern, OPTIONAL
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING Pattern, OPTIONAL
> OUT REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG_LIST
> *UnifiedConfigureLangList
> )
> {
> - EFI_STATUS Status;
> - EFI_STRING *ConfigureLangList;
> - UINTN Count;
> - UINTN Index;
> - UINTN Index2;
> - UINTN ArrayIndex;
> - EFI_STRING UnifiedConfigureLang;
> - BOOLEAN Duplicated;
> - REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG
> UnifiedConfigureLangPool[BIOS_CONFIG_TO_REDFISH_REDPATH_POOL_SIZ
> E];
> -
> - if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> UnifiedConfigureLangList == NULL) {
> + EFI_STATUS Status;
> + EFI_STRING *ConfigureLangList;
> + UINTN Count;
> + UINTN Index;
> + UINTN Index2;
> + UINTN ArrayIndex;
> + EFI_STRING UnifiedConfigureLang;
> + BOOLEAN Duplicated;
> + REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG
> UnifiedConfigureLangPool[BIOS_CONFIG_TO_REDFISH_REDPATH_POOL_SIZ
> E];
> +
> + if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> (UnifiedConfigureLangList == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
>
> UnifiedConfigureLangList->Count = 0;
> - UnifiedConfigureLangList->List = NULL;
> + UnifiedConfigureLangList->List = NULL;
> ZeroMem (UnifiedConfigureLangPool, sizeof (UnifiedConfigureLangPool));
>
> Status = RedfishPlatformConfigGetConfigureLang (Schema, Version,
> Pattern, &ConfigureLangList, &Count);
> @@ -1514,7 +1553,7 @@ RedfishFeatureGetUnifiedArrayTypeConfigureLang
> (
>
> for (Index = 0; Index < Count; Index++) {
> Status = GetArrayIndexFromArrayTypeConfigureLang
> (ConfigureLangList[Index], &UnifiedConfigureLang, &ArrayIndex);
> - if (EFI_ERROR (Status) && Status == EFI_INVALID_PARAMETER) {
> + if (EFI_ERROR (Status) && (Status == EFI_INVALID_PARAMETER)) {
> ASSERT (FALSE);
> continue;
> }
> @@ -1550,7 +1589,7 @@ RedfishFeatureGetUnifiedArrayTypeConfigureLang
> (
> //
>
> UnifiedConfigureLangPool[UnifiedConfigureLangList-
> >Count].ConfigureLang = UnifiedConfigureLang;
> - UnifiedConfigureLangPool[UnifiedConfigureLangList->Count].Index =
> ArrayIndex;
> + UnifiedConfigureLangPool[UnifiedConfigureLangList->Count].Index =
> ArrayIndex;
> ++UnifiedConfigureLangList->Count;
> }
>
> @@ -1578,23 +1617,23 @@
> RedfishFeatureGetUnifiedArrayTypeConfigureLang (
> **/
> EFI_STATUS
> GetEtagAndLocation (
> - IN REDFISH_RESPONSE *Response,
> - OUT CHAR8 **Etag, OPTIONAL
> + IN REDFISH_RESPONSE *Response,
> + OUT CHAR8 **Etag, OPTIONAL
> OUT EFI_STRING *Location OPTIONAL
> )
> {
> - EDKII_JSON_VALUE JsonValue;
> - EDKII_JSON_VALUE OdataValue;
> - CHAR8 *OdataString;
> - CHAR8 *AsciiLocation;
> - EFI_HTTP_HEADER *Header;
> - EFI_STATUS Status;
> + EDKII_JSON_VALUE JsonValue;
> + EDKII_JSON_VALUE OdataValue;
> + CHAR8 *OdataString;
> + CHAR8 *AsciiLocation;
> + EFI_HTTP_HEADER *Header;
> + EFI_STATUS Status;
>
> if (Response == NULL) {
> return EFI_INVALID_PARAMETER;
> }
>
> - if (Etag == NULL && Location == NULL) {
> + if ((Etag == NULL) && (Location == NULL)) {
> return EFI_SUCCESS;
> }
>
> @@ -1614,7 +1653,7 @@ GetEtagAndLocation (
> //
> // No header is returned. Search payload for location.
> //
> - if (*Etag == NULL && Response->Payload != NULL) {
> + if ((*Etag == NULL) && (Response->Payload != NULL)) {
> JsonValue = RedfishJsonInPayload (Response->Payload);
> if (JsonValue != NULL) {
> OdataValue = JsonObjectGetValue (JsonValueGetObject (JsonValue),
> "@odata.etag");
> @@ -1649,7 +1688,7 @@ GetEtagAndLocation (
> //
> // No header is returned. Search payload for location.
> //
> - if (*Location == NULL && Response->Payload != NULL) {
> + if ((*Location == NULL) && (Response->Payload != NULL)) {
> JsonValue = RedfishJsonInPayload (Response->Payload);
> if (JsonValue != NULL) {
> OdataValue = JsonObjectGetValue (JsonValueGetObject (JsonValue),
> "@odata.id");
> @@ -1675,6 +1714,7 @@ GetEtagAndLocation (
>
> return Status;
> }
> +
> /**
>
> Create HTTP payload and send them to redfish service with PATCH method.
> @@ -1690,25 +1730,25 @@ GetEtagAndLocation (
> **/
> EFI_STATUS
> CreatePayloadToPatchResource (
> - IN REDFISH_SERVICE *Service,
> - IN REDFISH_PAYLOAD *TargetPayload,
> - IN CHAR8 *Json,
> - OUT CHAR8 **Etag
> + IN REDFISH_SERVICE *Service,
> + IN REDFISH_PAYLOAD *TargetPayload,
> + IN CHAR8 *Json,
> + OUT CHAR8 **Etag
> )
> {
> - REDFISH_PAYLOAD Payload;
> - EDKII_JSON_VALUE ResourceJsonValue;
> - REDFISH_RESPONSE PostResponse;
> - EFI_STATUS Status;
> + REDFISH_PAYLOAD Payload;
> + EDKII_JSON_VALUE ResourceJsonValue;
> + REDFISH_RESPONSE PostResponse;
> + EFI_STATUS Status;
>
> - if (Service == NULL || TargetPayload == NULL || IS_EMPTY_STRING (Json)
> || Etag == NULL) {
> + if ((Service == NULL) || (TargetPayload == NULL) || IS_EMPTY_STRING
> (Json) || (Etag == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
>
> ResourceJsonValue = JsonLoadString (Json, 0, NULL);
> - Payload = RedfishCreatePayload (ResourceJsonValue, Service);
> + Payload = RedfishCreatePayload (ResourceJsonValue, Service);
> if (Payload == NULL) {
> - DEBUG ((DEBUG_ERROR, "%a:%d Failed to create JSON payload from
> JSON value!\n",__FUNCTION__, __LINE__));
> + DEBUG ((DEBUG_ERROR, "%a:%d Failed to create JSON payload from
> JSON value!\n", __FUNCTION__, __LINE__));
> Status = EFI_DEVICE_ERROR;
> goto EXIT_FREE_JSON_VALUE;
> }
> @@ -1716,7 +1756,7 @@ CreatePayloadToPatchResource (
> ZeroMem (&PostResponse, sizeof (REDFISH_RESPONSE));
> Status = RedfishPatchToPayload (TargetPayload, Payload, &PostResponse);
> if (EFI_ERROR (Status)) {
> - DEBUG ((DEBUG_ERROR, "%a:%d Failed to PATCH payload to Redfish
> service.\n",__FUNCTION__, __LINE__));
> + DEBUG ((DEBUG_ERROR, "%a:%d Failed to PATCH payload to Redfish
> service.\n", __FUNCTION__, __LINE__));
> goto EXIT_FREE_JSON_VALUE;
> }
>
> @@ -1761,26 +1801,26 @@ EXIT_FREE_JSON_VALUE:
> **/
> EFI_STATUS
> CreatePayloadToPostResource (
> - IN REDFISH_SERVICE *Service,
> - IN REDFISH_PAYLOAD *TargetPayload,
> - IN CHAR8 *Json,
> - OUT EFI_STRING *Location,
> - OUT CHAR8 **Etag
> + IN REDFISH_SERVICE *Service,
> + IN REDFISH_PAYLOAD *TargetPayload,
> + IN CHAR8 *Json,
> + OUT EFI_STRING *Location,
> + OUT CHAR8 **Etag
> )
> {
> - REDFISH_PAYLOAD Payload;
> - EDKII_JSON_VALUE ResourceJsonValue;
> - REDFISH_RESPONSE PostResponse;
> - EFI_STATUS Status;
> + REDFISH_PAYLOAD Payload;
> + EDKII_JSON_VALUE ResourceJsonValue;
> + REDFISH_RESPONSE PostResponse;
> + EFI_STATUS Status;
>
> - if (Service == NULL || TargetPayload == NULL || IS_EMPTY_STRING (Json)
> || Location == NULL || Etag == NULL) {
> + if ((Service == NULL) || (TargetPayload == NULL) || IS_EMPTY_STRING
> (Json) || (Location == NULL) || (Etag == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
>
> ResourceJsonValue = JsonLoadString (Json, 0, NULL);
> - Payload = RedfishCreatePayload (ResourceJsonValue, Service);
> + Payload = RedfishCreatePayload (ResourceJsonValue, Service);
> if (Payload == NULL) {
> - DEBUG ((DEBUG_ERROR, "%a:%d Failed to create JSON payload from
> JSON value!\n",__FUNCTION__, __LINE__));
> + DEBUG ((DEBUG_ERROR, "%a:%d Failed to create JSON payload from
> JSON value!\n", __FUNCTION__, __LINE__));
> Status = EFI_DEVICE_ERROR;
> goto EXIT_FREE_JSON_VALUE;
> }
> @@ -1788,7 +1828,7 @@ CreatePayloadToPostResource (
> ZeroMem (&PostResponse, sizeof (REDFISH_RESPONSE));
> Status = RedfishPostToPayload (TargetPayload, Payload, &PostResponse);
> if (EFI_ERROR (Status)) {
> - DEBUG ((DEBUG_ERROR, "%a:%d Failed to POST Attribute Registry to
> Redfish service.\n",__FUNCTION__, __LINE__));
> + DEBUG ((DEBUG_ERROR, "%a:%d Failed to POST Attribute Registry to
> Redfish service.\n", __FUNCTION__, __LINE__));
> goto EXIT_FREE_JSON_VALUE;
> }
>
> @@ -1827,19 +1867,19 @@ EXIT_FREE_JSON_VALUE:
> **/
> EFI_STRING
> RedfishGetUri (
> - IN EFI_STRING ConfigLang
> + IN EFI_STRING ConfigLang
> )
> {
> - EFI_STATUS Status;
> - EFI_STRING Target;
> - EFI_STRING Found;
> - EFI_STRING TempStr;
> - EFI_STRING ResultStr;
> - EFI_STRING Head;
> - EFI_STRING CloseBracket;
> - UINTN TempStrSize;
> - UINTN RemainingLen;
> - UINTN ConfigLangLen;
> + EFI_STATUS Status;
> + EFI_STRING Target;
> + EFI_STRING Found;
> + EFI_STRING TempStr;
> + EFI_STRING ResultStr;
> + EFI_STRING Head;
> + EFI_STRING CloseBracket;
> + UINTN TempStrSize;
> + UINTN RemainingLen;
> + UINTN ConfigLangLen;
>
> Status = RedfishLocateProtocol ((VOID **)&mConfigLangMapProtocol,
> &gEdkIIRedfishConfigLangMapProtocolGuid);
> if (EFI_ERROR (Status)) {
> @@ -1875,7 +1915,7 @@ RedfishGetUri (
> //
> do {
> ConfigLangLen = StrLen (Head);
> - Target = CloseBracket;
> + Target = CloseBracket;
>
> //
> // Look for next ConfigLang
> @@ -1895,13 +1935,14 @@ RedfishGetUri (
> //
> // Copy current ConfigLang to temporary string and do a query
> //
> - Target += 1;
> + Target += 1;
> RemainingLen = StrLen (Target);
> - TempStrSize = (ConfigLangLen - RemainingLen + 1) * sizeof (CHAR16);
> - TempStr = AllocateCopyPool (TempStrSize, Head);
> + TempStrSize = (ConfigLangLen - RemainingLen + 1) * sizeof (CHAR16);
> + TempStr = AllocateCopyPool (TempStrSize, Head);
> if (TempStr == NULL) {
> return NULL;
> }
> +
> TempStr[ConfigLangLen - RemainingLen] = '\0';
>
> Status = mConfigLangMapProtocol->Get (
> @@ -1926,7 +1967,7 @@ RedfishGetUri (
> //
> // Prepare for next ConfigLang
> //
> - Head = Target;
> + Head = Target;
> CloseBracket = StrStr (Head, L"{");
> } while (CloseBracket != NULL);
>
> @@ -1954,7 +1995,7 @@ RedfishGetUri (
> **/
> EFI_STRING
> RedfishGetConfigLanguage (
> - IN EFI_STRING Uri
> + IN EFI_STRING Uri
> )
> {
> EFI_STATUS Status;
> @@ -1973,13 +2014,12 @@ RedfishGetConfigLanguage (
> }
>
> ConfigLang = NULL;
> - Status = mConfigLangMapProtocol->Get (
> - mConfigLangMapProtocol,
> - RedfishGetTypeUri,
> - Uri,
> - &ConfigLang
> - );
> -
> + Status = mConfigLangMapProtocol->Get (
> + mConfigLangMapProtocol,
> + RedfishGetTypeUri,
> + Uri,
> + &ConfigLang
> + );
>
> return ConfigLang;
> }
> @@ -1997,8 +2037,8 @@ RedfishGetConfigLanguage (
> **/
> EFI_STRING
> GetConfigureLang (
> - IN CHAR8 *Uri,
> - IN CHAR8 *PropertyName OPTIONAL
> + IN CHAR8 *Uri,
> + IN CHAR8 *PropertyName OPTIONAL
> )
> {
> EFI_STRING ConfigLang;
> @@ -2032,12 +2072,14 @@ GetConfigureLang (
> }
>
> StringSize = StrSize (ConfigLang) + ((AsciiStrLen (PropertyName) + 1) *
> sizeof (CHAR16));
> - ResultStr = AllocatePool (StringSize);
> + ResultStr = AllocatePool (StringSize);
> if (ResultStr == NULL) {
> + FreePool (ConfigLang);
> return NULL;
> }
>
> UnicodeSPrint (ResultStr, StringSize, L"%s/%a", ConfigLang, PropertyName);
> + FreePool (ConfigLang);
>
> return ResultStr;
> }
> @@ -2059,7 +2101,7 @@ RedfisSetRedfishUri (
> IN EFI_STRING Uri
> )
> {
> - EFI_STATUS Status;
> + EFI_STATUS Status;
>
> if (IS_EMPTY_STRING (ConfigLang) || IS_EMPTY_STRING (Uri)) {
> return EFI_INVALID_PARAMETER;
> @@ -2088,12 +2130,12 @@ RedfisSetRedfishUri (
> **/
> EFI_STRING
> GetOdataId (
> - IN REDFISH_PAYLOAD *Payload
> + IN REDFISH_PAYLOAD *Payload
> )
> {
> - EDKII_JSON_VALUE *JsonValue;
> - EDKII_JSON_VALUE *OdataId;
> - EFI_STRING OdataIdString;
> + EDKII_JSON_VALUE *JsonValue;
> + EDKII_JSON_VALUE *OdataId;
> + EFI_STRING OdataIdString;
>
> if (Payload == NULL) {
> return NULL;
> @@ -2117,7 +2159,6 @@ GetOdataId (
> return AllocateCopyPool (StrSize (OdataIdString), OdataIdString);
> }
>
> -
> /**
>
> Get the property name by given Configure Langauge.
> @@ -2131,25 +2172,27 @@ GetOdataId (
> **/
> EFI_STRING
> GetPropertyFromConfigureLang (
> - IN EFI_STRING ResourceUri,
> - IN EFI_STRING ConfigureLang
> + IN EFI_STRING ResourceUri,
> + IN EFI_STRING ConfigureLang
> )
> {
> EFI_STATUS Status;
> EFI_STRING TempString;
>
> - if (ConfigureLang == NULL || ResourceUri == NULL) {
> + if ((ConfigureLang == NULL) || (ResourceUri == NULL)) {
> return NULL;
> }
>
> Status = IsRedpathArray (ConfigureLang, NULL, &TempString);
> - if (!EFI_ERROR(Status)) {
> + if (!EFI_ERROR (Status)) {
> TempString += 2; // Advance two characters for '}' and '/'
> return TempString;
> }
> +
> if (Status != EFI_NOT_FOUND) {
> return NULL;
> }
> +
> //
> // The ConigLang has no '{}'
> //
> @@ -2160,6 +2203,7 @@ GetPropertyFromConfigureLang (
> if (GetRedpathNodeByIndex (ConfigureLang, 0, &TempString) == NULL) {
> return NULL;
> }
> +
> //
> // Advance two characters to the starting
> // pointer of next node.
> @@ -2182,17 +2226,17 @@ GetPropertyFromConfigureLang (
> **/
> CHAR8 *
> GetPropertyStringValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang
> )
> {
> - EFI_STATUS Status;
> - EDKII_REDFISH_VALUE RedfishValue;
> - EFI_STRING ConfigureLangBuffer;
> - UINTN BufferSize;
> - CHAR8 *AsciiStringValue;
> + EFI_STATUS Status;
> + EDKII_REDFISH_VALUE RedfishValue;
> + EFI_STRING ConfigureLangBuffer;
> + UINTN BufferSize;
> + CHAR8 *AsciiStringValue;
>
> if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || IS_EMPTY_STRING (PropertyName)) {
> return NULL;
> @@ -2201,7 +2245,7 @@ GetPropertyStringValue (
> //
> // Configure Language buffer.
> //
> - BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> + BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> ConfigureLangBuffer = AllocatePool (BufferSize);
> if (ConfigureLangBuffer == NULL) {
> return NULL;
> @@ -2240,17 +2284,17 @@ GetPropertyStringValue (
> **/
> INT64 *
> GetPropertyNumericValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang
> )
> {
> - EFI_STATUS Status;
> - EDKII_REDFISH_VALUE RedfishValue;
> - EFI_STRING ConfigureLangBuffer;
> - UINTN BufferSize;
> - INT64 *ResultValue;
> + EFI_STATUS Status;
> + EDKII_REDFISH_VALUE RedfishValue;
> + EFI_STRING ConfigureLangBuffer;
> + UINTN BufferSize;
> + INT64 *ResultValue;
>
> if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || IS_EMPTY_STRING (PropertyName)) {
> return NULL;
> @@ -2259,7 +2303,7 @@ GetPropertyNumericValue (
> //
> // Configure Language buffer.
> //
> - BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> + BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> ConfigureLangBuffer = AllocatePool (BufferSize);
> if (ConfigureLangBuffer == NULL) {
> return NULL;
> @@ -2302,17 +2346,17 @@ GetPropertyNumericValue (
> **/
> BOOLEAN *
> GetPropertyBooleanValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang
> )
> {
> - EFI_STATUS Status;
> - EDKII_REDFISH_VALUE RedfishValue;
> - EFI_STRING ConfigureLangBuffer;
> - UINTN BufferSize;
> - BOOLEAN *ResultValue;
> + EFI_STATUS Status;
> + EDKII_REDFISH_VALUE RedfishValue;
> + EFI_STRING ConfigureLangBuffer;
> + UINTN BufferSize;
> + BOOLEAN *ResultValue;
>
> if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || IS_EMPTY_STRING (PropertyName)) {
> return NULL;
> @@ -2321,7 +2365,7 @@ GetPropertyBooleanValue (
> //
> // Configure Language buffer.
> //
> - BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> + BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> ConfigureLangBuffer = AllocatePool (BufferSize);
> if (ConfigureLangBuffer == NULL) {
> return NULL;
> @@ -2366,8 +2410,8 @@ GetAttributeNameFromConfigLanguage (
> IN EFI_STRING ConfigureLanguage
> )
> {
> - UINTN StringLen;
> - UINTN Index;
> + UINTN StringLen;
> + UINTN Index;
>
> if (IS_EMPTY_STRING (ConfigureLanguage)) {
> return NULL;
> @@ -2398,21 +2442,21 @@ GetAttributeNameFromConfigLanguage (
> **/
> CHAR8 **
> GetPropertyStringArrayValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang,
> - OUT UINTN *ArraySize
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang,
> + OUT UINTN *ArraySize
> )
> {
> - EFI_STATUS Status;
> - EDKII_REDFISH_VALUE RedfishValue;
> - EFI_STRING ConfigureLangBuffer;
> - UINTN BufferSize;
> - CHAR8 **StringArray;
> - UINTN Index;
> + EFI_STATUS Status;
> + EDKII_REDFISH_VALUE RedfishValue;
> + EFI_STRING ConfigureLangBuffer;
> + UINTN BufferSize;
> + CHAR8 **StringArray;
> + UINTN Index;
>
> - if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || IS_EMPTY_STRING (PropertyName)
> || ArraySize == NULL) {
> + if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || IS_EMPTY_STRING (PropertyName)
> || (ArraySize == NULL)) {
> return NULL;
> }
>
> @@ -2421,7 +2465,7 @@ GetPropertyStringArrayValue (
> //
> // Configure Language buffer.
> //
> - BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> + BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> ConfigureLangBuffer = AllocatePool (BufferSize);
> if (ConfigureLangBuffer == NULL) {
> DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __FUNCTION__));
> @@ -2469,21 +2513,21 @@ GetPropertyStringArrayValue (
> **/
> INT64 *
> GetPropertyNumericArrayValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang,
> - OUT UINTN *ArraySize
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang,
> + OUT UINTN *ArraySize
> )
> {
> - EFI_STATUS Status;
> - EDKII_REDFISH_VALUE RedfishValue;
> - EFI_STRING ConfigureLangBuffer;
> - UINTN BufferSize;
> - INT64 *IntegerArray;
> - UINTN Index;
> + EFI_STATUS Status;
> + EDKII_REDFISH_VALUE RedfishValue;
> + EFI_STRING ConfigureLangBuffer;
> + UINTN BufferSize;
> + INT64 *IntegerArray;
> + UINTN Index;
>
> - if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || IS_EMPTY_STRING (PropertyName)
> || ArraySize == NULL) {
> + if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || IS_EMPTY_STRING (PropertyName)
> || (ArraySize == NULL)) {
> return NULL;
> }
>
> @@ -2492,7 +2536,7 @@ GetPropertyNumericArrayValue (
> //
> // Configure Language buffer.
> //
> - BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> + BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> ConfigureLangBuffer = AllocatePool (BufferSize);
> if (ConfigureLangBuffer == NULL) {
> DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __FUNCTION__));
> @@ -2540,21 +2584,21 @@ GetPropertyNumericArrayValue (
> **/
> BOOLEAN *
> GetPropertyBooleanArrayValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang,
> - OUT UINTN *ArraySize
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang,
> + OUT UINTN *ArraySize
> )
> {
> - EFI_STATUS Status;
> - EDKII_REDFISH_VALUE RedfishValue;
> - EFI_STRING ConfigureLangBuffer;
> - UINTN BufferSize;
> - BOOLEAN *BooleanArray;
> - UINTN Index;
> + EFI_STATUS Status;
> + EDKII_REDFISH_VALUE RedfishValue;
> + EFI_STRING ConfigureLangBuffer;
> + UINTN BufferSize;
> + BOOLEAN *BooleanArray;
> + UINTN Index;
>
> - if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || IS_EMPTY_STRING (PropertyName)
> || ArraySize == NULL) {
> + if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || IS_EMPTY_STRING (PropertyName)
> || (ArraySize == NULL)) {
> return NULL;
> }
>
> @@ -2563,7 +2607,7 @@ GetPropertyBooleanArrayValue (
> //
> // Configure Language buffer.
> //
> - BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> + BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> ConfigureLangBuffer = AllocatePool (BufferSize);
> if (ConfigureLangBuffer == NULL) {
> DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __FUNCTION__));
> @@ -2605,25 +2649,28 @@ GetPropertyBooleanArrayValue (
> **/
> VOID
> FreeEmptyPropKeyValueList (
> - RedfishCS_EmptyProp_KeyValue *EmptyPropKeyValueListHead
> + RedfishCS_EmptyProp_KeyValue *EmptyPropKeyValueListHead
> )
> {
> - RedfishCS_EmptyProp_KeyValue *NextEmptyPropKeyValueList;
> + RedfishCS_EmptyProp_KeyValue *NextEmptyPropKeyValueList;
>
> while (EmptyPropKeyValueListHead != NULL) {
> NextEmptyPropKeyValueList = EmptyPropKeyValueListHead-
> >NextKeyValuePtr;
> if (EmptyPropKeyValueListHead->Value->DataValue.CharPtr != NULL) {
> - FreePool(EmptyPropKeyValueListHead->Value->DataValue.CharPtr);
> + FreePool (EmptyPropKeyValueListHead->Value->DataValue.CharPtr);
> }
> +
> if (EmptyPropKeyValueListHead->Value != NULL) {
> - FreePool(EmptyPropKeyValueListHead->Value);
> + FreePool (EmptyPropKeyValueListHead->Value);
> }
> +
> if (EmptyPropKeyValueListHead->KeyNamePtr != NULL) {
> - FreePool(EmptyPropKeyValueListHead->KeyNamePtr);
> + FreePool (EmptyPropKeyValueListHead->KeyNamePtr);
> }
> +
> FreePool (EmptyPropKeyValueListHead);
> EmptyPropKeyValueListHead = NextEmptyPropKeyValueList;
> - };
> + }
> }
>
> /**
> @@ -2640,26 +2687,28 @@ FreeEmptyPropKeyValueList (
> RedfishCS_EmptyProp_KeyValue *
> NewEmptyPropKeyValueFromRedfishValue (
> IN EFI_STRING KeyName,
> - IN EDKII_REDFISH_VALUE *RedfishValue
> + IN EDKII_REDFISH_VALUE *RedfishValue
> )
> {
> - RedfishCS_EmptyProp_KeyValue *EmptyPropKeyValue;
> - RedfishCS_Vague *VagueValue;
> - RedfishCS_char *KeyNameChar;
> - VOID *Data;
> - UINTN DataSize;
> - INT32 Bool32;
> -
> - KeyNameChar = StrUnicodeToAscii(KeyName);
> + RedfishCS_EmptyProp_KeyValue *EmptyPropKeyValue;
> + RedfishCS_Vague *VagueValue;
> + RedfishCS_char *KeyNameChar;
> + VOID *Data;
> + UINTN DataSize;
> + INT32 Bool32;
> +
> + KeyNameChar = StrUnicodeToAscii (KeyName);
> if (KeyNameChar == NULL) {
> DEBUG ((DEBUG_ERROR, "%a, Failed to convert unicode to ASCII.\n",
> __FUNCTION__));
> return NULL;
> }
> +
> EmptyPropKeyValue = (RedfishCS_EmptyProp_KeyValue
> *)AllocateZeroPool (sizeof (RedfishCS_EmptyProp_KeyValue));
> if (EmptyPropKeyValue == NULL) {
> DEBUG ((DEBUG_ERROR, "%a, Failed to allocate memory for
> EmptyPropKeyValue\n", __FUNCTION__));
> return NULL;
> }
> +
> VagueValue = (RedfishCS_Vague *)AllocateZeroPool (sizeof
> (RedfishCS_Vague));
> if (VagueValue == NULL) {
> DEBUG ((DEBUG_ERROR, "%a, Failed to allocate memory for
> VagueValue\n", __FUNCTION__));
> @@ -2669,29 +2718,30 @@ NewEmptyPropKeyValueFromRedfishValue (
>
> if (RedfishValue->Type == REDFISH_VALUE_TYPE_BOOLEAN) {
> VagueValue->DataType = RedfishCS_Vague_DataType_Bool;
> - DataSize = sizeof (BOOLEAN);
> + DataSize = sizeof (BOOLEAN);
> //
> // Redfish JSON to C strcuture converter uses
> // "int" for the BOOLEAN.
> //
> Bool32 = (INT32)RedfishValue->Value.Boolean;
> - Data = (VOID *)&Bool32;
> + Data = (VOID *)&Bool32;
> } else if (RedfishValue->Type == REDFISH_VALUE_TYPE_INTEGER) {
> VagueValue->DataType = RedfishCS_Vague_DataType_Int64;
> - DataSize = sizeof (INT64);
> - Data = (VOID *)&RedfishValue->Value.Integer;
> + DataSize = sizeof (INT64);
> + Data = (VOID *)&RedfishValue->Value.Integer;
> } else if (RedfishValue->Type == REDFISH_VALUE_TYPE_STRING) {
> VagueValue->DataType = RedfishCS_Vague_DataType_String;
> - DataSize = AsciiStrSize(RedfishValue->Value.Buffer);
> - Data = (VOID *)RedfishValue->Value.Buffer;
> + DataSize = AsciiStrSize (RedfishValue->Value.Buffer);
> + Data = (VOID *)RedfishValue->Value.Buffer;
> } else {
> DEBUG ((DEBUG_ERROR, "%a, wrong type of RedfishValue: %x\n",
> __FUNCTION__, RedfishValue->Type));
> FreePool (VagueValue);
> FreePool (EmptyPropKeyValue);
> return NULL;
> }
> - VagueValue->DataValue.CharPtr = (RedfishCS_char
> *)AllocateCopyPool(DataSize, Data);
> - EmptyPropKeyValue->Value = VagueValue;
> +
> + VagueValue->DataValue.CharPtr = (RedfishCS_char *)AllocateCopyPool
> (DataSize, Data);
> + EmptyPropKeyValue->Value = VagueValue;
> EmptyPropKeyValue->KeyNamePtr = KeyNameChar;
> return EmptyPropKeyValue;
> }
> @@ -2712,25 +2762,25 @@ NewEmptyPropKeyValueFromRedfishValue (
> **/
> RedfishCS_EmptyProp_KeyValue *
> GetPropertyVagueValue (
> - IN CHAR8 *Schema,
> - IN CHAR8 *Version,
> - IN EFI_STRING PropertyName,
> - IN EFI_STRING ConfigureLang,
> - OUT UINT32 *NumberOfValues
> + IN CHAR8 *Schema,
> + IN CHAR8 *Version,
> + IN EFI_STRING PropertyName,
> + IN EFI_STRING ConfigureLang,
> + OUT UINT32 *NumberOfValues
> )
> {
> - EFI_STATUS Status;
> - RedfishCS_EmptyProp_KeyValue *EmptyPropKeyValueList;
> - RedfishCS_EmptyProp_KeyValue *PreEmptyPropKeyValueList;
> - RedfishCS_EmptyProp_KeyValue *FirstEmptyPropKeyValueList;
> - EDKII_REDFISH_VALUE RedfishValue;
> - EFI_STRING ConfigureLangBuffer;
> - EFI_STRING KeyName;
> - EFI_STRING *ConfigureLangList;
> - EFI_STRING SearchPattern;
> - UINTN BufferSize;
> - UINTN ConfigListCount;
> - UINTN ConfigListCountIndex;
> + EFI_STATUS Status;
> + RedfishCS_EmptyProp_KeyValue *EmptyPropKeyValueList;
> + RedfishCS_EmptyProp_KeyValue *PreEmptyPropKeyValueList;
> + RedfishCS_EmptyProp_KeyValue *FirstEmptyPropKeyValueList;
> + EDKII_REDFISH_VALUE RedfishValue;
> + EFI_STRING ConfigureLangBuffer;
> + EFI_STRING KeyName;
> + EFI_STRING *ConfigureLangList;
> + EFI_STRING SearchPattern;
> + UINTN BufferSize;
> + UINTN ConfigListCount;
> + UINTN ConfigListCountIndex;
>
> if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) ||
> IS_EMPTY_STRING (ConfigureLang) || IS_EMPTY_STRING (PropertyName)) {
> return NULL;
> @@ -2739,24 +2789,26 @@ GetPropertyVagueValue (
> //
> // Configure Language buffer.
> //
> - BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> + BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN;
> ConfigureLangBuffer = AllocatePool (BufferSize);
> if (ConfigureLangBuffer == NULL) {
> DEBUG ((DEBUG_ERROR, "%a, Failed to allocate memory for
> ConfigureLangBuffer\n", __FUNCTION__));
> return NULL;
> }
> +
> UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang,
> PropertyName);
>
> //
> // Initial search pattern
> //
> - BufferSize = (StrLen (ConfigureLangBuffer) + StrLen (L"/.*") + 1) * sizeof
> (CHAR16); // Increase one for the NULL terminator.
> + BufferSize = (StrLen (ConfigureLangBuffer) + StrLen (L"/.*") + 1) * sizeof
> (CHAR16); // Increase one for the NULL terminator.
> SearchPattern = AllocatePool (BufferSize);
> if (SearchPattern == NULL) {
> DEBUG ((DEBUG_ERROR, "%a, Failed to allocate memory for
> SearchPattern\n", __FUNCTION__));
> FreePool (ConfigureLangBuffer);
> return NULL;
> }
> +
> BufferSize = BufferSize / sizeof (CHAR16);
> StrCpyS (SearchPattern, BufferSize, ConfigureLangBuffer);
> StrCatS (SearchPattern, BufferSize, L"/.*");
> @@ -2769,28 +2821,30 @@ GetPropertyVagueValue (
> //
> // Build up the list of RedfishCS_EmptyProp_KeyValue.
> //
> - ConfigListCountIndex = 0;
> - PreEmptyPropKeyValueList = NULL;
> + ConfigListCountIndex = 0;
> + PreEmptyPropKeyValueList = NULL;
> FirstEmptyPropKeyValueList = NULL;
> while (ConfigListCountIndex < ConfigListCount) {
> - Status = RedfishPlatformConfigGetValue(Schema, Version,
> ConfigureLangList [ConfigListCountIndex], &RedfishValue);
> + Status = RedfishPlatformConfigGetValue (Schema, Version,
> ConfigureLangList[ConfigListCountIndex], &RedfishValue);
> if (EFI_ERROR (Status)) {
> - DEBUG ((DEBUG_ERROR, "%a, %a.%a query current setting for %s failed:
> %r\n", __FUNCTION__, Schema, Version, ConfigureLangList
> [ConfigListCountIndex], Status));
> + DEBUG ((DEBUG_ERROR, "%a, %a.%a query current setting for %s failed:
> %r\n", __FUNCTION__, Schema, Version,
> ConfigureLangList[ConfigListCountIndex], Status));
> goto ErrorLeave;
> }
> +
> //
> // Get the key name.
> //
> - KeyName = GetAttributeNameFromConfigLanguage (ConfigureLangList
> [ConfigListCountIndex]);
> + KeyName = GetAttributeNameFromConfigLanguage
> (ConfigureLangList[ConfigListCountIndex]);
> //
> // Create an entry of RedfishCS_EmptyProp_KeyValue.
> //
> EmptyPropKeyValueList = NewEmptyPropKeyValueFromRedfishValue
> (KeyName, &RedfishValue);
> if (EmptyPropKeyValueList == NULL) {
> DEBUG ((DEBUG_ERROR, "%a, Failed to create an entry of
> EmptyPropKeyValueList\n", __FUNCTION__));
> - ConfigListCountIndex ++;
> + ConfigListCountIndex++;
> continue;
> }
> +
> //
> // Link the RedfishCS_EmptyProp_KeyValue list.
> //
> @@ -2799,24 +2853,29 @@ GetPropertyVagueValue (
> } else {
> FirstEmptyPropKeyValueList = EmptyPropKeyValueList;
> }
> +
> PreEmptyPropKeyValueList = EmptyPropKeyValueList;
> - ConfigListCountIndex ++;
> - };
> + ConfigListCountIndex++;
> + }
> +
> goto LeaveFunction;
>
> ErrorLeave:;
> if (FirstEmptyPropKeyValueList != NULL) {
> FreeEmptyPropKeyValueList (FirstEmptyPropKeyValueList);
> }
> +
> FirstEmptyPropKeyValueList = NULL;
>
> LeaveFunction:
> if (SearchPattern != NULL) {
> FreePool (SearchPattern);
> }
> +
> if (ConfigureLangBuffer != NULL) {
> FreePool (ConfigureLangBuffer);
> }
> +
> FreePool (ConfigureLangList);
>
> *NumberOfValues = (UINT32)ConfigListCount;
> @@ -2836,15 +2895,15 @@ LeaveFunction:
> **/
> BOOLEAN
> PropertyChecker (
> - IN VOID *PropertyBuffer,
> - IN BOOLEAN ProvisionMode
> + IN VOID *PropertyBuffer,
> + IN BOOLEAN ProvisionMode
> )
> {
> if (ProvisionMode) {
> return TRUE;
> }
>
> - if (!ProvisionMode && PropertyBuffer != NULL) {
> + if (!ProvisionMode && (PropertyBuffer != NULL)) {
> return TRUE;
> }
>
> @@ -2865,12 +2924,12 @@ PropertyChecker (
> **/
> BOOLEAN
> CheckEtag (
> - IN EFI_STRING Uri,
> - IN CHAR8 *EtagInHeader,
> - IN CHAR8 *EtagInJson
> + IN EFI_STRING Uri,
> + IN CHAR8 *EtagInHeader,
> + IN CHAR8 *EtagInJson
> )
> {
> - CHAR8 *EtagInDb;
> + CHAR8 *EtagInDb;
>
> if (IS_EMPTY_STRING (Uri)) {
> return FALSE;
> @@ -2920,15 +2979,15 @@ CheckEtag (
> **/
> EDKII_JSON_VALUE *
> MatchJsonObject (
> - IN EDKII_JSON_VALUE *JsonObj,
> - IN CHAR8 *ObjectName
> + IN EDKII_JSON_VALUE *JsonObj,
> + IN CHAR8 *ObjectName
> )
> {
> EDKII_JSON_VALUE N;
> CHAR8 *Key;
> EDKII_JSON_VALUE Value;
>
> - if (JsonObj == NULL || IS_EMPTY_STRING (ObjectName)) {
> + if ((JsonObj == NULL) || IS_EMPTY_STRING (ObjectName)) {
> return NULL;
> }
>
> @@ -2962,11 +3021,11 @@ MatchPropertyWithJsonContext (
> IN CHAR8 *Json
> )
> {
> - CHAR8 *AsciiProperty;
> - CHAR8 *PropertyNode;
> - UINTN Index;
> - EDKII_JSON_VALUE *JsonObj;
> - EDKII_JSON_VALUE *MatchObj;
> + CHAR8 *AsciiProperty;
> + CHAR8 *PropertyNode;
> + UINTN Index;
> + EDKII_JSON_VALUE *JsonObj;
> + EDKII_JSON_VALUE *MatchObj;
> EDKII_JSON_TYPE JsonType;
>
> if (IS_EMPTY_STRING (Property) || IS_EMPTY_STRING (Json)) {
> @@ -2974,7 +3033,7 @@ MatchPropertyWithJsonContext (
> }
>
> JsonObj = JsonLoadString (Json, 0, NULL);
> - if (JsonObj == NULL || !JsonValueIsObject (JsonObj)) {
> + if ((JsonObj == NULL) || !JsonValueIsObject (JsonObj)) {
> return FALSE;
> }
>
> @@ -2983,18 +3042,17 @@ MatchPropertyWithJsonContext (
> return FALSE;
> }
>
> - Index = 0;
> + Index = 0;
> PropertyNode = AsciiProperty;
> - MatchObj = JsonObj;
> + MatchObj = JsonObj;
>
> //
> // Walk through property and find corresponding object in JSON input
> //
> while (AsciiProperty[Index] != '\0') {
> -
> if (AsciiProperty[Index] == '/') {
> AsciiProperty[Index] = '\0';
> - MatchObj = MatchJsonObject (MatchObj, PropertyNode);
> + MatchObj = MatchJsonObject (MatchObj, PropertyNode);
> if (MatchObj == NULL) {
> PropertyNode = NULL;
> break;
> @@ -3023,16 +3081,19 @@ MatchPropertyWithJsonContext (
> if (JsonValueIsNull (MatchObj)) {
> MatchObj = NULL;
> }
> +
> break;
> case EdkiiJsonTypeArray:
> if (JsonArrayCount (MatchObj) == 0) {
> MatchObj = NULL;
> }
> +
> break;
> case EdkiiJsonTypeString:
> if (IS_EMPTY_STRING (JsonValueGetString (MatchObj))) {
> MatchObj = NULL;
> }
> +
> break;
> case EdkiiJsonTypeNull:
> MatchObj = NULL;
> @@ -3061,16 +3122,16 @@ MatchPropertyWithJsonContext (
> **/
> EFI_STATUS
> AddRedfishCharArray (
> - IN OUT RedfishCS_char_Array **Head,
> + IN OUT RedfishCS_char_Array **Head,
> IN CHAR8 **StringArray,
> IN UINTN ArraySize
> )
> {
> - UINTN Index;
> - RedfishCS_char_Array *CharArrayBuffer;
> - RedfishCS_char_Array *PreArrayBuffer;
> + UINTN Index;
> + RedfishCS_char_Array *CharArrayBuffer;
> + RedfishCS_char_Array *PreArrayBuffer;
>
> - if (Head == NULL || StringArray == NULL || ArraySize == 0) {
> + if ((Head == NULL) || (StringArray == NULL) || (ArraySize == 0)) {
> return EFI_INVALID_PARAMETER;
> }
>
> @@ -3083,14 +3144,15 @@ AddRedfishCharArray (
> }
>
> if (Index == 0) {
> - *Head = CharArrayBuffer;
> + *Head = CharArrayBuffer;
> }
>
> CharArrayBuffer->ArrayValue = StringArray[Index];
> - CharArrayBuffer->Next = NULL;
> + CharArrayBuffer->Next = NULL;
> if (PreArrayBuffer != NULL) {
> PreArrayBuffer->Next = CharArrayBuffer;
> }
> +
> PreArrayBuffer = CharArrayBuffer;
> }
>
> @@ -3111,16 +3173,16 @@ AddRedfishCharArray (
> **/
> EFI_STATUS
> AddRedfishNumericArray (
> - IN OUT RedfishCS_int64_Array **Head,
> - IN INT64 *NumericArray,
> - IN UINTN ArraySize
> + IN OUT RedfishCS_int64_Array **Head,
> + IN INT64 *NumericArray,
> + IN UINTN ArraySize
> )
> {
> - UINTN Index;
> - RedfishCS_int64_Array *NumericArrayBuffer;
> - RedfishCS_int64_Array *PreArrayBuffer;
> + UINTN Index;
> + RedfishCS_int64_Array *NumericArrayBuffer;
> + RedfishCS_int64_Array *PreArrayBuffer;
>
> - if (Head == NULL || NumericArray == NULL || ArraySize == 0) {
> + if ((Head == NULL) || (NumericArray == NULL) || (ArraySize == 0)) {
> return EFI_INVALID_PARAMETER;
> }
>
> @@ -3133,18 +3195,21 @@ AddRedfishNumericArray (
> }
>
> if (Index == 0) {
> - *Head = NumericArrayBuffer;
> + *Head = NumericArrayBuffer;
> }
> +
> NumericArrayBuffer->ArrayValue = AllocatePool (sizeof
> (RedfishCS_int64));
> if (NumericArrayBuffer->ArrayValue == NULL) {
> ASSERT (NumericArrayBuffer->ArrayValue != NULL);
> continue;
> }
> +
> *NumericArrayBuffer->ArrayValue = NumericArray[Index];
> - NumericArrayBuffer->Next = NULL;
> + NumericArrayBuffer->Next = NULL;
> if (PreArrayBuffer != NULL) {
> PreArrayBuffer->Next = NumericArrayBuffer;
> }
> +
> PreArrayBuffer = NumericArrayBuffer;
> }
>
> @@ -3170,11 +3235,11 @@ AddRedfishBooleanArray (
> IN UINTN ArraySize
> )
> {
> - UINTN Index;
> - RedfishCS_bool_Array *BooleanArrayBuffer;
> - RedfishCS_bool_Array *PreArrayBuffer;
> + UINTN Index;
> + RedfishCS_bool_Array *BooleanArrayBuffer;
> + RedfishCS_bool_Array *PreArrayBuffer;
>
> - if (Head == NULL || BooleanArray == NULL || ArraySize == 0) {
> + if ((Head == NULL) || (BooleanArray == NULL) || (ArraySize == 0)) {
> return EFI_INVALID_PARAMETER;
> }
>
> @@ -3187,7 +3252,7 @@ AddRedfishBooleanArray (
> }
>
> if (Index == 0) {
> - *Head = BooleanArrayBuffer;
> + *Head = BooleanArrayBuffer;
> }
>
> BooleanArrayBuffer->ArrayValue = AllocatePool (sizeof (RedfishCS_bool));
> @@ -3195,11 +3260,13 @@ AddRedfishBooleanArray (
> ASSERT (BooleanArrayBuffer->ArrayValue != NULL);
> continue;
> }
> +
> *BooleanArrayBuffer->ArrayValue = BooleanArray[Index];
> - BooleanArrayBuffer->Next = NULL;
> + BooleanArrayBuffer->Next = NULL;
> if (PreArrayBuffer != NULL) {
> PreArrayBuffer->Next = BooleanArrayBuffer;
> }
> +
> PreArrayBuffer = BooleanArrayBuffer;
> }
>
> @@ -3222,22 +3289,21 @@ AddRedfishBooleanArray (
> **/
> BOOLEAN
> CompareRedfishStringArrayValues (
> - IN RedfishCS_char_Array *Head,
> - IN CHAR8 **StringArray,
> - IN UINTN ArraySize
> + IN RedfishCS_char_Array *Head,
> + IN CHAR8 **StringArray,
> + IN UINTN ArraySize
> )
> {
> UINTN Index;
> RedfishCS_char_Array *CharArrayBuffer;
>
> - if (Head == NULL || StringArray == NULL || ArraySize == 0) {
> + if ((Head == NULL) || (StringArray == NULL) || (ArraySize == 0)) {
> return FALSE;
> }
>
> CharArrayBuffer = Head;
> - Index = 0;
> + Index = 0;
> while (CharArrayBuffer != NULL && Index < ArraySize) {
> -
> if (AsciiStrCmp (StringArray[Index], CharArrayBuffer->ArrayValue) != 0) {
> break;
> }
> @@ -3246,7 +3312,7 @@ CompareRedfishStringArrayValues (
> CharArrayBuffer = CharArrayBuffer->Next;
> }
>
> - if (CharArrayBuffer != NULL || Index < ArraySize) {
> + if ((CharArrayBuffer != NULL) || (Index < ArraySize)) {
> return FALSE;
> }
>
> @@ -3269,20 +3335,20 @@ CompareRedfishStringArrayValues (
> **/
> BOOLEAN
> CompareRedfishNumericArrayValues (
> - IN RedfishCS_int64_Array *Head,
> - IN INT64 *NumericArray,
> - IN UINTN ArraySize
> + IN RedfishCS_int64_Array *Head,
> + IN INT64 *NumericArray,
> + IN UINTN ArraySize
> )
> {
> UINTN Index;
> RedfishCS_int64_Array *NumericArrayBuffer;
>
> - if (Head == NULL || NumericArray == NULL || ArraySize == 0) {
> + if ((Head == NULL) || (NumericArray == NULL) || (ArraySize == 0)) {
> return FALSE;
> }
>
> NumericArrayBuffer = Head;
> - Index = 0;
> + Index = 0;
> while (NumericArrayBuffer != NULL && Index < ArraySize) {
> if (NumericArray[Index] != *NumericArrayBuffer->ArrayValue) {
> break;
> @@ -3292,7 +3358,7 @@ CompareRedfishNumericArrayValues (
> NumericArrayBuffer = NumericArrayBuffer->Next;
> }
>
> - if (NumericArrayBuffer != NULL || Index < ArraySize) {
> + if ((NumericArrayBuffer != NULL) || (Index < ArraySize)) {
> return FALSE;
> }
>
> @@ -3320,15 +3386,15 @@ CompareRedfishBooleanArrayValues (
> IN UINTN ArraySize
> )
> {
> - UINTN Index;
> + UINTN Index;
> RedfishCS_bool_Array *BooleanArrayBuffer;
>
> - if (Head == NULL || BooleanArray == NULL || ArraySize == 0) {
> + if ((Head == NULL) || (BooleanArray == NULL) || (ArraySize == 0)) {
> return FALSE;
> }
>
> BooleanArrayBuffer = Head;
> - Index = 0;
> + Index = 0;
> while (BooleanArrayBuffer != NULL && Index < ArraySize) {
> if (BooleanArray[Index] != *BooleanArrayBuffer->ArrayValue) {
> break;
> @@ -3338,13 +3404,79 @@ CompareRedfishBooleanArrayValues (
> BooleanArrayBuffer = BooleanArrayBuffer->Next;
> }
>
> - if (BooleanArrayBuffer != NULL || Index < ArraySize) {
> + if ((BooleanArrayBuffer != NULL) || (Index < ArraySize)) {
> return FALSE;
> }
>
> return TRUE;
> }
>
> +/**
> +
> + Check and see if "@Redfish.Settings" exist in given Payload. If found,
> return the
> + payload and URI to pending settings. Caller has to release "SettingPayload"
> and
> + "SettingUri".
> +
[Chang, Abner]
You missed one parameter for RedfishService.
Thanks.
Abner
> + @param[in] Payload Payload that may contain "@Redfish.Settings"
> + @param[out] SettingPayload Payload keeps pending settings.
> + @param[out] SettingUri URI to pending settings.
> +
> + @retval EFI_SUCCESS Pending settings is found and returned.
> + @retval Others Error happens
> +
> +**/
> +EFI_STATUS
> +GetPendingSettings (
> + IN REDFISH_SERVICE RedfishService,
> + IN REDFISH_PAYLOAD Payload,
> + OUT REDFISH_RESPONSE *SettingResponse,
> + OUT EFI_STRING *SettingUri
> + )
> +{
> + CONST CHAR8 *RedfishSettingsUriKeys[] = { "@Redfish.Settings",
> "SettingsObject", "@odata.id" };
> + EDKII_JSON_VALUE JsonValue;
> + UINTN Index;
> + EFI_STATUS Status;
> +
> + if ((RedfishService == NULL) || (Payload == NULL) || (SettingResponse ==
> NULL) || (SettingUri == NULL)) {
> + return EFI_INVALID_PARAMETER;
> + }
> +
> + *SettingUri = NULL;
> + JsonValue = RedfishJsonInPayload (Payload);
> +
> + //
> + // Seeking RedfishSettings URI link.
> + //
> + for (Index = 0; Index < ARRAY_SIZE (RedfishSettingsUriKeys); Index++) {
> + if (JsonValue == NULL) {
> + break;
> + }
> +
> + JsonValue = JsonObjectGetValue (JsonValueGetObject (JsonValue),
> RedfishSettingsUriKeys[Index]);
> + }
> +
> + if (JsonValue != NULL) {
> + //
> + // Verify RedfishSettings URI link is valid to retrieve resource or not.
> + //
> + *SettingUri = JsonValueGetUnicodeString (JsonValue);
> + if (*SettingUri == NULL) {
> + return EFI_NOT_FOUND;
> + }
> +
> + Status = GetResourceByUri (RedfishService, *SettingUri,
> SettingResponse);
> + if (EFI_ERROR (Status)) {
> + DEBUG ((DEBUG_ERROR, "%a: @Redfish.Settings exists, get resource
> from: %s failed: %r\n", __FUNCTION__, *SettingUri, Status));
> + return Status;
> + }
> +
> + return EFI_SUCCESS;
> + }
> +
> + return EFI_NOT_FOUND;
> +}
> +
> /**
>
> Check and see if any difference between two vague value set.
> @@ -3361,12 +3493,12 @@ CompareRedfishBooleanArrayValues (
> **/
> BOOLEAN
> CompareRedfishPropertyVagueValues (
> - IN RedfishCS_EmptyProp_KeyValue *RedfishVagueKeyValuePtr,
> - IN UINT32 RedfishVagueKeyValueNumber,
> - IN RedfishCS_EmptyProp_KeyValue *ConfigVagueKeyValuePtr,
> - IN UINT32 ConfigVagueKeyValueNumber
> + IN RedfishCS_EmptyProp_KeyValue *RedfishVagueKeyValuePtr,
> + IN UINT32 RedfishVagueKeyValueNumber,
> + IN RedfishCS_EmptyProp_KeyValue *ConfigVagueKeyValuePtr,
> + IN UINT32 ConfigVagueKeyValueNumber
> )
> - {
> +{
> RedfishCS_EmptyProp_KeyValue *ThisConfigVagueKeyValuePtr;
> RedfishCS_EmptyProp_KeyValue *ThisRedfishVagueKeyValuePtr;
>
> @@ -3384,13 +3516,14 @@ CompareRedfishPropertyVagueValues (
> // Loop through all key/value on Redfish service..
> //
> while (ThisRedfishVagueKeyValuePtr != NULL) {
> - if (AsciiStrCmp(ThisConfigVagueKeyValuePtr->KeyNamePtr,
> ThisRedfishVagueKeyValuePtr->KeyNamePtr) == 0) {
> + if (AsciiStrCmp (ThisConfigVagueKeyValuePtr->KeyNamePtr,
> ThisRedfishVagueKeyValuePtr->KeyNamePtr) == 0) {
> //
> // Check the type of value.
> //
> if (ThisConfigVagueKeyValuePtr->Value->DataType !=
> ThisRedfishVagueKeyValuePtr->Value->DataType) {
> return FALSE;
> }
> +
> //
> // Check the value.
> //
> @@ -3398,11 +3531,13 @@ CompareRedfishPropertyVagueValues (
> //
> // Is the string identical?
> //
> - if (AsciiStrCmp (ThisConfigVagueKeyValuePtr->Value-
> >DataValue.CharPtr,
> - ThisRedfishVagueKeyValuePtr->Value->DataValue.CharPtr
> - ) == 0) {
> + if (AsciiStrCmp (
> + ThisConfigVagueKeyValuePtr->Value->DataValue.CharPtr,
> + ThisRedfishVagueKeyValuePtr->Value->DataValue.CharPtr
> + ) == 0)
> + {
> break;
> - } else{
> + } else {
> return FALSE;
> }
> } else if (ThisConfigVagueKeyValuePtr->Value->DataType ==
> RedfishCS_Vague_DataType_Int64) {
> @@ -3421,16 +3556,20 @@ CompareRedfishPropertyVagueValues (
> return FALSE;
> }
> }
> +
> ThisRedfishVagueKeyValuePtr = ThisRedfishVagueKeyValuePtr-
> >NextKeyValuePtr;
> - };
> + }
> +
> if (ThisRedfishVagueKeyValuePtr == NULL) {
> //
> // No matched key name. Threat these two vague value set is different.
> //
> return FALSE;
> }
> +
> ThisConfigVagueKeyValuePtr = ThisConfigVagueKeyValuePtr-
> >NextKeyValuePtr;
> - };
> + }
> +
> return TRUE;
> }
>
> @@ -3448,11 +3587,10 @@ CompareRedfishPropertyVagueValues (
> EFI_STATUS
> EFIAPI
> RedfishFeatureUtilityLibConstructor (
> - IN EFI_HANDLE ImageHandle,
> - IN EFI_SYSTEM_TABLE *SystemTable
> + IN EFI_HANDLE ImageHandle,
> + IN EFI_SYSTEM_TABLE *SystemTable
> )
> {
> -
> return EFI_SUCCESS;
> }
>
> @@ -3468,8 +3606,8 @@ RedfishFeatureUtilityLibConstructor (
> EFI_STATUS
> EFIAPI
> RedfishFeatureUtilityLibDestructor (
> - IN EFI_HANDLE ImageHandle,
> - IN EFI_SYSTEM_TABLE *SystemTable
> + IN EFI_HANDLE ImageHandle,
> + IN EFI_SYSTEM_TABLE *SystemTable
> )
> {
> return EFI_SUCCESS;
> --
> 2.39.2.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#100624): https://edk2.groups.io/g/devel/message/100624
Mute This Topic: https://groups.io/mt/97315341/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list