From nobody Mon Nov 25 18:56:23 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+66276+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+66276+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=hpe.com ARC-Seal: i=1; a=rsa-sha256; t=1602779658; cv=none; d=zohomail.com; s=zohoarc; b=jN13YvF880Co92o67iXs/Ax0JT0wBeN1Q7Vt/LyN4+oIVdehtBIgNcwdZgs6snpaAzYODTFZpCYRv78zB14kW9+QXnVxA72BM9kDwnsK+mtMnRRZd2/Xr8/DGC6F7Ab5o4mBrmin2eFFnYCofaalfe/Yv9oEmz4NxRj0x4ubY+w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602779658; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=w8vMb45vT+VJz5L+kbjVAfjSOEuM8F4d6yWYLEmSiQ0=; b=n0F2ADLZvGBBUwoVtTTSKqGJsXFNaTP8f0S7VCJaZNKSr1c1F0rtG/Rr59a3XgNv6r4HcSom9piflwyrmIsAHuUokIzNqrQoG+O3EqV6uKRJdy8QEZy+99Oo3hRWxAZ2P+YmSF9UBTAsEpznTRqeoKIp92hTjGqmdx6V72DZUA0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+66276+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1602779658991701.798112609523; Thu, 15 Oct 2020 09:34:18 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id dDsAYY1788612xDGR1aSFadK; Thu, 15 Oct 2020 09:34:18 -0700 X-Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by mx.groups.io with SMTP id smtpd.web10.16747.1602779657507519741 for ; Thu, 15 Oct 2020 09:34:17 -0700 X-Received: from pps.filterd (m0134422.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 09FGWVEW020080; Thu, 15 Oct 2020 16:34:13 GMT X-Received: from g9t5009.houston.hpe.com (g9t5009.houston.hpe.com [15.241.48.73]) by mx0b-002e3701.pphosted.com with ESMTP id 345fajw7ac-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Oct 2020 16:34:13 +0000 X-Received: from g9t2301.houston.hpecorp.net (g9t2301.houston.hpecorp.net [16.220.97.129]) by g9t5009.houston.hpe.com (Postfix) with ESMTP id D37D95B; Thu, 15 Oct 2020 16:34:12 +0000 (UTC) X-Received: from abner-virtual-machine.asiapacific.hpqcorp.net (abner-virtual-machine.asiapacific.hpqcorp.net [15.119.210.153]) by g9t2301.houston.hpecorp.net (Postfix) with ESMTP id 9C31E50; Thu, 15 Oct 2020 16:34:10 +0000 (UTC) From: "Abner Chang" To: devel@edk2.groups.io Cc: Michael D Kinney , Liming Gao , Zhiguang Liu , Jiaxin Wu , Siyuan Fu , Fan Wang , Jiewen Yao , Nickle Wang Subject: [edk2-devel] [RestJsonStructureDxe PATCH v3 1/3] MdePkg/Include: Definitions of EFI REST JSON Structure Protocol Date: Thu, 15 Oct 2020 23:49:26 +0800 Message-Id: <20201015154928.16211-2-abner.chang@hpe.com> In-Reply-To: <20201015154928.16211-1-abner.chang@hpe.com> References: <20201015154928.16211-1-abner.chang@hpe.com> X-HPE-SCL: -1 Precedence: Bulk List-Unsubscribe: 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,abner.chang@hpe.com X-Gm-Message-State: VoXjlbjViMc1OT7kb29afXIQx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1602779658; bh=zzO1/YGajS8SzC0DV7vLqpd0TfcR29rdnYh9jBa3s5M=; h=Cc:Date:From:Reply-To:Subject:To; b=CJ04RxyP+R9NP5AhrX07BK8Dl7WuiQby0hOcyQeWIBZWUJG4y4QwCqxGbqMjSPCF5Xg zOOrJ4Fm2ojL4XdGTYOokZpp+L5PhlBoyanNBOeAoz/jXQPMJ+okO5lWTlNaZEwtmGzQM RMwED6yCuQmCf+aI8nVEQZzkd3hou7Bo+hk= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add definitions of EFI REST JSON Structure according to UEFI spec 2.8 Section 29.7.3 EFI REST JSON Resource to C Structure Converter. Signed-off-by: Abner Chang Cc: Michael D Kinney Cc: Liming Gao Cc: Zhiguang Liu Cc: Jiaxin Wu Cc: Siyuan Fu Cc: Fan Wang Cc: Jiewen Yao Cc: Nickle Wang Reviewed-by: Liming Gao --- MdePkg/Include/Protocol/RestJsonStructure.h | 161 ++++++++++++++++++++ MdePkg/MdePkg.dec | 3 + 2 files changed, 164 insertions(+) create mode 100644 MdePkg/Include/Protocol/RestJsonStructure.h diff --git a/MdePkg/Include/Protocol/RestJsonStructure.h b/MdePkg/Include/P= rotocol/RestJsonStructure.h new file mode 100644 index 0000000000..adaf148f71 --- /dev/null +++ b/MdePkg/Include/Protocol/RestJsonStructure.h @@ -0,0 +1,161 @@ +/** @file + This file defines the EFI REST JSON Structure Protocol interface. + + (C) Copyright 2020 Hewlett Packard Enterprise Development LP
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Revision Reference: + This Protocol is introduced in UEFI Specification 2.8 + +**/ + +#ifndef EFI_REST_JSON_STRUCTURE_PROTOCOL_H_ +#define EFI_REST_JSON_STRUCTURE_PROTOCOL_H_ + +/// +/// GUID definitions +/// +#define EFI_REST_JSON_STRUCTURE_PROTOCOL_GUID \ + { \ + 0xa9a048f6, 0x48a0, 0x4714, {0xb7, 0xda, 0xa9, 0xad,0x87, 0xd4, 0xda, = 0xc9 } \ + } + +typedef struct _EFI_REST_JSON_STRUCTURE_PROTOCOL EFI_REST_JSON_STRUCTURE_P= ROTOCOL; +typedef CHAR8 * EFI_REST_JSON_RESOURCE_TYPE_DATATYPE; + +/// +/// Structure defintions of resource name space. +/// +/// The fields declared in this structure define the +/// name and revision of payload delievered throught +/// REST API. +/// +typedef struct _EFI_REST_JSON_RESOURCE_TYPE_NAMESPACE { + CHAR8 *ResourceTypeName; ///< Resource type name + CHAR8 *MajorVersion; ///< Resource major version + CHAR8 *MinorVersion; ///< Resource minor version + CHAR8 *ErrataVersion; ///< Resource errata version +} EFI_REST_JSON_RESOURCE_TYPE_NAMESPACE; + +/// +/// REST resource type identifier +/// +/// REST resource type consists of name space and data type. +/// +typedef struct _EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER { + EFI_REST_JSON_RESOURCE_TYPE_NAMESPACE NameSpace; ///< Namespace of this = resource type. + EFI_REST_JSON_RESOURCE_TYPE_DATATYPE DataType; ///< Name of data type = declared in this + ///< resource type. +} EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER; + +/// +/// List of JSON to C structure conversions which this convertor supports. +/// +typedef struct _EFI_REST_JSON_STRUCTURE_SUPPORTED { + LIST_ENTRY NextSupportedRsrcInterp; ///< Linklist= to next supported conversion. + EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER RestResourceInterp; ///< JSON res= ource type this convertor supports. +} EFI_REST_JSON_STRUCTURE_SUPPORTED; + +/// +/// The header file of JSON C structure +/// +typedef struct _EFI_REST_JSON_STRUCTURE_HEADER { + EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER JsonRsrcIdentifier; ///< Resou= rce identifier which use to + ///< choic= e the proper interpreter. + ///< Follow by a pointer points to JSON structure, the content in the + ///< JSON structure is implementation-specific according to converter pr= oducer. + VOID *JsonStructurePointer; +} EFI_REST_JSON_STRUCTURE_HEADER; + +/** + JSON-IN C Structure-OUT function. Convert the given REST JSON resource i= nto structure. + + @param[in] This This is the EFI_REST_JSON_STRUCTURE_PR= OTOCOL instance. + @param[in] JsonRsrcIdentifier This indicates the resource type and v= ersion is given in + ResourceJsonText. + @param[in] ResourceJsonText REST JSON resource in text format. + @param[out] JsonStructure Pointer to receive the pointer to EFI_= REST_JSON_STRUCTURE_HEADER + + @retval EFI_SUCCESS + @retval Others +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_REST_JSON_STRUCTURE_TO_STRUCTURE)( + IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This, + IN EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER *JsonRsrcIdentifier OPTIONAL, + IN CHAR8 *ResourceJsonText, + OUT EFI_REST_JSON_STRUCTURE_HEADER **JsonStructure +); + +/** + Convert the given REST JSON structure into JSON text. + + @param[in] This This is the EFI_REST_JSON_STRUCTURE_P= ROTOCOL instance. + @param[in] JsonStructureHeader The point to EFI_REST_JSON_STRUCTURE_= HEADER structure. + @param[out] ResourceJsonText Pointer to receive REST JSON resource= in text format. + + @retval EFI_SUCCESS + @retval Others + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_REST_JSON_STRUCTURE_TO_JSON)( + IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This, + IN EFI_REST_JSON_STRUCTURE_HEADER *JsonStructureHeader, + OUT CHAR8 **ResourceJsonText +); + +/** + This function destroys the REST JSON structure. + + @param[in] This This is the EFI_REST_JSON_STRUCTURE_P= ROTOCOL instance. + @param[in] JsonStructureHeader JSON structure to destroy. + + @retval EFI_SUCCESS + @retval Others + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_REST_JSON_STRUCTURE_DESTORY_STRUCTURE)( + IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This, + IN EFI_REST_JSON_STRUCTURE_HEADER *JsonStructureHeader +); +/** + This function provides REST JSON resource to structure converter registr= ation. + + @param[in] This This is the EFI_REST_JSON_STRUCTU= RE_PROTOCOL instance. + @param[in] JsonStructureSupported The type and version of REST JSON= resource which this converter + supports. + @param[in] ToStructure The function to convert REST JSON= resource to structure. + @param[in] ToJson The function to convert REST JSON= structure to JSON in text format. + @param[out] DestroyStructure Destroy REST JSON structure retur= ned in ToStructure() function. + + @retval EFI_SUCCESS Register successfully. + @retval Others Fail to register. + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_REST_JSON_STRUCTURE_REGISTER)( + IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This, + IN EFI_REST_JSON_STRUCTURE_SUPPORTED *JsonStructureSupported, + IN EFI_REST_JSON_STRUCTURE_TO_STRUCTURE ToStructure, + IN EFI_REST_JSON_STRUCTURE_TO_JSON ToJson, + IN EFI_REST_JSON_STRUCTURE_DESTORY_STRUCTURE DestroyStructure +); + +/// +/// EFI REST JSON to C structure protocol definition. +/// +struct _EFI_REST_JSON_STRUCTURE_PROTOCOL { + EFI_REST_JSON_STRUCTURE_REGISTER Register; ///< Regis= ter JSON to C structure convertor + EFI_REST_JSON_STRUCTURE_TO_STRUCTURE ToStructure; ///< The f= unction to convert JSON to C structure + EFI_REST_JSON_STRUCTURE_TO_JSON ToJson; ///< The f= unction to convert C structure to JSON + EFI_REST_JSON_STRUCTURE_DESTORY_STRUCTURE DestoryStructure; ///< Desto= ry C structure. +}; + +#endif diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index 5205374d62..645f61b80e 100644 --- a/MdePkg/MdePkg.dec +++ b/MdePkg/MdePkg.dec @@ -1855,6 +1855,9 @@ gEfiRestExProtocolGuid =3D { 0x55648b91, 0xe7d, 0x40a3, { = 0xa9, 0xb3, 0xa8, 0x15, 0xd7, 0xea, 0xdf, 0x97 }} gEfiRestExServiceBindingProtocolGuid =3D { 0x456bbe01, 0x99d0, 0x45ea, {= 0xbb, 0x5f, 0x16, 0xd8, 0x4b, 0xed, 0xc5, 0x59 }} =20 + ## Include/Protocol/RestJsonStructure.h + gEfiRestJsonStructureProtocolGuid =3D { 0xa9a048f6, 0x48a0, 0x4714, {0x= b7, 0xda, 0xa9, 0xad,0x87, 0xd4, 0xda, 0xc9 }} + # # Protocols defined in Shell2.0 # --=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 (#66276): https://edk2.groups.io/g/devel/message/66276 Mute This Topic: https://groups.io/mt/77532168/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Nov 25 18:56:23 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+66275+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+66275+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=hpe.com ARC-Seal: i=1; a=rsa-sha256; t=1602779657; cv=none; d=zohomail.com; s=zohoarc; b=MIAViBq5UCE1v8FQyenj9pBEcw1cPhce8tFYyJzECRCU8ZrPOMqgCpe9F9ta3k6Asn8S6rq6DFscWDhuS3Cba4h2VS9jKpAO0xF0UYW19r9BNCPWhHIx9SHkYZTN16UIIJazXgYjM84Iy8fY2mSpD87k+t9oSzFiK6hQ4bnDAF4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602779657; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=5NlhVtmUk0EiPS9QPx30qkNP4yYtqH0RqqLt8/Fdtmg=; b=VeYxIPFgMcnKsbF4GBXGYSGIT/sdYP+vH2Z4ZiqBlTtTVmsk7urIgnhYEEmvNSMBxC0YiSZbMycOOFVzX6M4eA22AJE9NyLOlz2IhdZPvH57KZMlBs/D5P20wEYKzw4KjDRXD9Wp/XO5g4dstRgR+o+oVci6QxyJT0oQPxctZwU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+66275+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1602779657092985.0157960761909; Thu, 15 Oct 2020 09:34:17 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 39ucYY1788612xLBCGeDENR0; Thu, 15 Oct 2020 09:34:16 -0700 X-Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web12.16538.1602779655920302585 for ; Thu, 15 Oct 2020 09:34:16 -0700 X-Received: from pps.filterd (m0134424.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 09FGV1N5028689; Thu, 15 Oct 2020 16:34:15 GMT X-Received: from g9t5008.houston.hpe.com (g9t5008.houston.hpe.com [15.241.48.72]) by mx0b-002e3701.pphosted.com with ESMTP id 345yud60sc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Oct 2020 16:34:14 +0000 X-Received: from g9t2301.houston.hpecorp.net (g9t2301.houston.hpecorp.net [16.220.97.129]) by g9t5008.houston.hpe.com (Postfix) with ESMTP id 47B836F; Thu, 15 Oct 2020 16:34:14 +0000 (UTC) X-Received: from abner-virtual-machine.asiapacific.hpqcorp.net (abner-virtual-machine.asiapacific.hpqcorp.net [15.119.210.153]) by g9t2301.houston.hpecorp.net (Postfix) with ESMTP id D9EE64C; Thu, 15 Oct 2020 16:34:12 +0000 (UTC) From: "Abner Chang" To: devel@edk2.groups.io Cc: Jiaxin Wu , Siyuan Fu , Fan Wang , Jiewen Yao , Nickle Wang Subject: [edk2-devel] [RestJsonStructureDxe PATCH v3 2/3] RedfishPkg/RestJsonStructureDxe: EFI REST JSON Structure Protocol Date: Thu, 15 Oct 2020 23:49:27 +0800 Message-Id: <20201015154928.16211-3-abner.chang@hpe.com> In-Reply-To: <20201015154928.16211-1-abner.chang@hpe.com> References: <20201015154928.16211-1-abner.chang@hpe.com> X-HPE-SCL: -1 Precedence: Bulk List-Unsubscribe: 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,abner.chang@hpe.com X-Gm-Message-State: GOf7S0B3wAtuLx1I1Wbk228Ux1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1602779656; bh=aBuf4ivGTHa+UcDSHJ93ByKL1IHI5lQCO4VXcmay9rY=; h=Cc:Date:From:Reply-To:Subject:To; b=t2cXmjQCUFhouyADXgOTwxEmODeaxXrbKEPZG1J1fYDsTkH04dV/oHnbOl3i1pv+dEH k3UyIGOM23a2u28mX+aztKznIDnFCSxeLXy1jTIrtF/cuDj00OfMNUYTVWwIxXgcZ6rOm 8ZrbZsLbxMijSmnpsiEN5INIbnXofbn+MxE= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Implementation of EFI_REST_JSON_STRUCTURE_PROTOCOL, refer to UEFI spec 2.8 Section 29.7.3 EFI REST JSON Resource to C Structure Converter. Signed-off-by: Abner Chang Cc: Jiaxin Wu Cc: Siyuan Fu Cc: Fan Wang Cc: Jiewen Yao Cc: Nickle Wang --- RedfishPkg/RedfishPkg.dsc | 11 + .../RestJsonStructureDxe.c | 585 ++++++++++++++++++ .../RestJsonStructureDxe.inf | 40 ++ .../RestJsonStructureInternal.h | 33 + 4 files changed, 669 insertions(+) create mode 100644 RedfishPkg/RestJsonStructureDxe/RestJsonStructureDxe.c create mode 100644 RedfishPkg/RestJsonStructureDxe/RestJsonStructureDxe.inf create mode 100644 RedfishPkg/RestJsonStructureDxe/RestJsonStructureIntern= al.h diff --git a/RedfishPkg/RedfishPkg.dsc b/RedfishPkg/RedfishPkg.dsc index 8acadddefc..f0c6740fac 100644 --- a/RedfishPkg/RedfishPkg.dsc +++ b/RedfishPkg/RedfishPkg.dsc @@ -38,3 +38,14 @@ DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableL= ib.inf DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeRepor= tStatusCodeLib.inf + +[LibraryClasses.ARM, LibraryClasses.AARCH64] + # + # This library provides the instrinsic functions generated by a given co= mpiler. + # + NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf + NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf + ArmSoftFloatLib|ArmPkg/Library/ArmSoftFloatLib/ArmSoftFloatLib.inf + +[Components] + RedfishPkg/RestJsonStructureDxe/RestJsonStructureDxe.inf diff --git a/RedfishPkg/RestJsonStructureDxe/RestJsonStructureDxe.c b/Redfi= shPkg/RestJsonStructureDxe/RestJsonStructureDxe.c new file mode 100644 index 0000000000..03fbecf993 --- /dev/null +++ b/RedfishPkg/RestJsonStructureDxe/RestJsonStructureDxe.c @@ -0,0 +1,585 @@ +/** @file + + The implementation of EFI REST Resource JSON to C structure convertor + Protocol. + + (C) Copyright 2020 Hewlett Packard Enterprise Development LP
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include "RestJsonStructureInternal.h" + +LIST_ENTRY mRestJsonStructureList; +EFI_HANDLE mProtocolHandle; + +/** + This function registers Restful resource interpreter for the + specific schema. + + @param[in] This This is the EFI_REST_JSON_STRUCTU= RE_PROTOCOL instance. + @param[in] JsonStructureSupported The type and version of REST JSON= resource which this converter + supports. + @param[in] ToStructure The function to convert REST JSON= resource to structure. + @param[in] ToJson The function to convert REST JSON= structure to JSON in text format. + @param[in] DestroyStructure Destroy REST JSON structure retur= ned in ToStructure() function. + + @retval EFI_SUCCESS Register successfully. + @retval Others Fail to register. + +**/ +EFI_STATUS +EFIAPI +RestJsonStructureRegister ( + IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This, + IN EFI_REST_JSON_STRUCTURE_SUPPORTED *JsonStructureSupported, + IN EFI_REST_JSON_STRUCTURE_TO_STRUCTURE ToStructure, + IN EFI_REST_JSON_STRUCTURE_TO_JSON ToJson, + IN EFI_REST_JSON_STRUCTURE_DESTORY_STRUCTURE DestroyStructure +) +{ + UINTN NumberOfNS; + UINTN Index; + LIST_ENTRY *ThisList; + REST_JSON_STRUCTURE_INSTANCE *Instance; + EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER *CloneSupportedInterpId; + EFI_REST_JSON_STRUCTURE_SUPPORTED *ThisSupportedInterp; + + if (This =3D=3D NULL || + ToStructure =3D=3D NULL || + ToJson =3D=3D NULL || + DestroyStructure =3D=3D NULL || + JsonStructureSupported =3D=3D NULL + ) { + return EFI_INVALID_PARAMETER; + } + + // + // Check how many name space interpreter can interpret. + // + ThisList =3D &JsonStructureSupported->NextSupportedRsrcInterp; + NumberOfNS =3D 1; + while (TRUE) { + if (ThisList->ForwardLink =3D=3D &JsonStructureSupported->NextSupporte= dRsrcInterp) { + break; + } else { + ThisList =3D ThisList->ForwardLink; + NumberOfNS ++; + } + }; + + Instance =3D + (REST_JSON_STRUCTURE_INSTANCE *)AllocateZeroPool (sizeof (REST_JSON_ST= RUCTURE_INSTANCE) + NumberOfNS * sizeof (EFI_REST_JSON_RESOURCE_TYPE_IDENTI= FIER)); + if (Instance =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + InitializeListHead (&Instance->NextRestJsonStructureInstance); + Instance->NumberOfNameSpaceToConvert =3D NumberOfNS; + Instance->SupportedRsrcIndentifier =3D (EFI_REST_JSON_RESOURCE_TYPE_IDEN= TIFIER *)((REST_JSON_STRUCTURE_INSTANCE *)Instance + 1); + // + // Copy supported resource identifer interpreter. + // + CloneSupportedInterpId =3D Instance->SupportedRsrcIndentifier; + ThisSupportedInterp =3D JsonStructureSupported; + for (Index =3D 0; Index < NumberOfNS; Index ++) { + CopyMem ((VOID *)CloneSupportedInterpId, (VOID *)&ThisSupportedInterp-= >RestResourceInterp, sizeof (EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER)); + ThisSupportedInterp =3D (EFI_REST_JSON_STRUCTURE_SUPPORTED *)ThisSuppo= rtedInterp->NextSupportedRsrcInterp.ForwardLink; + CloneSupportedInterpId ++; + } + Instance->JsonToStructure =3D ToStructure; + Instance->StructureToJson =3D ToJson; + Instance->DestroyStructure =3D DestroyStructure; + InsertTailList (&mRestJsonStructureList, &Instance->NextRestJsonStructur= eInstance); + return EFI_SUCCESS; +} + +/** + This function check if this interpreter instance support the given names= apce. + + @param[in] This EFI_REST_JSON_STRUCTURE_PROTOCOL insta= nce. + @param[in] InterpreterInstance REST_JSON_STRUCTURE_INSTANCE + @param[in] RsrcTypeIdentifier Resource type identifier. + @param[in] ResourceRaw Given Restful resource. + @param[out] RestJSonHeader Property interpreted from given Resour= ceRaw. + + @retval EFI_SUCCESS + @retval Others. + +**/ +EFI_STATUS +InterpreterInstanceToStruct ( + IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This, + IN REST_JSON_STRUCTURE_INSTANCE *InterpreterInstance, + IN EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER *RsrcTypeIdentifier OPTIONAL, + IN CHAR8 *ResourceRaw, + OUT EFI_REST_JSON_STRUCTURE_HEADER **RestJSonHeader + ) +{ + UINTN Index; + EFI_STATUS Status; + EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER *ThisSupportedRsrcTypeId; + + if (This =3D=3D NULL || + InterpreterInstance =3D=3D NULL || + ResourceRaw =3D=3D NULL || + RestJSonHeader =3D=3D NULL + ) { + return EFI_INVALID_PARAMETER; + } + + Status =3D EFI_UNSUPPORTED; + if (RsrcTypeIdentifier =3D=3D NULL) { + // + // No resource type identifier, send to intepreter anyway. + // Interpreter may recognize this resource. + // + Status =3D InterpreterInstance->JsonToStructure ( + This, + NULL, + ResourceRaw, + RestJSonHeader + ); + } else { + // + // Check if the namesapce and version is supported by this interpreter. + // + ThisSupportedRsrcTypeId =3D InterpreterInstance->SupportedRsrcIndentif= ier; + for (Index =3D 0; Index < InterpreterInstance->NumberOfNameSpaceToConv= ert; Index ++){ + if (AsciiStrCmp ( + RsrcTypeIdentifier->NameSpace.ResourceTypeName, + ThisSupportedRsrcTypeId->NameSpace.ResourceTypeName) =3D=3D 0){ + if ((RsrcTypeIdentifier->NameSpace.MajorVersion =3D=3D NULL) && + (RsrcTypeIdentifier->NameSpace.MinorVersion =3D=3D NULL) && + (RsrcTypeIdentifier->NameSpace.ErrataVersion =3D=3D NULL) + ) { + // + // Don't check version of this resource type identifier. + // + Status =3D InterpreterInstance->JsonToStructure ( + This, + RsrcTypeIdentifier, + ResourceRaw, + RestJSonHeader + ); + break; + } else { + // + // Check version. + // + if ((AsciiStrCmp ( + RsrcTypeIdentifier->NameSpace.MajorVersion, + ThisSupportedRsrcTypeId->NameSpace.MajorVersion) =3D=3D 0)= && + (AsciiStrCmp ( + RsrcTypeIdentifier->NameSpace.MinorVersion, + ThisSupportedRsrcTypeId->NameSpace.MinorVersion) =3D=3D 0)= && + (AsciiStrCmp ( + RsrcTypeIdentifier->NameSpace.ErrataVersion, + ThisSupportedRsrcTypeId->NameSpace.ErrataVersion) =3D=3D 0= )) { + Status =3D InterpreterInstance->JsonToStructure ( + This, + RsrcTypeIdentifier, + ResourceRaw, + RestJSonHeader + ); + break; + } + } + } + ThisSupportedRsrcTypeId ++; + } + } + return Status; +} +/** + This function converts JSON C structure to JSON property. + + @param[in] This EFI_REST_JSON_STRUCTURE_PROTOCOL inst= ance. + @param[in] InterpreterInstance REST_JSON_STRUCTURE_INSTANCE + @param[in] RestJSonHeader Resource type identifier. + @param[out] ResourceRaw Output in JSON text format. + + @retval EFI_SUCCESS + @retval Others. + +**/ +EFI_STATUS +InterpreterEfiStructToInstance ( + IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This, + IN REST_JSON_STRUCTURE_INSTANCE *InterpreterInstance, + IN EFI_REST_JSON_STRUCTURE_HEADER *RestJSonHeader, + OUT CHAR8 **ResourceRaw +) +{ + UINTN Index; + EFI_STATUS Status; + EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER *ThisSupportedRsrcTypeId; + EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER *RsrcTypeIdentifier; + + if (This =3D=3D NULL || + InterpreterInstance =3D=3D NULL || + RestJSonHeader =3D=3D NULL || + ResourceRaw =3D=3D NULL + ) { + return EFI_INVALID_PARAMETER; + } + RsrcTypeIdentifier =3D &RestJSonHeader->JsonRsrcIdentifier; + if (RsrcTypeIdentifier =3D=3D NULL || + RsrcTypeIdentifier->NameSpace.ResourceTypeName =3D=3D NULL || + RsrcTypeIdentifier->NameSpace.MajorVersion =3D=3D NULL || + RsrcTypeIdentifier->NameSpace.MinorVersion =3D=3D NULL || + RsrcTypeIdentifier->NameSpace.ErrataVersion =3D=3D NULL + ) { + return EFI_INVALID_PARAMETER; + } + + // + // Check if the namesapce and version is supported by this interpreter. + // + Status =3D EFI_UNSUPPORTED; + ThisSupportedRsrcTypeId =3D InterpreterInstance->SupportedRsrcIndentifie= r; + for (Index =3D 0; Index < InterpreterInstance->NumberOfNameSpaceToConver= t; Index ++){ + if (AsciiStrCmp ( + RsrcTypeIdentifier->NameSpace.ResourceTypeName, + ThisSupportedRsrcTypeId->NameSpace.ResourceTypeName) =3D=3D 0){ + // + // Check version. + // + if ((AsciiStrCmp ( + RsrcTypeIdentifier->NameSpace.MajorVersion, + ThisSupportedRsrcTypeId->NameSpace.MajorVersion) =3D=3D 0) && + (AsciiStrCmp ( + RsrcTypeIdentifier->NameSpace.MinorVersion, + ThisSupportedRsrcTypeId->NameSpace.MinorVersion) =3D=3D 0) && + (AsciiStrCmp ( + RsrcTypeIdentifier->NameSpace.ErrataVersion, + ThisSupportedRsrcTypeId->NameSpace.ErrataVersion) =3D=3D 0)) { + Status =3D InterpreterInstance->StructureToJson ( + This, + RestJSonHeader, + ResourceRaw + ); + break; + } + } + ThisSupportedRsrcTypeId ++; + } + return Status; +} + +/** + This function destory REST property structure. + + @param[in] This EFI_REST_JSON_STRUCTURE_PROTOCOL inst= ance. + @param[in] InterpreterInstance REST_JSON_STRUCTURE_INSTANCE + @param[in] RestJSonHeader Property interpreted from given Resou= rceRaw. + + @retval EFI_SUCCESS + @retval Others. + +**/ +EFI_STATUS +InterpreterInstanceDestoryJsonStruct ( + IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This, + IN REST_JSON_STRUCTURE_INSTANCE *InterpreterInstance, + IN EFI_REST_JSON_STRUCTURE_HEADER *RestJSonHeader + ) +{ + UINTN Index; + EFI_STATUS Status; + EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER *ThisSupportedRsrcTypeId; + + if (This =3D=3D NULL || + InterpreterInstance =3D=3D NULL || + RestJSonHeader =3D=3D NULL + ) { + return EFI_INVALID_PARAMETER; + } + + Status =3D EFI_UNSUPPORTED; + // + // Check if the namesapce and version is supported by this interpreter. + // + ThisSupportedRsrcTypeId =3D InterpreterInstance->SupportedRsrcIndentifie= r; + for (Index =3D 0; Index < InterpreterInstance->NumberOfNameSpaceToConver= t; Index ++){ + if (AsciiStrCmp ( + RestJSonHeader->JsonRsrcIdentifier.NameSpace.ResourceTypeName, + ThisSupportedRsrcTypeId->NameSpace.ResourceTypeName) =3D=3D 0) { + if ((RestJSonHeader->JsonRsrcIdentifier.NameSpace.MajorVersion =3D= =3D NULL) && + (RestJSonHeader->JsonRsrcIdentifier.NameSpace.MinorVersion =3D= =3D NULL) && + (RestJSonHeader->JsonRsrcIdentifier.NameSpace.ErrataVersion =3D= =3D NULL) + ) { + // + // Don't check version of this resource type identifier. + // + Status =3D InterpreterInstance->DestroyStructure ( + This, + RestJSonHeader + ); + break; + } else { + // + // Check version. + // + if ((AsciiStrCmp ( + RestJSonHeader->JsonRsrcIdentifier.NameSpace.MajorVersion, + ThisSupportedRsrcTypeId->NameSpace.MajorVersion) =3D=3D 0) && + (AsciiStrCmp ( + RestJSonHeader->JsonRsrcIdentifier.NameSpace.MinorVersion, + ThisSupportedRsrcTypeId->NameSpace.MinorVersion) =3D=3D 0) && + (AsciiStrCmp ( + RestJSonHeader->JsonRsrcIdentifier.NameSpace.ErrataVersion, + ThisSupportedRsrcTypeId->NameSpace.ErrataVersion) =3D=3D 0))= { + Status =3D InterpreterInstance->DestroyStructure ( + This, + RestJSonHeader + ); + break; + } + } + } + ThisSupportedRsrcTypeId ++; + } + return Status; +} + +/** + This function translates the given JSON text to JSON C Structure. + + @param[in] This EFI_REST_JSON_STRUCTURE_PROTOCOL insta= nce. + @param[in] RsrcTypeIdentifier Resource type identifier. + @param[in] ResourceJsonText Given Restful resource. + @param[out] JsonStructure Property interpreted from given Resour= ceRaw. + + @retval EFI_SUCCESS + @retval Others. + +**/ +EFI_STATUS +EFIAPI +RestJsonStructureToStruct ( + IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This, + IN EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER *RsrcTypeIdentifier OPTIONAL, + IN CHAR8 *ResourceJsonText, + OUT EFI_REST_JSON_STRUCTURE_HEADER **JsonStructure +) +{ + EFI_STATUS Status; + REST_JSON_STRUCTURE_INSTANCE *Instance; + + if (This =3D=3D NULL || + ResourceJsonText =3D=3D NULL || + JsonStructure =3D=3D NULL + ) { + return EFI_INVALID_PARAMETER; + } + + if (IsListEmpty (&mRestJsonStructureList)) { + return EFI_UNSUPPORTED; + } + Status =3D EFI_SUCCESS; + Instance =3D (REST_JSON_STRUCTURE_INSTANCE *)GetFirstNode (&mRestJsonStr= uctureList); + while (TRUE) { + Status =3D InterpreterInstanceToStruct ( + This, + Instance, + RsrcTypeIdentifier, + ResourceJsonText, + JsonStructure + ); + if (!EFI_ERROR (Status)) { + break; + } + if (IsNodeAtEnd(&mRestJsonStructureList, &Instance->NextRestJsonStruct= ureInstance)) { + Status =3D EFI_UNSUPPORTED; + break; + } + Instance =3D (REST_JSON_STRUCTURE_INSTANCE *)GetNextNode (&mRestJsonSt= ructureList, &Instance->NextRestJsonStructureInstance); + }; + return Status; +} + +/** + This function destory REST property EFI structure which returned in + JsonToStructure(). + + @param[in] This EFI_REST_JSON_STRUCTURE_PROTOCOL instance. + @param[in] RestJSonHeader Property to destory. + + @retval EFI_SUCCESS + @retval Others + +**/ +EFI_STATUS +EFIAPI +RestJsonStructureDestroyStruct ( + IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This, + IN EFI_REST_JSON_STRUCTURE_HEADER *RestJSonHeader +) +{ + EFI_STATUS Status; + REST_JSON_STRUCTURE_INSTANCE *Instance; + + if (This =3D=3D NULL || RestJSonHeader =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + if (IsListEmpty (&mRestJsonStructureList)) { + return EFI_UNSUPPORTED; + } + Status =3D EFI_SUCCESS; + Instance =3D (REST_JSON_STRUCTURE_INSTANCE *)GetFirstNode (&mRestJsonStr= uctureList); + while (TRUE) { + Status =3D InterpreterInstanceDestoryJsonStruct ( + This, + Instance, + RestJSonHeader + ); + if (!EFI_ERROR (Status)) { + break; + } + if (IsNodeAtEnd(&mRestJsonStructureList, &Instance->NextRestJsonStruct= ureInstance)) { + Status =3D EFI_UNSUPPORTED; + break; + } + Instance =3D (REST_JSON_STRUCTURE_INSTANCE *)GetNextNode (&mRestJsonSt= ructureList, &Instance->NextRestJsonStructureInstance); + }; + return Status; +} + +/** + This function translates the given JSON C Structure to JSON text. + + @param[in] This EFI_REST_JSON_STRUCTURE_PROTOCOL instance. + @param[in] RestJSonHeader Given Restful resource. + @param[out] ResourceRaw Resource in RESTfuls service oriented. + + @retval EFI_SUCCESS + @retval Others Fail to remove the entry + +**/ +EFI_STATUS +EFIAPI +RestJsonStructureToJson ( + IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This, + IN EFI_REST_JSON_STRUCTURE_HEADER *RestJSonHeader, + OUT CHAR8 **ResourceRaw +) +{ + EFI_STATUS Status; + REST_JSON_STRUCTURE_INSTANCE *Instance; + + if (This =3D=3D NULL || RestJSonHeader =3D=3D NULL || ResourceRaw =3D=3D= NULL) { + return EFI_INVALID_PARAMETER; + } + + if (IsListEmpty (&mRestJsonStructureList)) { + return EFI_UNSUPPORTED; + } + Status =3D EFI_SUCCESS; + Instance =3D (REST_JSON_STRUCTURE_INSTANCE *)GetFirstNode (&mRestJsonStr= uctureList); + while (TRUE) { + Status =3D InterpreterEfiStructToInstance ( + This, + Instance, + RestJSonHeader, + ResourceRaw + ); + if (!EFI_ERROR (Status)) { + break; + } + if (IsNodeAtEnd(&mRestJsonStructureList, &Instance->NextRestJsonStruct= ureInstance)) { + Status =3D EFI_UNSUPPORTED; + break; + } + Instance =3D (REST_JSON_STRUCTURE_INSTANCE *)GetNextNode (&mRestJsonSt= ructureList, &Instance->NextRestJsonStructureInstance); + }; + return Status; +} + +EFI_REST_JSON_STRUCTURE_PROTOCOL mRestJsonStructureProtocol =3D { + RestJsonStructureRegister, + RestJsonStructureToStruct, + RestJsonStructureToJson, + RestJsonStructureDestroyStruct +}; + +/** + This is the declaration of an EFI image entry point. + + @param ImageHandle The firmware allocated handle for the UEFI= image. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The operation completed successfully. + @retval Others An unexpected error occurred. +**/ +EFI_STATUS +EFIAPI +RestJsonStructureEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + + InitializeListHead (&mRestJsonStructureList); + // + // Install the Restful Resource Interpreter Protocol. + // + mProtocolHandle =3D NULL; + Status =3D gBS->InstallProtocolInterface ( + &mProtocolHandle, + &gEfiRestJsonStructureProtocolGuid, + EFI_NATIVE_INTERFACE, + (VOID *)&mRestJsonStructureProtocol + ); + return Status; +} + +/** + This is the unload handle for Redfish discover module. + + Disconnect the driver specified by ImageHandle from all the devices in t= he handle database. + Uninstall all the protocols installed in the driver entry point. + + @param[in] ImageHandle The drivers' driver image. + + @retval EFI_SUCCESS The image is unloaded. + @retval Others Failed to unload the image. + +**/ +EFI_STATUS +EFIAPI +RestJsonStructureUnload ( + IN EFI_HANDLE ImageHandle + ) +{ + EFI_STATUS Status; + REST_JSON_STRUCTURE_INSTANCE *Instance; + REST_JSON_STRUCTURE_INSTANCE *NextInstance; + + if (IsListEmpty (&mRestJsonStructureList)) { + return EFI_SUCCESS; + } + // + // Free memory of REST_JSON_STRUCTURE_INSTANCE instance. + // + Instance =3D (REST_JSON_STRUCTURE_INSTANCE *)GetFirstNode (&mRestJsonStr= uctureList); + do { + NextInstance =3D NULL; + if (!IsNodeAtEnd(&mRestJsonStructureList, &Instance->NextRestJsonStruc= tureInstance)) { + NextInstance =3D (REST_JSON_STRUCTURE_INSTANCE *)GetNextNode (&mRest= JsonStructureList, &Instance->NextRestJsonStructureInstance); + } + FreePool ((VOID *)Instance); + Instance =3D NextInstance; + } while (Instance !=3D NULL); + + Status =3D gBS->UninstallProtocolInterface ( + mProtocolHandle, + &gEfiRestJsonStructureProtocolGuid, + (VOID *)&mRestJsonStructureProtocol + ); + return Status; +} diff --git a/RedfishPkg/RestJsonStructureDxe/RestJsonStructureDxe.inf b/Red= fishPkg/RestJsonStructureDxe/RestJsonStructureDxe.inf new file mode 100644 index 0000000000..2ab1e3bc45 --- /dev/null +++ b/RedfishPkg/RestJsonStructureDxe/RestJsonStructureDxe.inf @@ -0,0 +1,40 @@ +## @file +# Implementation of EFI REST JSON Structure Protocol. +# +# (C) Copyright 2020 Hewlett Packard Enterprise Development LP
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D RestJsonStructureDxe + FILE_GUID =3D 83FAAFBF-FC4B-469F-892A-798E66A6F50A + MODULE_TYPE =3D DXE_DRIVER + VERSION_STRING =3D 1.0 + ENTRY_POINT =3D RestJsonStructureEntryPoint + UNLOAD_IMAGE =3D RestJsonStructureUnload + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + RedfishPkg/RedfishPkg.dec + +[Sources] + RestJsonStructureDxe.c + RestJsonStructureInternal.h + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + UefiBootServicesTableLib + UefiDriverEntryPoint + UefiLib + +[Protocols] + gEfiRestJsonStructureProtocolGuid ## Producing + +[Depex] + TRUE + diff --git a/RedfishPkg/RestJsonStructureDxe/RestJsonStructureInternal.h b/= RedfishPkg/RestJsonStructureDxe/RestJsonStructureInternal.h new file mode 100644 index 0000000000..e8a3408404 --- /dev/null +++ b/RedfishPkg/RestJsonStructureDxe/RestJsonStructureInternal.h @@ -0,0 +1,33 @@ +/** @file + The internal definitions of EFI REST Resource JSON to C structure conver= tor + Protocol. + + (C) Copyright 2020 Hewlett Packard Enterprise Development LP
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef EFI_REST_JSON_STRUCTURE_INTERNAL_H_ +#define EFI_REST_JSON_STRUCTURE_INTERNAL_H_ + +#include +#include +#include +#include +#include +#include + +/// +/// Internal structure to maintain the information of JSON to +/// C structure convertor. +/// +typedef struct _REST_JSON_STRUCTURE_INSTANCE { + LIST_ENTRY NextRestJsonStructureInstance; ///< Next convertor instance + UINTN NumberOfNameSpaceToConvert; ///< Number of resource type = this convertor supports. + EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER *SupportedRsrcIndentifier; //= /< The resource type linklist + EFI_REST_JSON_STRUCTURE_TO_STRUCTURE JsonToStructure; //= /< JSON to C structure function + EFI_REST_JSON_STRUCTURE_TO_JSON StructureToJson; //= /< C structure to JSON function + EFI_REST_JSON_STRUCTURE_DESTORY_STRUCTURE DestroyStructure; //= /< Destory C struture function. +} REST_JSON_STRUCTURE_INSTANCE; +#endif --=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 (#66275): https://edk2.groups.io/g/devel/message/66275 Mute This Topic: https://groups.io/mt/77532167/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Nov 25 18:56:23 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+66277+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+66277+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=hpe.com ARC-Seal: i=1; a=rsa-sha256; t=1602779658; cv=none; d=zohomail.com; s=zohoarc; b=IVY8ibjmTMSBhkZvWjy1x6B2Xz1q9TIEjgVTEw4iUpBdmK0nM5UFZquHDy9Wd/sNB+h1UhV18CnRfs0UsxsixT/x0zICKQys+Z4KhSUfcIY0I+p2UIR7CKVFh0qDNhVIV63konSG34rVAIlnLKz8FEb8rss0J6/6/HPNr5oMg9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602779658; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=2Q2PHenbTOE6sS0T7/f0qVOrmlY1GUjFaOcH/mn/Oss=; b=kS0+nGQ6Y/mdqTwipEqQLTM1p6fdj6XoOiFSOeoGcZW4gQ5em4JR95szXLYMxoF5vELc6xo+Ulrh3w61D2ghgvF5M931a3gYQy1DoWi/L0vT8sbRMl4Oz3ySsPLyYz3uCe/u8yXE1DdYgD3hB/AEusGRAQEm6F3nLXr3kBbhahU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+66277+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1602779658407324.33434912040286; Thu, 15 Oct 2020 09:34:18 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id MYiQYY1788612xJwGFY03tES; Thu, 15 Oct 2020 09:34:18 -0700 X-Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web12.16540.1602779657406972611 for ; Thu, 15 Oct 2020 09:34:17 -0700 X-Received: from pps.filterd (m0134423.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 09FGXmqM012896; Thu, 15 Oct 2020 16:34:16 GMT X-Received: from g4t3425.houston.hpe.com (g4t3425.houston.hpe.com [15.241.140.78]) by mx0b-002e3701.pphosted.com with ESMTP id 345k8q3gyv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Oct 2020 16:34:16 +0000 X-Received: from g9t2301.houston.hpecorp.net (g9t2301.houston.hpecorp.net [16.220.97.129]) by g4t3425.houston.hpe.com (Postfix) with ESMTP id 0FAD9AC; Thu, 15 Oct 2020 16:34:16 +0000 (UTC) X-Received: from abner-virtual-machine.asiapacific.hpqcorp.net (abner-virtual-machine.asiapacific.hpqcorp.net [15.119.210.153]) by g9t2301.houston.hpecorp.net (Postfix) with ESMTP id 9679D4C; Thu, 15 Oct 2020 16:34:14 +0000 (UTC) From: "Abner Chang" To: devel@edk2.groups.io Cc: Jiaxin Wu , Siyuan Fu , Fan Wang , Jiewen Yao , Nickle Wang Subject: [edk2-devel] [RestJsonStructureDxe PATCH v3 3/3] RedfishPkg: Changes on RedfishPkg for CI test Date: Thu, 15 Oct 2020 23:49:28 +0800 Message-Id: <20201015154928.16211-4-abner.chang@hpe.com> In-Reply-To: <20201015154928.16211-1-abner.chang@hpe.com> References: <20201015154928.16211-1-abner.chang@hpe.com> X-HPE-SCL: -1 Precedence: Bulk List-Unsubscribe: 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,abner.chang@hpe.com X-Gm-Message-State: nlSYCSSI5969drnYE96EMHHOx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1602779658; bh=t1NgRYZJ0QKu+grTVTueR6gvFmN/0euPzJDTtFg3K/8=; h=Cc:Date:From:Reply-To:Subject:To; b=E65yrsFToPcqGUK+rR6M0t9KXOyB4YyISvnCuo8Uf22cBcCGqQ0J+uJAlG4q9YKXPT5 v8ocQmaZw99SQKqb5AEINe/Oew/LLt5TAFM8euCsx2ERCPxcbVWNCjX6cIHOdVYjnfNGh cqgIJdRAXS0fN8+FVRGj6cSh3UN+XHViFvM= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" - Add accepted dependency of RedfishPkg in RedfishPkg CI yaml file. - Add NO-TARGET in RedfishPkg.dsc for CI test. Signed-off-by: Abner Chang Cc: Jiaxin Wu Cc: Siyuan Fu Cc: Fan Wang Cc: Jiewen Yao Cc: Nickle Wang Reviewed-by: Nickle Wang --- RedfishPkg/RedfishPkg.ci.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/RedfishPkg/RedfishPkg.ci.yaml b/RedfishPkg/RedfishPkg.ci.yaml index 75c3b6a8ad..bb3b8b6746 100644 --- a/RedfishPkg/RedfishPkg.ci.yaml +++ b/RedfishPkg/RedfishPkg.ci.yaml @@ -29,7 +29,8 @@ "AcceptableDependencies": [ "MdePkg/MdePkg.dec", "MdeModulePkg/MdeModulePkg.dec", - "NetworkPkg/NetworkPkg.dec" + "NetworkPkg/NetworkPkg.dec", + "RedfishPkg/RedfishPkg.dec" ], # For host based unit tests "AcceptableDependencies-HOST_APPLICATION":[], --=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 (#66277): https://edk2.groups.io/g/devel/message/66277 Mute This Topic: https://groups.io/mt/77532169/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-