From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 9954A7803D8 for ; Tue, 31 Oct 2023 07:45:38 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=BhQYh0Aj201wDFcDPu/TIuieosIuHEpOMrxGq6wnTwQ=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:Received-SPF:From:To:CC:Subject:Date:Message-ID:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1698738337; v=1; b=CV6GZoj1Wr39AwYYelmzHW2q7AGhBOdeGC1S5e8sVQVDFe/3ZFP3RhXvDARRRj09vhaoFWGW sdB+dQ53EervIt+HKEnK931/HWH+o+9zYJywb85r7tTO4VqUV2X1I1br29+hPDmXdlgOxvQDwEA iGzRTvan6wkWr8GwbRTsf4HY= X-Received: by 127.0.0.2 with SMTP id JdzpYY7687511xu12GBZPt2A; Tue, 31 Oct 2023 00:45:37 -0700 X-Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.48]) by mx.groups.io with SMTP id smtpd.web10.181138.1698738336520338484 for ; Tue, 31 Oct 2023 00:45:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CyuOHQ/W75Z8l32Oog7ywtrYZwCF7Lqgh6k5YFRDSVTpQdqP9bRbtFnH1/vlXrk3GXTweewnFvL4Y8pqoxx2csMLzk5RkP4zgpMK0oZOwa03LIDR4F0rOurr96l1aBwLV9UWWMLRZytZ6SCt/VmH5hDcuDVvdrBSXRUlTrEE37lPP6wp94KLTzwCH0C7ejhEzavHoDEH/MDs1VXCws6y4fED1u7rGTqzLuipNz3wRww/LwNPkaqW1FX4HZHvLGrMLru7VHJx+5wrg3i7VmdfjuWVEGAoAPNm4kRe0yWUkBIEjquwyc5JYVo7pdcZb+hipekD8qO4lLw1sFV7h6rqcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UYb/eyCM4cFS6sPtEKtOXuF9HO1is+5jgZ/S1jo07Xw=; b=FpLk6PrUyDXvSKhYcplj2luiUYy7XiId4iNFu1hGoj0+IcrcyWQBj8NXg5/yDiFkEfRezzrUVhNWdCphRz6dLFmXR1ih2ioFfRWuigDi7SPmqHqI2cNV/c4xLhEy/VB+lGBkvwNq2h9eKmOG8oF2D2yJ5Zu8SrMwKJ/8LLf3l5NsObyEGFXaSMkMKVh1/C+vIAMxmUL2oxxw6Azfq/06KWpe7+QRtCtphQTJedIrv57m2Pq11C/TE/usU2ONUIuY8W820oUWdmQVPpUNl8VUPxSMC3hDlMC9SvPHQxkgQaEBjpjocGl12W8g/LALPgXyoiRnCfXZLK19MvoMyV3j9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) X-Received: from SA9PR11CA0016.namprd11.prod.outlook.com (2603:10b6:806:6e::21) by LV8PR12MB9405.namprd12.prod.outlook.com (2603:10b6:408:1fa::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.19; Tue, 31 Oct 2023 07:45:19 +0000 X-Received: from SA2PEPF00001509.namprd04.prod.outlook.com (2603:10b6:806:6e:cafe::73) by SA9PR11CA0016.outlook.office365.com (2603:10b6:806:6e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.29 via Frontend Transport; Tue, 31 Oct 2023 07:45:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C X-Received: from mail.nvidia.com (216.228.118.232) by SA2PEPF00001509.mail.protection.outlook.com (10.167.242.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.19 via Frontend Transport; Tue, 31 Oct 2023 07:45:18 +0000 X-Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 31 Oct 2023 00:45:09 -0700 X-Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 31 Oct 2023 00:45:09 -0700 X-Received: from NV-CL38DL3.nvidia.com (10.127.8.10) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.41 via Frontend Transport; Tue, 31 Oct 2023 00:45:08 -0700 From: "Nickle Wang via groups.io" To: CC: Abner Chang , Igor Kulchytskyy , "Nick Ramirez" Subject: [edk2-devel] [edk2-redfish-client][PATCH 3/3] RedfishClientPkg/RedfishFeatureUtilityLib: fix issues and enhancement Date: Tue, 31 Oct 2023 15:45:08 +0800 Message-ID: <20231031074508.23718-1-nicklew@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00001509:EE_|LV8PR12MB9405:EE_ X-MS-Office365-Filtering-Correlation-Id: 25f99d42-5155-47c9-9282-08dbd9e5543e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: Hn1EkztG83X0ICvLLe2i6riahZeGhqktYZwHyZBnXyaA0yGj5q/yx9PhRU9vRJ8gxfcI8EnpbvQt7PecPQJUmd95qtc6Y3eLsqGMKWj/7NiJbjxCNsvNbyL0aMC/J2Z6NI+Z6AN7T3x/07oomIHpikBUR5oJOP8063BPDEUSiGNnYhfp1sQM4DDAkF4pcbc4VzYFe4PDBFBVcT+a8FPKWfWoPXH+6H5Z+ZI0dnKFeZSxoDAsNtFSkSDGlxa1AHWl3UiHGLTiaw6N/b0HnWBJZNHgxP+Jbb10LCyFlhxISMlr01jONHyYs6rKp1e+d7d0Q5IPQ4idgVHLU5WXnJqsjM2UfnmLEWXB+ardk2fssx+kbV+SKHz4+zcjsNr9ICrFfiz8CdFfJMbqzE99oUX8d+K+CHAR/FmtC/Pbm/9Y+4kb++BBnEJyiRUMHB60YP3eMiXiosEuUX0e9sQ02pxeShOoVYkXirekBcd8gF/nPi8Plw0NCfJ9oUurbqH7Q3G/bclmaNlPVXGCxt5SZuuVNqJbTR9EIK6xNiNj6s7rvAtjY6f8bpS6j5oaVjKvSjwJV2ARm9dBLBH9WZadP0p1+Ms8ng1midsgCIO9Qa12GzAtPK1bsBMQFjRQKpfb42Rup9UKYhydLhUdUEQZrCwfWBOtlJ+8BRF+nEQOGSibSo+JzQqBmA+PJx70NJntRIpdEUNjbTS4mFCts42YXs1eLeG0USkp7Om7rxw2PZZHjQCgrWiAUO4DFqGXOifr2V8/ X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2023 07:45:18.5932 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 25f99d42-5155-47c9-9282-08dbd9e5543e X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00001509.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9405 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,nicklew@nvidia.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: ZjtxlSEw0EPrQXuEIv90btaEx7686176AA= Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=CV6GZoj1; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io -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 Cc: Abner Chang Cc: Igor Kulchytskyy Cc: Nick Ramirez --- 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= .inf RedfishVersionLib|RedfishClientPkg/Library/RedfishVersionLib/RedfishVers= ionLib.inf RedfishAddendumLib|RedfishClientPkg/Library/RedfishAddendumLib/RedfishAd= dendumLib.inf + RedfishDebugLib|RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.inf diff --git a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatu= reUtilityLib.inf b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/Redfis= hFeatureUtilityLib.inf index 66d5dce6..fd66b8ac 100644 --- a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib.inf +++ b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib.inf @@ -45,6 +45,7 @@ UefiRuntimeServicesTableLib PrintLib HttpLib + RedfishDebugLib =20 [Protocols] gEdkIIRedfishETagProtocolGuid ## CONSUMED ## diff --git a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatu= reUtilityInternal.h b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/Red= fishFeatureUtilityInternal.h index d2bd6507..5d39984c 100644 --- a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyInternal.h +++ b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyInternal.h @@ -2,6 +2,7 @@ Common header file for RedfishFeatureUtilityLib driver. =20 (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP
+ Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved= . =20 SPDX-License-Identifier: BSD-2-Clause-Patent =20 @@ -28,6 +29,7 @@ #include #include #include +#include =20 #include =20 diff --git a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatu= reUtilityLib.c b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishF= eatureUtilityLib.c index e1899878..13e29902 100644 --- a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib.c +++ b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib.c @@ -133,7 +133,7 @@ SetEtagWithUri ( =20 Status =3D RedfishLocateProtocol ((VOID **)&mEtagProtocol, &gEdkIIRedfis= hETagProtocolGuid); 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; } =20 @@ -175,7 +175,7 @@ GetEtagWithUri ( =20 Status =3D RedfishLocateProtocol ((VOID **)&mEtagProtocol, &gEdkIIRedfis= hETagProtocolGuid); 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; } =20 @@ -306,10 +306,10 @@ ApplyFeatureSettingsStringType ( // Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang= , &RedfishValue); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, Ve= rsion, ConfigureLang, Status)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, Ve= rsion, ConfigureLang, Status)); } else { if (RedfishValue.Type !=3D RedfishValueTypeString) { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not string type\n", __fu= nc__, Schema, Version, ConfigureLang)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not string type\n", __fu= nc__, Schema, Version, ConfigureLang)); return EFI_DEVICE_ERROR; } =20 @@ -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, Feature= Value)); + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a apply %s from %a to %a\n", _= _func__, Schema, Version, ConfigureLang, RedfishValue.Value.Buffer, Feature= Value)); =20 FreePool (RedfishValue.Value.Buffer); RedfishValue.Value.Buffer =3D 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)); } } =20 @@ -341,7 +341,7 @@ ApplyFeatureSettingsStringType ( =20 /** =20 - Apply property value to UEFI HII database in numric type. + Apply property value to UEFI HII database in numeric type. =20 @param[in] Schema Property schema. @param[in] Version Property schema version. @@ -372,10 +372,10 @@ ApplyFeatureSettingsNumericType ( // Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang= , &RedfishValue); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, Ve= rsion, ConfigureLang, Status)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, Ve= rsion, ConfigureLang, Status)); } else { if (RedfishValue.Type !=3D RedfishValueTypeInteger) { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not numeric type\n", __f= unc__, Schema, Version, ConfigureLang)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not numeric type\n", __f= unc__, Schema, Version, ConfigureLang)); return EFI_DEVICE_ERROR; } =20 @@ -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, Fe= atureValue)); + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a apply %s from 0x%x to 0x%x\n= ", __func__, Schema, Version, ConfigureLang, RedfishValue.Value.Integer, Fe= atureValue)); =20 RedfishValue.Value.Integer =3D (INT64)FeatureValue; =20 @@ -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__, Sche= ma, Version, ConfigureLang, RedfishValue.Value.Integer, Status)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is: 0x%x\n", __func__, Sche= ma, Version, ConfigureLang, RedfishValue.Value.Integer)); } } =20 @@ -437,10 +437,10 @@ ApplyFeatureSettingsBooleanType ( // Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang= , &RedfishValue); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, Ve= rsion, ConfigureLang, Status)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, Ve= rsion, ConfigureLang, Status)); } else { if (RedfishValue.Type !=3D RedfishValueTypeBoolean) { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not boolean type\n", __f= unc__, Schema, Version, ConfigureLang)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not boolean type\n", __f= unc__, Schema, Version, ConfigureLang)); return EFI_DEVICE_ERROR; } =20 @@ -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 ? "Tru= e" : "False"), (FeatureValue ? "True" : "False"))); + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a apply %s from %a to %a\n", _= _func__, Schema, Version, ConfigureLang, (RedfishValue.Value.Boolean ? "Tru= e" : "False"), (FeatureValue ? "True" : "False"))); =20 RedfishValue.Value.Boolean =3D FeatureValue; =20 @@ -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")))= ; } } =20 @@ -508,13 +508,13 @@ ApplyFeatureSettingsVagueType ( ConfigureLangAscii =3D AllocatePool (StrLen (ConfigureLang) + 1); if (ConfigureLangAscii =3D=3D NULL) { Status =3D EFI_OUT_OF_RESOURCES; - DEBUG ((DEBUG_ERROR, "%a, Allocate memory for generate ConfigureLang o= f vague key of %a.%a %s failed: %r\n", __func__, Schema, Version, Configure= Lang, Status)); + DEBUG ((DEBUG_ERROR, "%a: Allocate memory for generate ConfigureLang o= f vague key of %a.%a %s failed: %r\n", __func__, Schema, Version, Configure= Lang, Status)); return Status; } =20 Status =3D UnicodeStrToAsciiStrS (ConfigureLang, ConfigureLangAscii, Str= Len (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 =3D AllocateZeroPool (StrSize); ConfigureKeyLang =3D AllocateZeroPool (StrSize * sizeof (CHAR16))= ; if ((ConfigureLangKeyAscii =3D=3D NULL) || (ConfigureKeyLang =3D=3D NU= LL)) { - DEBUG ((DEBUG_ERROR, "%a, Generate ConfigureLang of vague key of %a.= %a %s %a failed!\n", __func__, Schema, Version, ConfigureLang, CurrentVague= ValuePtr->KeyNamePtr)); + DEBUG ((DEBUG_ERROR, "%a: Generate ConfigureLang of vague key of %a.= %a %s %a failed!\n", __func__, Schema, Version, ConfigureLang, CurrentVague= ValuePtr->KeyNamePtr)); goto ErrorContinue; } =20 @@ -549,7 +549,7 @@ ApplyFeatureSettingsVagueType ( } else if (CurrentVagueValuePtr->Value->DataType =3D=3D RedfishCS_Vagu= e_DataType_Int64) { PropertyDatatype =3D 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; } =20 @@ -558,10 +558,10 @@ ApplyFeatureSettingsVagueType ( // Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureKe= yLang, &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 !=3D 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; } =20 @@ -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 =3D CurrentVagueValuePtr->Value->DataV= alue.CharPtr; Status =3D RedfishPlatformConfigSetValue (Sch= ema, 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, Statu= s)); + DEBUG ((DEBUG_ERROR, "%a: apply %a to %a failed: %r\n", __func= __, ConfigureKeyLang, CurrentVagueValuePtr->Value->DataValue.CharPtr, Statu= s)); } } else { - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a %s value is: %a\n", __fu= nc__, Schema, Version, ConfigureKeyLang, RedfishValue.Value.Buffer)); + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a %s value is: %a\n", __fu= nc__, Schema, Version, ConfigureKeyLang, RedfishValue.Value.Buffer)); } } else if (PropertyDatatype =3D=3D 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 ? "T= rue" : "False"), Status)); + DEBUG ((DEBUG_ERROR, "%a: apply %s to %a failed: %r\n", __func= __, ConfigureKeyLang, (*CurrentVagueValuePtr->Value->DataValue.BoolPtr ? "T= rue" : "False"), Status)); } } else { - DEBUG ((DEBUG_MANAGEABILITY, "%a, %a.%a %s value is: %a\n", __fu= nc__, Schema, Version, ConfigureKeyLang, (RedfishValue.Value.Boolean ? "Tru= e" : "False"))); + DEBUG ((DEBUG_MANAGEABILITY, "%a: %a.%a %s value is: %a\n", __fu= nc__, Schema, Version, ConfigureKeyLang, (RedfishValue.Value.Boolean ? "Tru= e" : "False"))); } } else if (PropertyDatatype =3D=3D 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.Inte= ger, *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.Inte= ger, *CurrentVagueValuePtr->Value->DataValue.Int64Ptr)); =20 RedfishValue.Value.Integer =3D (INT64)*CurrentVagueValuePtr->Val= ue->DataValue.Int64Ptr; Status =3D RedfishPlatformConfigSetValue (Sc= hema, 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", __fu= nc__, ConfigureKeyLang, *CurrentVagueValuePtr->Value->DataValue.Int64Ptr, S= tatus)); + DEBUG ((DEBUG_ERROR, "%a: apply %s to 0x%x failed: %r\n", __fu= nc__, ConfigureKeyLang, *CurrentVagueValuePtr->Value->DataValue.Int64Ptr, S= tatus)); } } 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 da= ta type\n", __func__, Schema, Version, ConfigureLang)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s Unsupported Redfish property da= ta type\n", __func__, Schema, Version, ConfigureLang)); goto ErrorContinue; } } @@ -762,12 +762,12 @@ ApplyFeatureSettingsStringArrayType ( // Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang= , &RedfishValue); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, Ve= rsion, ConfigureLang, Status)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, Ve= rsion, ConfigureLang, Status)); return Status; } =20 if (RedfishValue.Type !=3D 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; } =20 @@ -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); =20 // @@ -823,10 +823,10 @@ ApplyFeatureSettingsStringArrayType ( // REDFISH_ENABLE_SYSTEM_REBOOT (); } else { - DEBUG ((DEBUG_ERROR, "%a, apply %s array failed: %r\n", __func__, Co= nfigureLang, Status)); + DEBUG ((DEBUG_ERROR, "%a: apply %s array failed: %r\n", __func__, Co= nfigureLang, Status)); } } else { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s array value has no change\n", __fun= c__, Schema, Version, ConfigureLang)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s array value has no change\n", __fun= c__, Schema, Version, ConfigureLang)); } =20 for (Index =3D 0; Index < RedfishValue.ArrayCount; Index++) { @@ -873,12 +873,12 @@ ApplyFeatureSettingsNumericArrayType ( // Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang= , &RedfishValue); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, Ve= rsion, ConfigureLang, Status)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, Ve= rsion, ConfigureLang, Status)); return Status; } =20 if (RedfishValue.Type !=3D 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; } =20 @@ -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); =20 // @@ -928,10 +928,10 @@ ApplyFeatureSettingsNumericArrayType ( // REDFISH_ENABLE_SYSTEM_REBOOT (); } else { - DEBUG ((DEBUG_ERROR, "%a, apply %s array failed: %r\n", __func__, Co= nfigureLang, Status)); + DEBUG ((DEBUG_ERROR, "%a: apply %s array failed: %r\n", __func__, Co= nfigureLang, Status)); } } else { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s array value has no change\n", __fun= c__, Schema, Version, ConfigureLang)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s array value has no change\n", __fun= c__, Schema, Version, ConfigureLang)); } =20 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. =20 @retval EFI_SUCCESS New value is applied successfully. @retval Others Errors occur. @@ -974,12 +974,12 @@ ApplyFeatureSettingsBooleanArrayType ( // Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang= , &RedfishValue); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s failed: %r\n", __func__, Schema, Ve= rsion, ConfigureLang, Status)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s failed: %r\n", __func__, Schema, Ve= rsion, ConfigureLang, Status)); return Status; } =20 if (RedfishValue.Type !=3D 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; } =20 @@ -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); =20 // @@ -1029,10 +1029,10 @@ ApplyFeatureSettingsBooleanArrayType ( // REDFISH_ENABLE_SYSTEM_REBOOT (); } else { - DEBUG ((DEBUG_ERROR, "%a, apply %s array failed: %r\n", __func__, Co= nfigureLang, Status)); + DEBUG ((DEBUG_ERROR, "%a: apply %s array failed: %r\n", __func__, Co= nfigureLang, Status)); } } else { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s array value has no change\n", __fun= c__, Schema, Version, ConfigureLang)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s array value has no change\n", __fun= c__, Schema, Version, ConfigureLang)); } =20 FreePool (RedfishValue.Value.BooleanArray); @@ -1044,7 +1044,7 @@ ApplyFeatureSettingsBooleanArrayType ( =20 Read redfish resource by given resource URI. =20 - @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. =20 @@ -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 !=3D NULL) { RedfishDumpPayload (Response->Payload); RedfishFreeResponse ( @@ -1110,7 +1110,7 @@ GetResourceByUri ( @param[out] ArraySignatureClose String to the close of array signa= ture. =20 @retval EFI_SUCCESS Index is found. - @retval EFI_NOT_FOUND The non-array configure language stri= ng is retured. + @retval EFI_NOT_FOUND The non-array configure language stri= ng is returned. @retval EFI_INVALID_PARAMETER The format of input ConfigureLang is = wrong. @retval Others Errors occur. =20 @@ -1169,7 +1169,7 @@ IsRedpathArray ( =20 /** =20 - Get number of node from the string. Node is seperated by '/'. + Get number of node from the string. Node is separated by '/'. =20 @param[in] NodeString The node string to parse. =20 @@ -1207,10 +1207,10 @@ GetNumberOfRedpathNodes ( =20 @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. =20 - @retval EFI_STRING the begining of the node string. + @retval EFI_STRING the beginning of the node string. =20 **/ EFI_STRING @@ -1263,7 +1263,7 @@ GetRedpathNodeByIndex ( @param[out] Index The array index number. =20 @retval EFI_SUCCESS Index is found. - @retval EFI_NOT_FOUND The non-array configure language stri= ng is retured. + @retval EFI_NOT_FOUND The non-array configure language stri= ng is returned. @retval EFI_INVALID_PARAMETER The format of input ConfigureLang is = wrong. @retval Others Errors occur. =20 @@ -1303,7 +1303,7 @@ GetArrayIndexFromArrayTypeConfigureLang ( *Index =3D StrDecimalToUintn (ArrayOpenStr + StrLen (BIOS_CONFIG_TO_RE= DFISH_REDPATH_ARRAY_START_SIGNATURE)); =20 // - // Resotre the '}' character and remove rest of string. + // Restore the '}' character and remove rest of string. // ArrayCloseStr[0] =3D L'}'; ArrayCloseStr[1] =3D '\0'; @@ -1359,7 +1359,7 @@ CopyConfiglanguageList ( DestConfigureLangList->List =3D (REDFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG *)AllocateZeroPool (sizeof (RE= DFISH_FEATURE_ARRAY_TYPE_CONFIG_LANG) * DestConfigureLangList->Count); if (DestConfigureLangList->List =3D=3D 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; } =20 @@ -1471,7 +1471,7 @@ DestroyConfiglanguageList ( =20 @param[in] DestConfigLang Pointer to the node's configure langua= ge string. The memory pointed by ConfigLang must = be allocated - through memory allocation interface. B= ecasue we will replace + through memory allocation interface. B= ecause 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 =3D (EFI_STRING)AllocateZeroPool (MaxStrLength); if (NewConfigLang =3D=3D 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 ( =20 Status =3D RedfishPlatformConfigGetConfigureLang (Schema, Version, Patte= rn, &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; } =20 @@ -1815,6 +1815,13 @@ CreatePayloadToPatchResource ( Status =3D 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; } =20 @@ -1886,12 +1893,20 @@ CreatePayloadToPostResource ( ZeroMem (&PostResponse, sizeof (REDFISH_RESPONSE)); Status =3D RedfishPostToPayload (TargetPayload, Payload, &PostResponse); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a:%d Failed to POST Attribute Registry to Redfi= sh 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; } =20 // - // per Redfish spec. the URL of new eresource will be returned in "Locat= ion" header. + // per Redfish spec. the URL of new resource will be returned in "Locati= on" header. // Status =3D GetEtagAndLocation (&PostResponse, Etag, Location); if (EFI_ERROR (Status)) { @@ -1941,11 +1956,11 @@ RedfishGetUri ( =20 Status =3D RedfishLocateProtocol ((VOID **)&mConfigLangMapProtocol, &gEd= kIIRedfishConfigLangMapProtocolGuid); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, fail to locate gEdkIIRedfishConfigLangMapPro= tocolGuid: %r\n", __func__, Status)); + DEBUG ((DEBUG_ERROR, "%a: fail to locate gEdkIIRedfishConfigLangMapPro= tocolGuid: %r\n", __func__, Status)); return NULL; } =20 - DEBUG ((REDFISH_DEBUG_TRACE, "%a, Get: %s\n", __func__, ConfigLang)); + DEBUG ((REDFISH_DEBUG_TRACE, "%a: Get: %s\n", __func__, ConfigLang)); =20 CloseBracket =3D StrStr (ConfigLang, L"{"); if (CloseBracket =3D=3D NULL) { @@ -1986,7 +2001,7 @@ RedfishGetUri ( // Invalid format. No '}' found // if (*Target =3D=3D '\0') { - DEBUG ((DEBUG_ERROR, "%a, invalid format: %s\n", __func__, ConfigLan= g)); + DEBUG ((DEBUG_ERROR, "%a: invalid format: %s\n", __func__, ConfigLan= g)); 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; } =20 - DEBUG ((REDFISH_DEBUG_TRACE, "%a, Found: %s\n", __func__, Found)); + DEBUG ((REDFISH_DEBUG_TRACE, "%a: Found: %s\n", __func__, Found)); =20 // // Keep result in final string pool @@ -2040,7 +2055,7 @@ RedfishGetUri ( StrCatS (ResultStr, MAX_REDFISH_URL_LEN, Head); } =20 - DEBUG ((REDFISH_DEBUG_TRACE, "%a, return: %s\n", __func__, ResultStr)); + DEBUG ((REDFISH_DEBUG_TRACE, "%a: return: %s\n", __func__, ResultStr)); =20 return ResultStr; } @@ -2067,11 +2082,11 @@ RedfishGetConfigLanguage ( return NULL; } =20 - DEBUG ((REDFISH_DEBUG_TRACE, "%a, search config lang for URI: %s\n", __f= unc__, Uri)); + DEBUG ((REDFISH_DEBUG_TRACE, "%a: search config lang for URI: %s\n", __f= unc__, Uri)); =20 Status =3D RedfishLocateProtocol ((VOID **)&mConfigLangMapProtocol, &gEd= kIIRedfishConfigLangMapProtocolGuid); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, fail to locate gEdkIIRedfishConfigLangMapPro= tocolGuid: %r\n", __func__, Status)); + DEBUG ((DEBUG_ERROR, "%a: fail to locate gEdkIIRedfishConfigLangMapPro= tocolGuid: %r\n", __func__, Status)); return NULL; } =20 @@ -2088,7 +2103,7 @@ RedfishGetConfigLanguage ( =20 /** =20 - Return config language from given URI and prperty name. It's call respon= sibility to release returned buffer. + Return config language from given URI and property name. It's call respo= nsibility to release returned buffer. =20 @param[in] Uri The URI to match @param[in] PropertyName The property name of resource. This is optiona= l. @@ -2108,6 +2123,7 @@ GetConfigureLang ( EFI_STRING ResultStr; EFI_STRING UnicodeUri; EFI_STATUS Status; + EFI_STRING StrFound; =20 if (IS_EMPTY_STRING (Uri)) { return NULL; @@ -2126,6 +2142,18 @@ GetConfigureLang ( } =20 ConfigLang =3D RedfishGetConfigLanguage (UnicodeUri); + if (ConfigLang =3D=3D NULL) { + // + // @Redfish.Settings share the same schema as its parent. + // Remove "Settings" and try again. + // + StrFound =3D StrStr (UnicodeUri, L"/Settings"); + if (StrFound !=3D NULL) { + StrFound[0] =3D L'\0'; + DEBUG ((REDFISH_DEBUG_TRACE, "%a: \"Settings\" found in URI, try: %s= \n", __func__, UnicodeUri)); + ConfigLang =3D RedfishGetConfigLanguage (UnicodeUri); + } + } =20 FreePool (UnicodeUri); =20 @@ -2158,7 +2186,7 @@ GetConfigureLang ( @param[in] ConfigLang ConfigLang to save @param[in] Uri Redfish Uri to save =20 - @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 =20 **/ @@ -2176,11 +2204,11 @@ RedfisSetRedfishUri ( =20 Status =3D RedfishLocateProtocol ((VOID **)&mConfigLangMapProtocol, &gEd= kIIRedfishConfigLangMapProtocolGuid); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, fail to locate gEdkIIRedfishConfigLangMapPro= tocolGuid: %r\n", __func__, Status)); + DEBUG ((DEBUG_ERROR, "%a: fail to locate gEdkIIRedfishConfigLangMapPro= tocolGuid: %r\n", __func__, Status)); return Status; } =20 - DEBUG ((REDFISH_DEBUG_TRACE, "%a, Saved: %s -> %s\n", __func__, ConfigLa= ng, Uri)); + DEBUG ((REDFISH_DEBUG_TRACE, "%a: Saved: %s -> %s\n", __func__, ConfigLa= ng, Uri)); =20 return mConfigLangMapProtocol->Set (mConfigLangMapProtocol, ConfigLang, = Uri); } @@ -2228,7 +2256,7 @@ GetOdataId ( =20 /** =20 - Get the property name by given Configure Langauge. + Get the property name by given Configure Language. =20 @param[in] ResourceUri URI of root of resource. @param[in] ConfigureLang Configure Language string. @@ -2261,7 +2289,7 @@ GetPropertyFromConfigureLang ( } =20 // - // The ConigLang has no '{}' + // The ConfigLang has no '{}' // if (GetNumberOfRedpathNodes (ConfigureLang) =3D=3D 1) { return NULL; @@ -2321,7 +2349,7 @@ GetPropertyStringValue ( UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang,= PropertyName); Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang= Buffer, &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); =20 if (RedfishValue.Type !=3D 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; } =20 @@ -2382,7 +2410,7 @@ GetPropertyNumericValue ( UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang,= PropertyName); Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang= Buffer, &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); =20 if (RedfishValue.Type !=3D RedfishValueTypeInteger) { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not numeric type\n", __fun= c__, Schema, Version, ConfigureLang)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not numeric type\n", __fun= c__, Schema, Version, ConfigureLang)); return NULL; } =20 @@ -2447,7 +2475,7 @@ GetPropertyBooleanValue ( UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang,= PropertyName); Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang= Buffer, &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); =20 if (RedfishValue.Type !=3D RedfishValueTypeBoolean) { - DEBUG ((DEBUG_ERROR, "%a, %a.%a %s value is not boolean type\n", __fun= c__, Schema, Version, ConfigureLang)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a %s value is not boolean type\n", __fun= c__, Schema, Version, ConfigureLang)); return NULL; } =20 @@ -2544,14 +2572,14 @@ GetPropertyStringArrayValue ( BufferSize =3D sizeof (CHAR16) * MAX_CONF_LANG_LEN; ConfigureLangBuffer =3D AllocatePool (BufferSize); if (ConfigureLangBuffer =3D=3D NULL) { - DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __func__)); + DEBUG ((DEBUG_ERROR, "%a: out of resource\n", __func__)); return NULL; } =20 UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang,= PropertyName); Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang= Buffer, &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); =20 if (RedfishValue.Type !=3D 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; } =20 StringArray =3D AllocatePool (sizeof (CHAR8 *) * RedfishValue.ArrayCount= ); if (StringArray =3D=3D NULL) { - DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __func__)); + DEBUG ((DEBUG_ERROR, "%a: out of resource\n", __func__)); return NULL; } =20 @@ -2618,14 +2646,14 @@ GetPropertyNumericArrayValue ( BufferSize =3D sizeof (CHAR16) * MAX_CONF_LANG_LEN; ConfigureLangBuffer =3D AllocatePool (BufferSize); if (ConfigureLangBuffer =3D=3D NULL) { - DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __func__)); + DEBUG ((DEBUG_ERROR, "%a: out of resource\n", __func__)); return NULL; } =20 UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang,= PropertyName); Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang= Buffer, &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); =20 if (RedfishValue.Type !=3D 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; } =20 IntegerArray =3D AllocatePool (sizeof (INT64) * RedfishValue.ArrayCount)= ; if (IntegerArray =3D=3D NULL) { - DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __func__)); + DEBUG ((DEBUG_ERROR, "%a: out of resource\n", __func__)); return NULL; } =20 @@ -2692,14 +2720,14 @@ GetPropertyBooleanArrayValue ( BufferSize =3D sizeof (CHAR16) * MAX_CONF_LANG_LEN; ConfigureLangBuffer =3D AllocatePool (BufferSize); if (ConfigureLangBuffer =3D=3D NULL) { - DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __func__)); + DEBUG ((DEBUG_ERROR, "%a: out of resource\n", __func__)); return NULL; } =20 UnicodeSPrint (ConfigureLangBuffer, BufferSize, L"%s/%s", ConfigureLang,= PropertyName); Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLang= Buffer, &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); =20 if (RedfishValue.Type !=3D 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; } =20 BooleanArray =3D AllocatePool (sizeof (INT64) * RedfishValue.ArrayCount)= ; if (BooleanArray =3D=3D NULL) { - DEBUG ((DEBUG_ERROR, "%a, out of resource\n", __func__)); + DEBUG ((DEBUG_ERROR, "%a: out of resource\n", __func__)); return NULL; } =20 @@ -2784,19 +2812,19 @@ NewEmptyPropKeyValueFromRedfishValue ( =20 KeyNameChar =3D StrUnicodeToAscii (KeyName); if (KeyNameChar =3D=3D NULL) { - DEBUG ((DEBUG_ERROR, "%a, Failed to convert unicode to ASCII.\n", __fu= nc__)); + DEBUG ((DEBUG_ERROR, "%a: Failed to convert unicode to ASCII.\n", __fu= nc__)); return NULL; } =20 EmptyPropKeyValue =3D (RedfishCS_EmptyProp_KeyValue *)AllocateZeroPool (= sizeof (RedfishCS_EmptyProp_KeyValue)); if (EmptyPropKeyValue =3D=3D NULL) { - DEBUG ((DEBUG_ERROR, "%a, Failed to allocate memory for EmptyPropKeyVa= lue\n", __func__)); + DEBUG ((DEBUG_ERROR, "%a: Failed to allocate memory for EmptyPropKeyVa= lue\n", __func__)); return NULL; } =20 VagueValue =3D (RedfishCS_Vague *)AllocateZeroPool (sizeof (RedfishCS_Va= gue)); if (VagueValue =3D=3D 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 =3D RedfishCS_Vague_DataType_Bool; DataSize =3D sizeof (BOOLEAN); // - // Redfish JSON to C strcuture converter uses + // Redfish JSON to C structure converter uses // "int" for the BOOLEAN. // Bool32 =3D (INT32)RedfishValue->Value.Boolean; @@ -2819,7 +2847,7 @@ NewEmptyPropKeyValueFromRedfishValue ( DataSize =3D AsciiStrSize (RedfishValue->Value.Buffer); Data =3D (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; =20 if (IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) || IS_EMPTY_ST= RING (ConfigureLang) || IS_EMPTY_STRING (PropertyName)) { return NULL; } =20 + ListCount =3D 0; + FirstEmptyPropKeyValueList =3D 0; // // Configure Language buffer. // BufferSize =3D sizeof (CHAR16) * MAX_CONF_LANG_LEN; ConfigureLangBuffer =3D AllocatePool (BufferSize); if (ConfigureLangBuffer =3D=3D NULL) { - DEBUG ((DEBUG_ERROR, "%a, Failed to allocate memory for ConfigureLangB= uffer\n", __func__)); + DEBUG ((DEBUG_ERROR, "%a: Failed to allocate memory for ConfigureLangB= uffer\n", __func__)); return NULL; } =20 @@ -2889,7 +2920,7 @@ GetPropertyVagueValue ( BufferSize =3D (StrLen (ConfigureLangBuffer) + StrLen (L"/.*") + 1) *= sizeof (CHAR16); // Increase one for the NULL terminator. SearchPattern =3D AllocatePool (BufferSize); if (SearchPattern =3D=3D 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 =3D RedfishPlatformConfigGetConfigureLang (Schema, Version, Searc= hPattern, &ConfigureLangList, &ConfigListCount); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, %a.%a Get configure language of vague type v= alues of %s failed: %r\n", __func__, Schema, Version, ConfigureLangBuffer, = Status)); + DEBUG ((DEBUG_ERROR, "%a: %a.%a Get configure language of vague type v= alues of %s failed: %r\n", __func__, Schema, Version, ConfigureLangBuffer, = Status)); goto ErrorLeave; } =20 // // Build up the list of RedfishCS_EmptyProp_KeyValue. // + ListCount =3D 0; ConfigListCountIndex =3D 0; PreEmptyPropKeyValueList =3D NULL; FirstEmptyPropKeyValueList =3D NULL; while (ConfigListCountIndex < ConfigListCount) { Status =3D RedfishPlatformConfigGetValue (Schema, Version, ConfigureLa= ngList[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; } =20 // @@ -2925,7 +2958,7 @@ GetPropertyVagueValue ( // EmptyPropKeyValueList =3D NewEmptyPropKeyValueFromRedfishValue (KeyNam= e, &RedfishValue); if (EmptyPropKeyValueList =3D=3D NULL) { - DEBUG ((DEBUG_ERROR, "%a, Failed to create an entry of EmptyPropKeyV= alueList\n", __func__)); + DEBUG ((DEBUG_ERROR, "%a: Failed to create an entry of EmptyPropKeyV= alueList\n", __func__)); ConfigListCountIndex++; continue; } @@ -2941,6 +2974,7 @@ GetPropertyVagueValue ( =20 PreEmptyPropKeyValueList =3D EmptyPropKeyValueList; ConfigListCountIndex++; + ListCount++; } =20 goto LeaveFunction; @@ -2963,7 +2997,7 @@ LeaveFunction: =20 FreePool (ConfigureLangList); =20 - *NumberOfValues =3D (UINT32)ConfigListCount; + *NumberOfValues =3D (UINT32)ListCount; return FirstEmptyPropKeyValueList; } =20 @@ -3030,7 +3064,7 @@ CheckEtag ( EtagInDb =3D NULL; EtagInDb =3D GetEtagWithUri (Uri); if (EtagInDb =3D=3D 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; } =20 @@ -3173,12 +3207,6 @@ MatchPropertyWithJsonContext ( MatchObj =3D NULL; } =20 - break; - case EdkiiJsonTypeString: - if (IS_EMPTY_STRING (JsonValueGetString (MatchObj))) { - MatchObj =3D NULL; - } - break; case EdkiiJsonTypeNull: MatchObj =3D NULL; @@ -3195,7 +3223,7 @@ MatchPropertyWithJsonContext ( =20 /** =20 - Create string array and append to arry node in Redfish JSON convert form= at. + Create string array and append to array node in Redfish JSON convert for= mat. =20 @param[in,out] Head The head of string array. @param[in] StringArray Input string array. @@ -3246,7 +3274,7 @@ AddRedfishCharArray ( =20 /** =20 - Create numeric array and append to arry node in Redfish JSON convert for= mat. + Create numeric array and append to array node in Redfish JSON convert fo= rmat. =20 @param[in,out] Head The head of string array. @param[in] NumericArray Input numeric array. @@ -3303,7 +3331,7 @@ AddRedfishNumericArray ( =20 /** =20 - Create boolean array and append to arry node in Redfish JSON convert for= mat. + Create boolean array and append to array node in Redfish JSON convert fo= rmat. =20 @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. =20 - @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. =20 @@ -3502,9 +3530,9 @@ CompareRedfishBooleanArrayValues ( This is just a simple check. =20 @param[in] RedfishVagueKeyValuePtr The vague key value sets on Redf= ish service. - @param[in] RedfishVagueKeyValueNumber The numebr of vague key value se= ts + @param[in] RedfishVagueKeyValueNumber The number of vague key value se= ts @param[in] ConfigVagueKeyValuePtr The vague configuration on platf= orm. - @param[in] ConfigVagueKeyValueNumber The numebr of vague key value se= ts + @param[in] ConfigVagueKeyValueNumber The number of vague key value se= ts =20 @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. =20 - @retval EFI_SUCEESS Install Boot manager menu success. + @retval EFI_SUCCESS Install Boot manager menu success. @retval Other Return error status. =20 **/ --=20 2.17.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#110382): https://edk2.groups.io/g/devel/message/110382 Mute This Topic: https://groups.io/mt/102293054/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-