From nobody Sat Feb 7 06:20:32 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+66790+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+66790+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=hpe.com ARC-Seal: i=1; a=rsa-sha256; t=1604021762; cv=none; d=zohomail.com; s=zohoarc; b=O4oeDmSeYpP7OOins02pVTL7dH2WT5YcHuM65WimF0jmC9HBGwnBcYLMBZ6W/A6iz22yfd//FwTd7un+u9itYau405mvv6nQhJUUg5YJrRwa6JZqH1g0mzc3x7DMQdb2ukX/mlEIUkLjti2qBNdUimSt01H9zcVNGvKS0xDzHto= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1604021762; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=G6tH1j9UPQtx5sxtNZu1uv0PFJoFLITvJz3E8QMWSHM=; b=SXIzwYgZLXRUkHdffXqAnoBxmpYW29fyRM7LZt7KtIEXfPt1pM5RuAKdkrWLp1zELSXj2dWl6BKNFIoOIAdxrvTJFPiPf8l8I6j2D90VyH5J5lgJQpIGxwmmT5fcCnQnAbBsM4RPfYzxlKBjITRfp9LW6KTqVIaL1hv08Du11kE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+66790+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1604021762450391.7800817471923; Thu, 29 Oct 2020 18:36:02 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 30XHYY1788612xl3qy3QbvNv; Thu, 29 Oct 2020 18:36:02 -0700 X-Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by mx.groups.io with SMTP id smtpd.web08.7132.1604021760879583505 for ; Thu, 29 Oct 2020 18:36:00 -0700 X-Received: from pps.filterd (m0134421.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 09U1UfQt016813; Fri, 30 Oct 2020 01:35:57 GMT X-Received: from g2t2352.austin.hpe.com (g2t2352.austin.hpe.com [15.233.44.25]) by mx0b-002e3701.pphosted.com with ESMTP id 34f5471b60-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 30 Oct 2020 01:35:57 +0000 X-Received: from g2t2360.austin.hpecorp.net (g2t2360.austin.hpecorp.net [16.196.225.135]) by g2t2352.austin.hpe.com (Postfix) with ESMTP id 60B5A9C; Fri, 30 Oct 2020 01:35:56 +0000 (UTC) X-Received: from abner-virtual-machine.asiapacific.hpqcorp.net (abner-virtual-machine.asiapacific.hpqcorp.net [15.119.210.153]) by g2t2360.austin.hpecorp.net (Postfix) with ESMTP id 83A3436; Fri, 30 Oct 2020 01:35:53 +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 v4 1/3] MdePkg/Include: Definitions of EFI REST JSON Structure Protocol Date: Fri, 30 Oct 2020 08:50:31 +0800 Message-Id: <20201030005033.31953-2-abner.chang@hpe.com> In-Reply-To: <20201030005033.31953-1-abner.chang@hpe.com> References: <20201030005033.31953-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: 5TEmkhMIbJ9DPyqeXZ91tKONx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1604021762; bh=imvKrhbplv6qGgw1fsPN0VlCU6CKuqp89f1JdwsQVGQ=; h=Cc:Date:From:Reply-To:Subject:To; b=KKYuKjHPAkAVAXKZDwYnmt9qrz/vFWvGqgeWBxd1PrO3mKGVMRQfWx53elcnqY8JhO3 eexrmNIbZkn7Q96LUW2ENnze0cf/tbDeOxo4aAgG54UPMihUtZnT/Y+r58rKdxCPqvzee n00/H+x4rceSSZtG/vQ4qi2/2+35Hbu3wtU= 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..c9e9a35a41 --- /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 retu= rned 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 (#66790): https://edk2.groups.io/g/devel/message/66790 Mute This Topic: https://groups.io/mt/77902814/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-