/** @file | |
AML Resource Data Parser. | |
Copyright (c) 2019 - 2020, Arm Limited. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
@par Glossary: | |
- Rd or RD - Resource Data | |
- Rds or RDS - Resource Data Small | |
- Rdl or RDL - Resource Data Large | |
**/ | |
#ifndef AML_RESOURCE_DATA_PARSER_H_ | |
#define AML_RESOURCE_DATA_PARSER_H_ | |
#include <AmlNodeDefines.h> | |
#include <Stream/AmlStream.h> | |
#include <ResourceData/AmlResourceData.h> | |
/** Check whether the input stream is pointing to a valid list | |
of resource data elements. | |
The check is based on the size of resource data elements. | |
This means that a buffer can pass this check with non-existing descriptor Ids | |
that have a correct size. | |
A list of resource data elements can contain one unique resource data | |
element, without an end tag resource data. This is the case for | |
a FieldList. | |
@param [in] FStream Forward stream ideally pointing to a resource | |
data element. The stream is not | |
modified/progressing. | |
The stream must not be at its end. | |
@retval TRUE The buffer is holding a valid list of resource data elements. | |
@retval FALSE Otherwise. | |
**/ | |
BOOLEAN | |
EFIAPI | |
AmlRdIsResourceDataBuffer ( | |
IN CONST AML_STREAM *FStream | |
); | |
/** Parse a ResourceDataBuffer. | |
For each resource data element, create a data node | |
and add them to the variable list of arguments of the BufferNode. | |
The input stream is expected to point to a valid list of resource data | |
elements. A function is available to check it for the caller. | |
@param [in] BufferNode Buffer node. | |
@param [in] FStream Forward stream pointing to a resource data | |
element. | |
The stream must not be at its end. | |
@retval EFI_SUCCESS The function completed successfully. | |
@retval EFI_INVALID_PARAMETER Invalid parameter. | |
@retval EFI_OUT_OF_RESOURCES Could not allocate memory. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
AmlParseResourceData ( | |
IN AML_OBJECT_NODE *BufferNode, | |
IN AML_STREAM *FStream | |
); | |
#endif // AML_RESOURCE_DATA_PARSER_H_ |