| /** |
| * |
| * Copyright (c) 2020 Project CHIP Authors |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /** |
| * @file |
| * This file describes a AdditionalData Payload parser based on the |
| * CHIP specification. |
| */ |
| |
| #pragma once |
| |
| #include "AdditionalDataPayload.h" |
| |
| #include <lib/core/CHIPError.h> |
| #include <stdint.h> |
| |
| namespace chip { |
| |
| /** |
| * @class AdditionalDataPayloadParser |
| * A class that can be used to convert a HEX encoded payload to a AdditionalDataPayload object |
| * */ |
| class AdditionalDataPayloadParser |
| { |
| private: |
| const uint8_t * mPayloadBufferData; |
| const size_t mPayloadBufferLength; |
| |
| public: |
| /** |
| * Constructs the Additional Data payload parser with payload buffer data |
| * and the buffer size |
| * |
| * @param[in] payloadBufferData The buffer data for the additional data payload, |
| * it needs to outlive the lifetime of this parse. |
| * @param[in] payloadBufferLength The buffer data length for the additional data payload. |
| */ |
| AdditionalDataPayloadParser(const uint8_t * payloadBufferData, const size_t payloadBufferLength) : |
| mPayloadBufferData(payloadBufferData), mPayloadBufferLength(payloadBufferLength) |
| {} |
| |
| /** |
| * Parses the Additional Data payload buffer and constructs all the fields |
| * of the Additional Data structure. |
| * |
| * @param[out] outPayload Additional data payload stucture. |
| * |
| * |
| * @retval #CHIP_NO_ERROR If the reader was successfully positioned on a new element. |
| * @retval #CHIP_END_OF_TLV If no further elements are available. |
| * @retval #CHIP_ERROR_TLV_UNDERRUN If the underlying TLV encoding ended prematurely. |
| * @retval #CHIP_ERROR_INVALID_TLV_ELEMENT |
| * If the reader encountered an invalid or unsupported TLV element |
| * type. |
| * @retval #CHIP_ERROR_INVALID_TLV_TAG If the reader encountered a TLV tag in an invalid context. |
| * @retval #CHIP_ERROR_UNKNOWN_IMPLICIT_TLV_TAG |
| * If the reader encountered a implicitly-encoded TLV tag for which |
| * the corresponding profile id is unknown. |
| * @retval other Other CHIP or platform error codes returned by the configured |
| * GetNextBuffer() function. Only possible when GetNextBuffer is |
| * non-NULL. |
| */ |
| CHIP_ERROR populatePayload(SetupPayloadData::AdditionalDataPayload & outPayload); |
| }; |
| |
| } // namespace chip |