[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