| /** @file | |
| Copyright (c) 2017 - 2018, ARM Limited. All rights reserved. | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| @par Glossary: | |
| - Cm or CM - Configuration Manager | |
| - Obj or OBJ - Object | |
| **/ | |
| #ifndef CONFIGURATION_MANAGER_PROTOCOL_H_ | |
| #define CONFIGURATION_MANAGER_PROTOCOL_H_ | |
| #include <ConfigurationManagerObject.h> | |
| /** This macro defines the Configuration Manager Protocol GUID. | |
| GUID: {D85A4835-5A82-4894-AC02-706F43D5978E} | |
| */ | |
| #define EDKII_CONFIGURATION_MANAGER_PROTOCOL_GUID \ | |
| { 0xd85a4835, 0x5a82, 0x4894, \ | |
| { 0xac, 0x2, 0x70, 0x6f, 0x43, 0xd5, 0x97, 0x8e } \ | |
| }; | |
| /** This macro defines the Configuration Manager Protocol Revision. | |
| */ | |
| #define EDKII_CONFIGURATION_MANAGER_PROTOCOL_REVISION CREATE_REVISION (1, 0) | |
| #pragma pack(1) | |
| /** | |
| Forward declarations: | |
| */ | |
| typedef struct ConfigurationManagerProtocol EDKII_CONFIGURATION_MANAGER_PROTOCOL; | |
| typedef struct PlatformRepositoryInfo EDKII_PLATFORM_REPOSITORY_INFO; | |
| /** The GetObject function defines the interface implemented by the | |
| Configuration Manager Protocol for returning the Configuration | |
| Manager Objects. | |
| @param [in] This Pointer to the Configuration Manager Protocol. | |
| @param [in] CmObjectId The Configuration Manager Object ID. | |
| @param [in] Token An optional token identifying the object. If | |
| unused this must be CM_NULL_TOKEN. | |
| @param [out] CmObject Pointer to the Configuration Manager Object | |
| descriptor describing the requested Object. | |
| @retval EFI_SUCCESS Success. | |
| @retval EFI_INVALID_PARAMETER A parameter is invalid. | |
| @retval EFI_NOT_FOUND The required object information is not found. | |
| @retval EFI_BAD_BUFFER_SIZE The size returned by the Configuration Manager | |
| is less than the Object size for the requested | |
| object. | |
| **/ | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EDKII_CONFIGURATION_MANAGER_GET_OBJECT)( | |
| IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST This, | |
| IN CONST CM_OBJECT_ID CmObjectId, | |
| IN CONST CM_OBJECT_TOKEN Token OPTIONAL, | |
| IN OUT CM_OBJ_DESCRIPTOR *CONST CmObject | |
| ); | |
| /** The SetObject function defines the interface implemented by the | |
| Configuration Manager Protocol for updating the Configuration | |
| Manager Objects. | |
| @param [in] This Pointer to the Configuration Manager Protocol. | |
| @param [in] CmObjectId The Configuration Manager Object ID. | |
| @param [in] Token An optional token identifying the object. If | |
| unused this must be CM_NULL_TOKEN. | |
| @param [out] CmObject Pointer to the Configuration Manager Object | |
| descriptor describing the Object. | |
| @retval EFI_SUCCESS The operation completed successfully. | |
| @retval EFI_INVALID_PARAMETER A parameter is invalid. | |
| @retval EFI_NOT_FOUND The required object information is not found. | |
| @retval EFI_BAD_BUFFER_SIZE The size returned by the Configuration Manager | |
| is less than the Object size for the requested | |
| object. | |
| @retval EFI_UNSUPPORTED This operation is not supported. | |
| **/ | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EDKII_CONFIGURATION_MANAGER_SET_OBJECT)( | |
| IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST This, | |
| IN CONST CM_OBJECT_ID CmObjectId, | |
| IN CONST CM_OBJECT_TOKEN Token OPTIONAL, | |
| IN CM_OBJ_DESCRIPTOR *CONST CmObject | |
| ); | |
| /** The EDKII_CONFIGURATION_MANAGER_PROTOCOL structure describes the | |
| Configuration Manager Protocol interface. | |
| */ | |
| typedef struct ConfigurationManagerProtocol { | |
| /// The Configuration Manager Protocol revision. | |
| UINT32 Revision; | |
| /** The interface used to request information about | |
| the Configuration Manager Objects. | |
| */ | |
| EDKII_CONFIGURATION_MANAGER_GET_OBJECT GetObject; | |
| /** The interface used to update the information stored | |
| in the Configuration Manager repository. | |
| */ | |
| EDKII_CONFIGURATION_MANAGER_SET_OBJECT SetObject; | |
| /** Pointer to an implementation defined abstract repository | |
| provisioned by the Configuration Manager. | |
| */ | |
| EDKII_PLATFORM_REPOSITORY_INFO *PlatRepoInfo; | |
| } EDKII_CONFIGURATION_MANAGER_PROTOCOL; | |
| /** The Configuration Manager Protocol GUID. | |
| */ | |
| extern EFI_GUID gEdkiiConfigurationManagerProtocolGuid; | |
| #pragma pack() | |
| #endif // CONFIGURATION_MANAGER_PROTOCOL_H_ |