| /** @file | |
| Hardware information parser library. | |
| Copyright (c) 2021, ARM Limited. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef HW_INFO_PARSER_LIB_H_ | |
| #define HW_INFO_PARSER_LIB_H_ | |
| #include <ConfigurationManagerObject.h> | |
| /** A handle to the HwInfoParser instance. | |
| */ | |
| typedef VOID *HW_INFO_PARSER_HANDLE; | |
| /** Function pointer called by the parser to add information. | |
| Callback function that the parser can use to add new | |
| CmObj. This function must copy the CmObj data and not rely on | |
| the parser preserving the CmObj memory. | |
| This function is responsible of the Token allocation. | |
| @param [in] ParserHandle A handle to the parser instance. | |
| @param [in] Context A pointer to the caller's context provided in | |
| HwInfoParserInit (). | |
| @param [in] CmObjDesc CM_OBJ_DESCRIPTOR containing the CmObj(s) to add. | |
| @param [out] Token If provided and success, contain the token | |
| generated for the CmObj. | |
| @retval EFI_SUCCESS The function completed successfully. | |
| @retval EFI_INVALID_PARAMETER Invalid parameter. | |
| **/ | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *HW_INFO_ADD_OBJECT)( | |
| IN HW_INFO_PARSER_HANDLE ParserHandle, | |
| IN VOID *Context, | |
| IN CONST CM_OBJ_DESCRIPTOR *CmObjDesc, | |
| OUT CM_OBJECT_TOKEN *Token OPTIONAL | |
| ); | |
| /** Initialise the HwInfoParser. | |
| The HwInfoParser shall use the information provided by the HwDataSource | |
| to initialise the internal state of the parser or to index the data. This | |
| internal state shall be linked to the ParserHandle using an implementation | |
| defined mechanism. | |
| @param [in] HwDataSource Pointer to the blob containing the hardware | |
| information. It can be a pointer to a Device | |
| Tree, an XML file, etc. or any other data | |
| structure defined by the HwInfoParser. | |
| @param [in] Context A pointer to the caller's context. | |
| @param [in] HwInfoAdd Function pointer called by the parser when | |
| adding information. | |
| @param [out] ParserHandle A handle to the parser instance. | |
| @retval EFI_SUCCESS The function completed successfully. | |
| @retval EFI_INVALID_PARAMETER Invalid parameter. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| HwInfoParserInit ( | |
| IN VOID *HwDataSource, | |
| IN VOID *Context, | |
| IN HW_INFO_ADD_OBJECT HwInfoAdd, | |
| OUT HW_INFO_PARSER_HANDLE *ParserHandle | |
| ); | |
| /** Parse the data provided by the HwDataSource. | |
| @param [in] ParserHandle A handle to the parser instance. | |
| @retval EFI_SUCCESS The function completed successfully. | |
| @retval EFI_INVALID_PARAMETER Invalid parameter. | |
| @retval EFI_OUT_OF_RESOURCES An allocation has failed. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| HwInfoParse ( | |
| IN HW_INFO_PARSER_HANDLE ParserHandle | |
| ); | |
| /** Cleanup any internal state and resources that were allocated | |
| by the HwInfoParser. | |
| @param [in] ParserHandle A handle to the parser instance. | |
| @retval EFI_SUCCESS The function completed successfully. | |
| @retval EFI_INVALID_PARAMETER Invalid parameter. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| HwInfoParserShutdown ( | |
| IN HW_INFO_PARSER_HANDLE ParserHandle | |
| ); | |
| #endif // HW_INFO_PARSER_LIB_H_ |