[AMD Official Use Only - General] Reviewed-by: Abner Chang <abner.ch...@amd.com>
> -----Original Message----- > From: Nickle Wang <nick...@nvidia.com> > Sent: Tuesday, October 31, 2023 3:45 PM > To: devel@edk2.groups.io > Cc: Chang, Abner <abner.ch...@amd.com>; Igor Kulchytskyy > <ig...@ami.com>; Nick Ramirez <nrami...@nvidia.com> > Subject: [edk2-redfish-client][PATCH 3/3] > RedfishClientPkg/RedfishFeatureUtilityLib: fix issues and enhancement > > Caution: This message originated from an External Source. Use proper caution > when opening attachments, clicking links, or responding. > > > -Add RedfishDebugLib to print Redfish request and response > details when PATCH and POST request return error. > -Use "%a:" in debug print to align with the style in EDK2. > -Enhance GetConfigureLang() to handle pending resource URI. > Pending resource share ths same schema as its active resource. > So we can simply remove "/Settings" from URI and search again. > -Enhancement to GetPropertyVagueValue(). This function stops > to handle remaining property while error happens. We like to > process as much as properties as we can and skip the problematic > property. > -Enhancement to MatchPropertyWithJsonContext(). For string type > of BIOS attribute, it is possible that the attribute value is > empty by default. This does not means that the resource is not > provisioned yet. > -Fix typo. > > Signed-off-by: Nickle Wang <nick...@nvidia.com> > Cc: Abner Chang <abner.ch...@amd.com> > Cc: Igor Kulchytskyy <ig...@ami.com> > Cc: Nick Ramirez <nrami...@nvidia.com> > --- > RedfishClientPkg/RedfishClientLibs.dsc.inc | 1 + > .../RedfishFeatureUtilityLib.inf | 1 + > .../RedfishFeatureUtilityInternal.h | 2 + > .../RedfishFeatureUtilityLib.c | 272 ++++++++++-------- > 4 files changed, 154 insertions(+), 122 deletions(-) > > diff --git a/RedfishClientPkg/RedfishClientLibs.dsc.inc > b/RedfishClientPkg/RedfishClientLibs.dsc.inc > index 5ea38015..5eae6711 100644 > --- a/RedfishClientPkg/RedfishClientLibs.dsc.inc > +++ b/RedfishClientPkg/RedfishClientLibs.dsc.inc > @@ -39,3 +39,4 @@ > > RedfishEventLib|RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.i > nf > > RedfishVersionLib|RedfishClientPkg/Library/RedfishVersionLib/RedfishVersio > nLib.inf > > RedfishAddendumLib|RedfishClientPkg/Library/RedfishAddendumLib/Redfis > hAddendumLib.inf > + RedfishDebugLib|RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.inf > diff --git > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib.i > nf > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib.i > nf > index 66d5dce6..fd66b8ac 100644 > --- > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib.i > nf > +++ > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib.i > nf > @@ -45,6 +45,7 @@ > UefiRuntimeServicesTableLib > PrintLib > HttpLib > + RedfishDebugLib > > [Protocols] > gEdkIIRedfishETagProtocolGuid ## CONSUMED ## > diff --git > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityInte > rnal.h > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityInte > rnal.h > index d2bd6507..5d39984c 100644 > --- > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityInte > rnal.h > +++ > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityInte > rnal.h > @@ -2,6 +2,7 @@ > Common header file for RedfishFeatureUtilityLib driver. > > (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP<BR> > + Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights > reserved. > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -28,6 +29,7 @@ > #include <Library/UefiLib.h> > #include <Library/PrintLib.h> > #include <Library/HttpLib.h> > +#include <Library/RedfishDebugLib.h> > > #include <Guid/VariableFormat.h> > > diff --git > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib. > c > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib. > c > index e1899878..13e29902 100644 > --- > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib. > c > +++ > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib. > c > @@ -133,7 +133,7 @@ SetEtagWithUri ( > > Status = RedfishLocateProtocol ((VOID **)&mEtagProtocol, > &gEdkIIRedfishETagProtocolGuid); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, fail to locate gEdkIIRedfishETagProtocolGuid: > %r\n", __func__, Status)); > + DEBUG ((DEBUG_ERROR, "%a: fail to locate > gEdkIIRedfishETagProtocolGuid: %r\n", __func__, Status)); > return Status; > } > > @@ -175,7 +175,7 @@ GetEtagWithUri ( > > Status = RedfishLocateProtocol ((VOID **)&mEtagProtocol, > &gEdkIIRedfishETagProtocolGuid); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, fail to locate gEdkIIRedfishETagProtocolGuid: > %r\n", __func__, Status)); > + DEBUG ((DEBUG_ERROR, "%a: fail to locate > gEdkIIRedfishETagProtocolGuid: %r\n", __func__, Status)); > return NULL; > } > > @@ -306,10 +306,10 @@ ApplyFeatureSettingsStringType ( > // > Status = RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang, > &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureLang, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureLang, Status)); > } else { > if (RedfishValue.Type != RedfishValueTypeString) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string type\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not string type\n", > __func__, Schema, Version, ConfigureLang)); > return EFI_DEVICE_ERROR; > } > > @@ -317,7 +317,7 @@ ApplyFeatureSettingsStringType ( > // > // Apply settings from redfish > // > - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a apply %s from %a to > %a\n", __func__, Schema, Version, ConfigureLang, RedfishValue.Value.Buffer, > FeatureValue)); > + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a apply %s from %a to > %a\n", __func__, Schema, Version, ConfigureLang, RedfishValue.Value.Buffer, > FeatureValue)); > > FreePool (RedfishValue.Value.Buffer); > RedfishValue.Value.Buffer = FeatureValue; > @@ -329,10 +329,10 @@ ApplyFeatureSettingsStringType ( > // > REDFISH_ENABLE_SYSTEM_REBOOT (); > } else { > - DEBUG ((DEBUG_ERROR, "%a, apply %s to %s failed: %r\n", __func__, > ConfigureLang, FeatureValue, Status)); > + DEBUG ((DEBUG_ERROR, "%a: apply %s to %s failed: %r\n", __func__, > ConfigureLang, FeatureValue, Status)); > } > } else { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is: %a\n", __func__, > Schema, Version, ConfigureLang, RedfishValue.Value.Buffer)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is: %a\n", __func__, > Schema, Version, ConfigureLang, RedfishValue.Value.Buffer)); > } > } > > @@ -341,7 +341,7 @@ ApplyFeatureSettingsStringType ( > > /** > > - Apply property value to UEFI HII database in numric type. > + Apply property value to UEFI HII database in numeric type. > > @param[in] Schema Property schema. > @param[in] Version Property schema version. > @@ -372,10 +372,10 @@ ApplyFeatureSettingsNumericType ( > // > Status = RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang, > &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureLang, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureLang, Status)); > } else { > if (RedfishValue.Type != RedfishValueTypeInteger) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not numeric type\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not numeric type\n", > __func__, Schema, Version, ConfigureLang)); > return EFI_DEVICE_ERROR; > } > > @@ -383,7 +383,7 @@ ApplyFeatureSettingsNumericType ( > // > // Apply settings from redfish > // > - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a apply %s from 0x%x to > 0x%x\n", __func__, Schema, Version, ConfigureLang, > RedfishValue.Value.Integer, FeatureValue)); > + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a apply %s from 0x%x to > 0x%x\n", __func__, Schema, Version, ConfigureLang, > RedfishValue.Value.Integer, FeatureValue)); > > RedfishValue.Value.Integer = (INT64)FeatureValue; > > @@ -394,10 +394,10 @@ ApplyFeatureSettingsNumericType ( > // > REDFISH_ENABLE_SYSTEM_REBOOT (); > } else { > - DEBUG ((DEBUG_ERROR, "%a, apply %s to 0x%x failed: %r\n", __func__, > ConfigureLang, FeatureValue, Status)); > + DEBUG ((DEBUG_ERROR, "%a: apply %s to 0x%x failed: %r\n", __func__, > ConfigureLang, FeatureValue, Status)); > } > } else { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is: 0x%x\n", __func__, > Schema, Version, ConfigureLang, RedfishValue.Value.Integer, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is: 0x%x\n", __func__, > Schema, Version, ConfigureLang, RedfishValue.Value.Integer)); > } > } > > @@ -437,10 +437,10 @@ ApplyFeatureSettingsBooleanType ( > // > Status = RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang, > &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureLang, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureLang, Status)); > } else { > if (RedfishValue.Type != RedfishValueTypeBoolean) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not boolean type\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not boolean type\n", > __func__, Schema, Version, ConfigureLang)); > return EFI_DEVICE_ERROR; > } > > @@ -448,7 +448,7 @@ ApplyFeatureSettingsBooleanType ( > // > // Apply settings from redfish > // > - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a apply %s from %a to > %a\n", __func__, Schema, Version, ConfigureLang, > (RedfishValue.Value.Boolean ? "True" : "False"), (FeatureValue ? "True" : > "False"))); > + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a apply %s from %a to > %a\n", __func__, Schema, Version, ConfigureLang, > (RedfishValue.Value.Boolean ? "True" : "False"), (FeatureValue ? "True" : > "False"))); > > RedfishValue.Value.Boolean = FeatureValue; > > @@ -459,10 +459,10 @@ ApplyFeatureSettingsBooleanType ( > // > REDFISH_ENABLE_SYSTEM_REBOOT (); > } else { > - DEBUG ((DEBUG_ERROR, "%a, apply %s to %a failed: %r\n", __func__, > ConfigureLang, (FeatureValue ? "True" : "False"), Status)); > + DEBUG ((DEBUG_ERROR, "%a: apply %s to %a failed: %r\n", __func__, > ConfigureLang, (FeatureValue ? "True" : "False"), Status)); > } > } else { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is: %a\n", __func__, > Schema, Version, ConfigureLang, (RedfishValue.Value.Boolean ? "True" : > "False"))); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is: %a\n", __func__, > Schema, Version, ConfigureLang, (RedfishValue.Value.Boolean ? "True" : > "False"))); > } > } > > @@ -508,13 +508,13 @@ ApplyFeatureSettingsVagueType ( > 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", __func__, Schema, Version, > ConfigureLang, Status)); > + DEBUG ((DEBUG_ERROR, "%a: Allocate memory for generate > ConfigureLang of vague key of %a.%a %s failed: %r\n", __func__, 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", __func__, Schema, Version, ConfigureLang, Status)); > + DEBUG ((DEBUG_ERROR, "%a: Convert the configureLang of vague key of > %a.%a %s failed: %r\n", __func__, Schema, Version, ConfigureLang, Status)); > FreePool (ConfigureLangAscii); > return Status; > } > @@ -529,7 +529,7 @@ ApplyFeatureSettingsVagueType ( > 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", __func__, Schema, Version, ConfigureLang, > CurrentVagueValuePtr->KeyNamePtr)); > + DEBUG ((DEBUG_ERROR, "%a: Generate ConfigureLang of vague key of > %a.%a %s %a failed!\n", __func__, Schema, Version, ConfigureLang, > CurrentVagueValuePtr->KeyNamePtr)); > goto ErrorContinue; > } > > @@ -549,7 +549,7 @@ ApplyFeatureSettingsVagueType ( > } else if (CurrentVagueValuePtr->Value->DataType == > RedfishCS_Vague_DataType_Int64) { > PropertyDatatype = RedfishValueTypeInteger; > } else { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s Unsupported Redfish property > data type\n", __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s Unsupported Redfish property > data type\n", __func__, Schema, Version, ConfigureLang)); > goto ErrorContinue; > } > > @@ -558,10 +558,10 @@ ApplyFeatureSettingsVagueType ( > // > Status = RedfishPlatformConfigGetValue (Schema, Version, > ConfigureKeyLang, &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureKeyLang, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureKeyLang, Status)); > } else { > if (RedfishValue.Type != PropertyDatatype) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s mismatched data type\n", > __func__, Schema, Version, ConfigureKeyLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s mismatched data type\n", > __func__, Schema, Version, ConfigureKeyLang)); > goto ErrorContinue; > } > > @@ -573,7 +573,7 @@ ApplyFeatureSettingsVagueType ( > // > // Apply settings from redfish > // > - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a apply %s from %a to > %a\n", __func__, Schema, Version, ConfigureKeyLang, > RedfishValue.Value.Buffer, CurrentVagueValuePtr->Value- > >DataValue.CharPtr)); > + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a apply %s from %a to > %a\n", __func__, 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); > @@ -583,10 +583,10 @@ ApplyFeatureSettingsVagueType ( > // > REDFISH_ENABLE_SYSTEM_REBOOT (); > } else { > - DEBUG ((DEBUG_ERROR, "%a, apply %a to %a failed: %r\n", __func__, > ConfigureKeyLang, CurrentVagueValuePtr->Value->DataValue.CharPtr, > Status)); > + DEBUG ((DEBUG_ERROR, "%a: apply %a to %a failed: %r\n", __func__, > ConfigureKeyLang, CurrentVagueValuePtr->Value->DataValue.CharPtr, > Status)); > } > } else { > - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a %s value is: %a\n", > __func__, Schema, Version, ConfigureKeyLang, RedfishValue.Value.Buffer)); > + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a %s value is: %a\n", > __func__, Schema, Version, ConfigureKeyLang, RedfishValue.Value.Buffer)); > } > } else if (PropertyDatatype == RedfishValueTypeBoolean) { > // > @@ -598,7 +598,7 @@ ApplyFeatureSettingsVagueType ( > // > DEBUG (( > DEBUG_MANAGEABILITY, > - "%a, %a.%a apply %s from %a to %a\n", > + "%a: %a.%a apply %s from %a to %a\n", > __func__, > Schema, > Version, > @@ -615,10 +615,10 @@ ApplyFeatureSettingsVagueType ( > // > REDFISH_ENABLE_SYSTEM_REBOOT (); > } else { > - DEBUG ((DEBUG_ERROR, "%a, apply %s to %a failed: %r\n", __func__, > ConfigureKeyLang, (*CurrentVagueValuePtr->Value->DataValue.BoolPtr ? > "True" : "False"), Status)); > + DEBUG ((DEBUG_ERROR, "%a: apply %s to %a failed: %r\n", __func__, > ConfigureKeyLang, (*CurrentVagueValuePtr->Value->DataValue.BoolPtr ? > "True" : "False"), Status)); > } > } else { > - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a %s value is: %a\n", > __func__, Schema, Version, ConfigureKeyLang, (RedfishValue.Value.Boolean ? > "True" : "False"))); > + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a %s value is: %a\n", > __func__, Schema, Version, ConfigureKeyLang, (RedfishValue.Value.Boolean ? > "True" : "False"))); > } > } else if (PropertyDatatype == RedfishValueTypeInteger) { > // > @@ -628,7 +628,7 @@ ApplyFeatureSettingsVagueType ( > // > // Apply settings from redfish > // > - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a apply %s from 0x%x to > 0x%x\n", __func__, Schema, Version, ConfigureKeyLang, > RedfishValue.Value.Integer, *CurrentVagueValuePtr->Value- > >DataValue.Int64Ptr)); > + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a apply %s from 0x%x to > 0x%x\n", __func__, Schema, Version, ConfigureKeyLang, > RedfishValue.Value.Integer, *CurrentVagueValuePtr->Value- > >DataValue.Int64Ptr)); > > RedfishValue.Value.Integer = (INT64)*CurrentVagueValuePtr->Value- > >DataValue.Int64Ptr; > Status = RedfishPlatformConfigSetValue > (Schema, Version, > ConfigureKeyLang, RedfishValue); > @@ -638,13 +638,13 @@ ApplyFeatureSettingsVagueType ( > // > REDFISH_ENABLE_SYSTEM_REBOOT (); > } else { > - DEBUG ((DEBUG_ERROR, "%a, apply %s to 0x%x failed: %r\n", > __func__, ConfigureKeyLang, *CurrentVagueValuePtr->Value- > >DataValue.Int64Ptr, Status)); > + DEBUG ((DEBUG_ERROR, "%a: apply %s to 0x%x failed: %r\n", > __func__, ConfigureKeyLang, *CurrentVagueValuePtr->Value- > >DataValue.Int64Ptr, Status)); > } > } else { > - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a %s value is: 0x%x\n", > __func__, Schema, Version, ConfigureKeyLang, RedfishValue.Value.Integer)); > + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a %s value is: 0x%x\n", > __func__, Schema, Version, ConfigureKeyLang, RedfishValue.Value.Integer)); > } > } else { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s Unsupported Redfish property > data type\n", __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s Unsupported Redfish property > data type\n", __func__, Schema, Version, ConfigureLang)); > goto ErrorContinue; > } > } > @@ -762,12 +762,12 @@ ApplyFeatureSettingsStringArrayType ( > // > Status = RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang, > &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureLang, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureLang, Status)); > return Status; > } > > if (RedfishValue.Type != RedfishValueTypeStringArray) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string array type\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not string array type\n", > __func__, Schema, Version, ConfigureLang)); > return EFI_DEVICE_ERROR; > } > > @@ -778,7 +778,7 @@ ApplyFeatureSettingsStringArrayType ( > // > // Apply settings from redfish > // > - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a apply %s for array\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a apply %s for array\n", > __func__, Schema, Version, ConfigureLang)); > FreeArrayTypeRedfishValue (&RedfishValue); > > // > @@ -823,10 +823,10 @@ ApplyFeatureSettingsStringArrayType ( > // > REDFISH_ENABLE_SYSTEM_REBOOT (); > } else { > - DEBUG ((DEBUG_ERROR, "%a, apply %s array failed: %r\n", __func__, > ConfigureLang, Status)); > + DEBUG ((DEBUG_ERROR, "%a: apply %s array failed: %r\n", __func__, > ConfigureLang, Status)); > } > } else { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s array value has no change\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s array value has no change\n", > __func__, Schema, Version, ConfigureLang)); > } > > for (Index = 0; Index < RedfishValue.ArrayCount; Index++) { > @@ -873,12 +873,12 @@ ApplyFeatureSettingsNumericArrayType ( > // > Status = RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang, > &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureLang, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureLang, Status)); > return Status; > } > > if (RedfishValue.Type != RedfishValueTypeIntegerArray) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string array type\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not string array type\n", > __func__, Schema, Version, ConfigureLang)); > return EFI_DEVICE_ERROR; > } > > @@ -889,7 +889,7 @@ ApplyFeatureSettingsNumericArrayType ( > // > // Apply settings from redfish > // > - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a apply %s for array\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a apply %s for array\n", > __func__, Schema, Version, ConfigureLang)); > FreeArrayTypeRedfishValue (&RedfishValue); > > // > @@ -928,10 +928,10 @@ ApplyFeatureSettingsNumericArrayType ( > // > REDFISH_ENABLE_SYSTEM_REBOOT (); > } else { > - DEBUG ((DEBUG_ERROR, "%a, apply %s array failed: %r\n", __func__, > ConfigureLang, Status)); > + DEBUG ((DEBUG_ERROR, "%a: apply %s array failed: %r\n", __func__, > ConfigureLang, Status)); > } > } else { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s array value has no change\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s array value has no change\n", > __func__, Schema, Version, ConfigureLang)); > } > > FreePool (RedfishValue.Value.IntegerArray); > @@ -946,7 +946,7 @@ ApplyFeatureSettingsNumericArrayType ( > @param[in] Schema Property schema. > @param[in] Version Property schema version. > @param[in] ConfigureLang Configure language refers to this property. > - @param[in] ArrayHead Head of Redfich CS boolean array value. > + @param[in] ArrayHead Head of Redfish CS boolean array value. > > @retval EFI_SUCCESS New value is applied successfully. > @retval Others Errors occur. > @@ -974,12 +974,12 @@ ApplyFeatureSettingsBooleanArrayType ( > // > Status = RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang, > &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureLang, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, > Version, ConfigureLang, Status)); > return Status; > } > > if (RedfishValue.Type != RedfishValueTypeBooleanArray) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string array type\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not string array type\n", > __func__, Schema, Version, ConfigureLang)); > return EFI_DEVICE_ERROR; > } > > @@ -990,7 +990,7 @@ ApplyFeatureSettingsBooleanArrayType ( > // > // Apply settings from redfish > // > - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a apply %s for array\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a apply %s for array\n", > __func__, Schema, Version, ConfigureLang)); > FreeArrayTypeRedfishValue (&RedfishValue); > > // > @@ -1029,10 +1029,10 @@ ApplyFeatureSettingsBooleanArrayType ( > // > REDFISH_ENABLE_SYSTEM_REBOOT (); > } else { > - DEBUG ((DEBUG_ERROR, "%a, apply %s array failed: %r\n", __func__, > ConfigureLang, Status)); > + DEBUG ((DEBUG_ERROR, "%a: apply %s array failed: %r\n", __func__, > ConfigureLang, Status)); > } > } else { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s array value has no change\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s array value has no change\n", > __func__, Schema, Version, ConfigureLang)); > } > > FreePool (RedfishValue.Value.BooleanArray); > @@ -1044,7 +1044,7 @@ ApplyFeatureSettingsBooleanArrayType ( > > Read redfish resource by given resource URI. > > - @param[in] Service Redfish srvice instacne to make query. > + @param[in] Service Redfish service instance to make query. > @param[in] ResourceUri Target resource URI. > @param[out] Response HTTP response from redfish service. > > @@ -1080,7 +1080,7 @@ GetResourceByUri ( > Response > ); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, RedfishGetByUri to %a failed: %r\n", > __func__, AsciiResourceUri, Status)); > + DEBUG ((DEBUG_ERROR, "%a: RedfishGetByUri to %a failed: %r\n", > __func__, AsciiResourceUri, Status)); > if (Response->Payload != NULL) { > RedfishDumpPayload (Response->Payload); > RedfishFreeResponse ( > @@ -1110,7 +1110,7 @@ GetResourceByUri ( > @param[out] ArraySignatureClose String to the close of array > signature. > > @retval EFI_SUCCESS Index is found. > - @retval EFI_NOT_FOUND The non-array configure language string > is > retured. > + @retval EFI_NOT_FOUND The non-array configure language string > is > returned. > @retval EFI_INVALID_PARAMETER The format of input ConfigureLang is > wrong. > @retval Others Errors occur. > > @@ -1169,7 +1169,7 @@ IsRedpathArray ( > > /** > > - Get number of node from the string. Node is seperated by '/'. > + Get number of node from the string. Node is separated by '/'. > > @param[in] NodeString The node string to parse. > > @@ -1207,10 +1207,10 @@ GetNumberOfRedpathNodes ( > > @param[in] NodeString The node string to parse. > @param[in] Index Zero-based index of the node. > - @param[out] EndOfNodePtr Pointer to receive the poitner to > + @param[out] EndOfNodePtr Pointer to receive the pointer to > the last character of node string. > > - @retval EFI_STRING the begining of the node string. > + @retval EFI_STRING the beginning of the node string. > > **/ > EFI_STRING > @@ -1263,7 +1263,7 @@ GetRedpathNodeByIndex ( > @param[out] Index The array index number. > > @retval EFI_SUCCESS Index is found. > - @retval EFI_NOT_FOUND The non-array configure language string > is > retured. > + @retval EFI_NOT_FOUND The non-array configure language string > is > returned. > @retval EFI_INVALID_PARAMETER The format of input ConfigureLang is > wrong. > @retval Others Errors occur. > > @@ -1303,7 +1303,7 @@ GetArrayIndexFromArrayTypeConfigureLang ( > *Index = StrDecimalToUintn (ArrayOpenStr + StrLen > (BIOS_CONFIG_TO_REDFISH_REDPATH_ARRAY_START_SIGNATURE)); > > // > - // Resotre the '}' character and remove rest of string. > + // Restore the '}' character and remove rest of string. > // > ArrayCloseStr[0] = L'}'; > ArrayCloseStr[1] = '\0'; > @@ -1359,7 +1359,7 @@ CopyConfiglanguageList ( > 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", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: Fail to allocate memory for > REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG.\n", __func__)); > return EFI_OUT_OF_RESOURCES; > } > > @@ -1471,7 +1471,7 @@ DestroyConfiglanguageList ( > > @param[in] DestConfigLang Pointer to the node's configure language > string. > The memory pointed by ConfigLang must be > allocated > - through memory allocation interface. > Becasue we will > replace > + through memory allocation interface. > Because we will > replace > the pointer in this function. > @param[in] MaxtLengthConfigLang The maximum length of ConfigLang. > @param[in] ConfigLangInstance Pointer to Collection member instance. > @@ -1518,7 +1518,7 @@ SetResourceConfigLangMemberInstance ( > if (MaxtLengthConfigLang < MaxStrLength) { > NewConfigLang = (EFI_STRING)AllocateZeroPool (MaxStrLength); > if (NewConfigLang == NULL) { > - DEBUG ((DEBUG_ERROR, "%a, Fail to allocate memory for > NewConfigLang.\n", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: Fail to allocate memory for > NewConfigLang.\n", __func__)); > return EFI_OUT_OF_RESOURCES; > } > } > @@ -1601,7 +1601,7 @@ RedfishFeatureGetUnifiedArrayTypeConfigureLang > ( > > Status = RedfishPlatformConfigGetConfigureLang (Schema, Version, Pattern, > &ConfigureLangList, &Count); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, RedfishFeatureGetConfigureLangRegex > failed: %r\n", __func__, Status)); > + DEBUG ((DEBUG_ERROR, "%a: RedfishFeatureGetConfigureLangRegex > failed: %r\n", __func__, Status)); > return Status; > } > > @@ -1815,6 +1815,13 @@ CreatePayloadToPatchResource ( > Status = RedfishPatchToPayload (TargetPayload, Payload, &PostResponse); > if (EFI_ERROR (Status)) { > DEBUG ((DEBUG_ERROR, "%a:%d Failed to PATCH payload to Redfish > service.\n", __func__, __LINE__)); > + > + DEBUG_CODE_BEGIN (); > + DEBUG ((DEBUG_ERROR, "%a: Request:\n", __func__)); > + DumpRedfishPayload (DEBUG_ERROR, Payload); > + DEBUG ((DEBUG_ERROR, "%a: Response:\n", __func__)); > + DumpRedfishResponse (__func__, DEBUG_ERROR, &PostResponse); > + DEBUG_CODE_END (); > goto EXIT_FREE_JSON_VALUE; > } > > @@ -1886,12 +1893,20 @@ 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", __func__, __LINE__)); > + DEBUG ((DEBUG_ERROR, "%a:%d Failed to POST payload to Redfish > service.\n", __func__, __LINE__)); > + > + DEBUG_CODE_BEGIN (); > + DEBUG ((DEBUG_ERROR, "%a: Request:\n", __func__)); > + DumpRedfishPayload (DEBUG_ERROR, Payload); > + DEBUG ((DEBUG_ERROR, "%a: Response:\n", __func__)); > + DumpRedfishResponse (__func__, DEBUG_ERROR, &PostResponse); > + DEBUG_CODE_END (); > + > goto EXIT_FREE_JSON_VALUE; > } > > // > - // per Redfish spec. the URL of new eresource will be returned in > "Location" > header. > + // per Redfish spec. the URL of new resource will be returned in "Location" > header. > // > Status = GetEtagAndLocation (&PostResponse, Etag, Location); > if (EFI_ERROR (Status)) { > @@ -1941,11 +1956,11 @@ RedfishGetUri ( > > Status = RedfishLocateProtocol ((VOID **)&mConfigLangMapProtocol, > &gEdkIIRedfishConfigLangMapProtocolGuid); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, fail to locate > gEdkIIRedfishConfigLangMapProtocolGuid: %r\n", __func__, Status)); > + DEBUG ((DEBUG_ERROR, "%a: fail to locate > gEdkIIRedfishConfigLangMapProtocolGuid: %r\n", __func__, Status)); > return NULL; > } > > - DEBUG ((REDFISH_DEBUG_TRACE, "%a, Get: %s\n", __func__, ConfigLang)); > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: Get: %s\n", __func__, ConfigLang)); > > CloseBracket = StrStr (ConfigLang, L"{"); > if (CloseBracket == NULL) { > @@ -1986,7 +2001,7 @@ RedfishGetUri ( > // Invalid format. No '}' found > // > if (*Target == '\0') { > - DEBUG ((DEBUG_ERROR, "%a, invalid format: %s\n", __func__, > ConfigLang)); > + DEBUG ((DEBUG_ERROR, "%a: invalid format: %s\n", __func__, > ConfigLang)); > FreePool (ResultStr); > return NULL; > } > @@ -2012,13 +2027,13 @@ RedfishGetUri ( > &Found > ); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, Can not find: %s\n", __func__, TempStr)); > + DEBUG ((DEBUG_ERROR, "%a: Can not find: %s\n", __func__, TempStr)); > FreePool (ResultStr); > FreePool (TempStr); > return NULL; > } > > - DEBUG ((REDFISH_DEBUG_TRACE, "%a, Found: %s\n", __func__, Found)); > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: Found: %s\n", __func__, Found)); > > // > // Keep result in final string pool > @@ -2040,7 +2055,7 @@ RedfishGetUri ( > StrCatS (ResultStr, MAX_REDFISH_URL_LEN, Head); > } > > - DEBUG ((REDFISH_DEBUG_TRACE, "%a, return: %s\n", __func__, > ResultStr)); > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: return: %s\n", __func__, > ResultStr)); > > return ResultStr; > } > @@ -2067,11 +2082,11 @@ RedfishGetConfigLanguage ( > return NULL; > } > > - DEBUG ((REDFISH_DEBUG_TRACE, "%a, search config lang for URI: %s\n", > __func__, Uri)); > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: search config lang for URI: %s\n", > __func__, Uri)); > > Status = RedfishLocateProtocol ((VOID **)&mConfigLangMapProtocol, > &gEdkIIRedfishConfigLangMapProtocolGuid); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, fail to locate > gEdkIIRedfishConfigLangMapProtocolGuid: %r\n", __func__, Status)); > + DEBUG ((DEBUG_ERROR, "%a: fail to locate > gEdkIIRedfishConfigLangMapProtocolGuid: %r\n", __func__, Status)); > return NULL; > } > > @@ -2088,7 +2103,7 @@ RedfishGetConfigLanguage ( > > /** > > - Return config language from given URI and prperty name. It's call > responsibility to release returned buffer. > + Return config language from given URI and property name. It's call > responsibility to release returned buffer. > > @param[in] Uri The URI to match > @param[in] PropertyName The property name of resource. This is optional. > @@ -2108,6 +2123,7 @@ GetConfigureLang ( > EFI_STRING ResultStr; > EFI_STRING UnicodeUri; > EFI_STATUS Status; > + EFI_STRING StrFound; > > if (IS_EMPTY_STRING (Uri)) { > return NULL; > @@ -2126,6 +2142,18 @@ GetConfigureLang ( > } > > ConfigLang = RedfishGetConfigLanguage (UnicodeUri); > + if (ConfigLang == NULL) { > + // > + // @Redfish.Settings share the same schema as its parent. > + // Remove "Settings" and try again. > + // > + StrFound = StrStr (UnicodeUri, L"/Settings"); > + if (StrFound != NULL) { > + StrFound[0] = L'\0'; > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: \"Settings\" found in URI, try: > %s\n", __func__, UnicodeUri)); > + ConfigLang = RedfishGetConfigLanguage (UnicodeUri); > + } > + } > > FreePool (UnicodeUri); > > @@ -2158,7 +2186,7 @@ GetConfigureLang ( > @param[in] ConfigLang ConfigLang to save > @param[in] Uri Redfish Uri to save > > - @retval EFI_INVALID_PARAMETR SystemId is NULL or EMPTY > + @retval EFI_INVALID_PARAMETER SystemId is NULL or EMPTY > @retval EFI_SUCCESS Redfish uri is saved > > **/ > @@ -2176,11 +2204,11 @@ RedfisSetRedfishUri ( > > Status = RedfishLocateProtocol ((VOID **)&mConfigLangMapProtocol, > &gEdkIIRedfishConfigLangMapProtocolGuid); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, fail to locate > gEdkIIRedfishConfigLangMapProtocolGuid: %r\n", __func__, Status)); > + DEBUG ((DEBUG_ERROR, "%a: fail to locate > gEdkIIRedfishConfigLangMapProtocolGuid: %r\n", __func__, Status)); > return Status; > } > > - DEBUG ((REDFISH_DEBUG_TRACE, "%a, Saved: %s -> %s\n", __func__, > ConfigLang, Uri)); > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: Saved: %s -> %s\n", __func__, > ConfigLang, Uri)); > > return mConfigLangMapProtocol->Set (mConfigLangMapProtocol, > ConfigLang, Uri); > } > @@ -2228,7 +2256,7 @@ GetOdataId ( > > /** > > - Get the property name by given Configure Langauge. > + Get the property name by given Configure Language. > > @param[in] ResourceUri URI of root of resource. > @param[in] ConfigureLang Configure Language string. > @@ -2261,7 +2289,7 @@ GetPropertyFromConfigureLang ( > } > > // > - // The ConigLang has no '{}' > + // The ConfigLang has no '{}' > // > if (GetNumberOfRedpathNodes (ConfigureLang) == 1) { > return NULL; > @@ -2321,7 +2349,7 @@ GetPropertyStringValue ( > UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang, > PropertyName); > Status = RedfishPlatformConfigGetValue (Schema, Version, > ConfigureLangBuffer, &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangBuffer, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangBuffer, Status)); > FreePool (ConfigureLangBuffer); > return NULL; > } > @@ -2329,7 +2357,7 @@ GetPropertyStringValue ( > FreePool (ConfigureLangBuffer); > > if (RedfishValue.Type != RedfishValueTypeString) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string type\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not string type\n", > __func__, Schema, Version, ConfigureLang)); > return NULL; > } > > @@ -2382,7 +2410,7 @@ GetPropertyNumericValue ( > UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang, > PropertyName); > Status = RedfishPlatformConfigGetValue (Schema, Version, > ConfigureLangBuffer, &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangBuffer, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangBuffer, Status)); > FreePool (ConfigureLangBuffer); > return NULL; > } > @@ -2390,7 +2418,7 @@ GetPropertyNumericValue ( > FreePool (ConfigureLangBuffer); > > if (RedfishValue.Type != RedfishValueTypeInteger) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not numeric type\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not numeric type\n", > __func__, Schema, Version, ConfigureLang)); > return NULL; > } > > @@ -2447,7 +2475,7 @@ GetPropertyBooleanValue ( > UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang, > PropertyName); > Status = RedfishPlatformConfigGetValue (Schema, Version, > ConfigureLangBuffer, &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangBuffer, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangBuffer, Status)); > FreePool (ConfigureLangBuffer); > return NULL; > } > @@ -2455,7 +2483,7 @@ GetPropertyBooleanValue ( > FreePool (ConfigureLangBuffer); > > if (RedfishValue.Type != RedfishValueTypeBoolean) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not boolean type\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not boolean type\n", > __func__, Schema, Version, ConfigureLang)); > return NULL; > } > > @@ -2544,14 +2572,14 @@ GetPropertyStringArrayValue ( > BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN; > ConfigureLangBuffer = AllocatePool (BufferSize); > if (ConfigureLangBuffer == NULL) { > - DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: out of resource\n", __func__)); > return NULL; > } > > UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang, > PropertyName); > Status = RedfishPlatformConfigGetValue (Schema, Version, > ConfigureLangBuffer, &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangBuffer, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangBuffer, Status)); > FreePool (ConfigureLangBuffer); > return NULL; > } > @@ -2559,13 +2587,13 @@ GetPropertyStringArrayValue ( > FreePool (ConfigureLangBuffer); > > if (RedfishValue.Type != RedfishValueTypeStringArray) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string array type\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not string array type\n", > __func__, Schema, Version, ConfigureLang)); > return NULL; > } > > StringArray = AllocatePool (sizeof (CHAR8 *) * RedfishValue.ArrayCount); > if (StringArray == NULL) { > - DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: out of resource\n", __func__)); > return NULL; > } > > @@ -2618,14 +2646,14 @@ GetPropertyNumericArrayValue ( > BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN; > ConfigureLangBuffer = AllocatePool (BufferSize); > if (ConfigureLangBuffer == NULL) { > - DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: out of resource\n", __func__)); > return NULL; > } > > UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang, > PropertyName); > Status = RedfishPlatformConfigGetValue (Schema, Version, > ConfigureLangBuffer, &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangBuffer, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangBuffer, Status)); > FreePool (ConfigureLangBuffer); > return NULL; > } > @@ -2633,13 +2661,13 @@ GetPropertyNumericArrayValue ( > FreePool (ConfigureLangBuffer); > > if (RedfishValue.Type != RedfishValueTypeIntegerArray) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string array type\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not string array type\n", > __func__, Schema, Version, ConfigureLang)); > return NULL; > } > > IntegerArray = AllocatePool (sizeof (INT64) * RedfishValue.ArrayCount); > if (IntegerArray == NULL) { > - DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: out of resource\n", __func__)); > return NULL; > } > > @@ -2692,14 +2720,14 @@ GetPropertyBooleanArrayValue ( > BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN; > ConfigureLangBuffer = AllocatePool (BufferSize); > if (ConfigureLangBuffer == NULL) { > - DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: out of resource\n", __func__)); > return NULL; > } > > UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang, > PropertyName); > Status = RedfishPlatformConfigGetValue (Schema, Version, > ConfigureLangBuffer, &RedfishValue); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangBuffer, Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangBuffer, Status)); > FreePool (ConfigureLangBuffer); > return NULL; > } > @@ -2707,13 +2735,13 @@ GetPropertyBooleanArrayValue ( > FreePool (ConfigureLangBuffer); > > if (RedfishValue.Type != RedfishValueTypeBooleanArray) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string array type\n", > __func__, Schema, Version, ConfigureLang)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not string array type\n", > __func__, Schema, Version, ConfigureLang)); > return NULL; > } > > BooleanArray = AllocatePool (sizeof (INT64) * RedfishValue.ArrayCount); > if (BooleanArray == NULL) { > - DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: out of resource\n", __func__)); > return NULL; > } > > @@ -2784,19 +2812,19 @@ NewEmptyPropKeyValueFromRedfishValue ( > > KeyNameChar = StrUnicodeToAscii (KeyName); > if (KeyNameChar == NULL) { > - DEBUG ((DEBUG_ERROR, "%a, Failed to convert unicode to ASCII.\n", > __func__)); > + DEBUG ((DEBUG_ERROR, "%a: Failed to convert unicode to ASCII.\n", > __func__)); > 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", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: Failed to allocate memory for > EmptyPropKeyValue\n", __func__)); > return NULL; > } > > VagueValue = (RedfishCS_Vague *)AllocateZeroPool (sizeof > (RedfishCS_Vague)); > if (VagueValue == NULL) { > - DEBUG ((DEBUG_ERROR, "%a, Failed to allocate memory for > VagueValue\n", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: Failed to allocate memory for > VagueValue\n", __func__)); > FreePool (EmptyPropKeyValue); > return NULL; > } > @@ -2805,7 +2833,7 @@ NewEmptyPropKeyValueFromRedfishValue ( > VagueValue->DataType = RedfishCS_Vague_DataType_Bool; > DataSize = sizeof (BOOLEAN); > // > - // Redfish JSON to C strcuture converter uses > + // Redfish JSON to C structure converter uses > // "int" for the BOOLEAN. > // > Bool32 = (INT32)RedfishValue->Value.Boolean; > @@ -2819,7 +2847,7 @@ NewEmptyPropKeyValueFromRedfishValue ( > DataSize = AsciiStrSize (RedfishValue->Value.Buffer); > Data = (VOID *)RedfishValue->Value.Buffer; > } else { > - DEBUG ((DEBUG_ERROR, "%a, wrong type of RedfishValue: %x\n", > __func__, RedfishValue->Type)); > + DEBUG ((DEBUG_ERROR, "%a: wrong type of RedfishValue: %x\n", > __func__, RedfishValue->Type)); > FreePool (VagueValue); > FreePool (EmptyPropKeyValue); > return NULL; > @@ -2866,18 +2894,21 @@ GetPropertyVagueValue ( > UINTN BufferSize; > UINTN ConfigListCount; > UINTN ConfigListCountIndex; > + UINTN ListCount; > > if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) || > IS_EMPTY_STRING (ConfigureLang) || IS_EMPTY_STRING (PropertyName)) { > return NULL; > } > > + ListCount = 0; > + FirstEmptyPropKeyValueList = 0; > // > // Configure Language buffer. > // > BufferSize = sizeof (CHAR16) * MAX_CONF_LANG_LEN; > ConfigureLangBuffer = AllocatePool (BufferSize); > if (ConfigureLangBuffer == NULL) { > - DEBUG ((DEBUG_ERROR, "%a, Failed to allocate memory for > ConfigureLangBuffer\n", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: Failed to allocate memory for > ConfigureLangBuffer\n", __func__)); > return NULL; > } > > @@ -2889,7 +2920,7 @@ GetPropertyVagueValue ( > 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", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: Failed to allocate memory for > SearchPattern\n", __func__)); > FreePool (ConfigureLangBuffer); > return NULL; > } > @@ -2899,21 +2930,23 @@ GetPropertyVagueValue ( > StrCatS (SearchPattern, BufferSize, L"/.*"); > Status = RedfishPlatformConfigGetConfigureLang (Schema, Version, > SearchPattern, &ConfigureLangList, &ConfigListCount); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, %a.%a Get configure language of vague type > values of %s failed: %r\n", __func__, Schema, Version, ConfigureLangBuffer, > Status)); > + DEBUG ((DEBUG_ERROR, "%a: %a.%a Get configure language of vague type > values of %s failed: %r\n", __func__, Schema, Version, ConfigureLangBuffer, > Status)); > goto ErrorLeave; > } > > // > // Build up the list of RedfishCS_EmptyProp_KeyValue. > // > + ListCount = 0; > ConfigListCountIndex = 0; > PreEmptyPropKeyValueList = NULL; > FirstEmptyPropKeyValueList = NULL; > while (ConfigListCountIndex < ConfigListCount) { > 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", __func__, Schema, Version, ConfigureLangList[ConfigListCountIndex], > Status)); > - goto ErrorLeave; > + DEBUG ((DEBUG_ERROR, "%a: %a.%a query current setting for %s failed: > %r\n", __func__, Schema, Version, ConfigureLangList[ConfigListCountIndex], > Status)); > + ConfigListCountIndex++; > + continue; > } > > // > @@ -2925,7 +2958,7 @@ GetPropertyVagueValue ( > // > EmptyPropKeyValueList = NewEmptyPropKeyValueFromRedfishValue > (KeyName, &RedfishValue); > if (EmptyPropKeyValueList == NULL) { > - DEBUG ((DEBUG_ERROR, "%a, Failed to create an entry of > EmptyPropKeyValueList\n", __func__)); > + DEBUG ((DEBUG_ERROR, "%a: Failed to create an entry of > EmptyPropKeyValueList\n", __func__)); > ConfigListCountIndex++; > continue; > } > @@ -2941,6 +2974,7 @@ GetPropertyVagueValue ( > > PreEmptyPropKeyValueList = EmptyPropKeyValueList; > ConfigListCountIndex++; > + ListCount++; > } > > goto LeaveFunction; > @@ -2963,7 +2997,7 @@ LeaveFunction: > > FreePool (ConfigureLangList); > > - *NumberOfValues = (UINT32)ConfigListCount; > + *NumberOfValues = (UINT32)ListCount; > return FirstEmptyPropKeyValueList; > } > > @@ -3030,7 +3064,7 @@ CheckEtag ( > EtagInDb = NULL; > EtagInDb = GetEtagWithUri (Uri); > if (EtagInDb == NULL) { > - DEBUG ((REDFISH_DEBUG_TRACE, "%a, no ETAG record cound be found > for: %s\n", __func__, Uri)); > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: no ETAG record could be found for: > %s\n", __func__, Uri)); > return FALSE; > } > > @@ -3173,12 +3207,6 @@ MatchPropertyWithJsonContext ( > MatchObj = NULL; > } > > - break; > - case EdkiiJsonTypeString: > - if (IS_EMPTY_STRING (JsonValueGetString (MatchObj))) { > - MatchObj = NULL; > - } > - > break; > case EdkiiJsonTypeNull: > MatchObj = NULL; > @@ -3195,7 +3223,7 @@ MatchPropertyWithJsonContext ( > > /** > > - Create string array and append to arry node in Redfish JSON convert format. > + Create string array and append to array node in Redfish JSON convert > format. > > @param[in,out] Head The head of string array. > @param[in] StringArray Input string array. > @@ -3246,7 +3274,7 @@ AddRedfishCharArray ( > > /** > > - Create numeric array and append to arry node in Redfish JSON convert > format. > + Create numeric array and append to array node in Redfish JSON convert > format. > > @param[in,out] Head The head of string array. > @param[in] NumericArray Input numeric array. > @@ -3303,7 +3331,7 @@ AddRedfishNumericArray ( > > /** > > - Create boolean array and append to arry node in Redfish JSON convert > format. > + Create boolean array and append to array node in Redfish JSON convert > format. > > @param[in,out] Head The head of string array. > @param[in] BooleanArray Input boolean array. > @@ -3409,7 +3437,7 @@ CompareRedfishStringArrayValues ( > Check and see if value in Redfish numeric array are all the same as the one > from HII configuration. > > - @param[in] Head The head of Redfish CS numeraic array. > + @param[in] Head The head of Redfish CS numeric array. > @param[in] NumericArray Input numeric array. > @param[in] ArraySize The size of NumericArray. > > @@ -3502,9 +3530,9 @@ CompareRedfishBooleanArrayValues ( > This is just a simple check. > > @param[in] RedfishVagueKeyValuePtr The vague key value sets on > Redfish service. > - @param[in] RedfishVagueKeyValueNumber The numebr of vague key value > sets > + @param[in] RedfishVagueKeyValueNumber The number of vague key > value sets > @param[in] ConfigVagueKeyValuePtr The vague configuration on > platform. > - @param[in] ConfigVagueKeyValueNumber The numebr of vague key value > sets > + @param[in] ConfigVagueKeyValueNumber The number of vague key value > sets > > @retval TRUE All values are the same. > FALSE There is some difference. > @@ -3599,7 +3627,7 @@ CompareRedfishPropertyVagueValues ( > @param[in] ImageHandle The image handle. > @param[in] SystemTable The system table. > > - @retval EFI_SUCEESS Install Boot manager menu success. > + @retval EFI_SUCCESS Install Boot manager menu success. > @retval Other Return error status. > > **/ > -- > 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#110483): https://edk2.groups.io/g/devel/message/110483 Mute This Topic: https://groups.io/mt/102293054/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-