mirror of https://github.com/acidanthera/audk.git
MdePkg/Include: Definitions of EFI REST JSON Structure Protocol
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 <abner.chang@hpe.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Cc: Jiaxin Wu <jiaxin.wu@intel.com> Cc: Siyuan Fu <siyuan.fu@intel.com> Cc: Fan Wang <fan.wang@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Nickle Wang <nickle.wang@hpe.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
This commit is contained in:
parent
2363c69260
commit
ed038688bf
|
@ -0,0 +1,161 @@
|
|||
/** @file
|
||||
This file defines the EFI REST JSON Structure Protocol interface.
|
||||
|
||||
(C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
|
||||
|
||||
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_PROTOCOL;
|
||||
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 resource 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; ///< Resource identifier which use to
|
||||
///< choice the proper interpreter.
|
||||
///< Follow by a pointer points to JSON structure, the content in the
|
||||
///< JSON structure is implementation-specific according to converter producer.
|
||||
VOID *JsonStructurePointer;
|
||||
} EFI_REST_JSON_STRUCTURE_HEADER;
|
||||
|
||||
/**
|
||||
JSON-IN C Structure-OUT function. Convert the given REST JSON resource into structure.
|
||||
|
||||
@param[in] This This is the EFI_REST_JSON_STRUCTURE_PROTOCOL instance.
|
||||
@param[in] JsonRsrcIdentifier This indicates the resource type and version 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_PROTOCOL 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_PROTOCOL 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 registration.
|
||||
|
||||
@param[in] This This is the EFI_REST_JSON_STRUCTURE_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 returned 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; ///< Register JSON to C structure convertor
|
||||
EFI_REST_JSON_STRUCTURE_TO_STRUCTURE ToStructure; ///< The function to convert JSON to C structure
|
||||
EFI_REST_JSON_STRUCTURE_TO_JSON ToJson; ///< The function to convert C structure to JSON
|
||||
EFI_REST_JSON_STRUCTURE_DESTORY_STRUCTURE DestoryStructure; ///< Destory C structure.
|
||||
};
|
||||
|
||||
#endif
|
|
@ -1855,6 +1855,9 @@
|
|||
gEfiRestExProtocolGuid = { 0x55648b91, 0xe7d, 0x40a3, { 0xa9, 0xb3, 0xa8, 0x15, 0xd7, 0xea, 0xdf, 0x97 }}
|
||||
gEfiRestExServiceBindingProtocolGuid = { 0x456bbe01, 0x99d0, 0x45ea, { 0xbb, 0x5f, 0x16, 0xd8, 0x4b, 0xed, 0xc5, 0x59 }}
|
||||
|
||||
## Include/Protocol/RestJsonStructure.h
|
||||
gEfiRestJsonStructureProtocolGuid = { 0xa9a048f6, 0x48a0, 0x4714, {0xb7, 0xda, 0xa9, 0xad,0x87, 0xd4, 0xda, 0xc9 }}
|
||||
|
||||
#
|
||||
# Protocols defined in Shell2.0
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue