Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
9ca735c68This file is pinned to the selected release. Download the original to open it in your design tool.
// SPDX-License-Identifier: Apache-2.0
/*
* Copyright (c) 2021 Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
*/
#ifndef SRC_DFUFILEPARSER_HPP_
#define SRC_DFUFILEPARSER_HPP_
#include <string>
#include "configBitstreamParser.hpp"
/*!
* \file dfuFileParser
* \class DFUFileParser
* \brief class used to read a DFU data file
* \author Gwenhael Goavec-Merou
*/
class DFUFileParser: public ConfigBitstreamParser {
public:
/*!
* \brief constructor
* \param[in] filename: raw file to read
*/
DFUFileParser(const std::string &filename, bool verbose);
/*!
* \brief read full content of the file, fill the buffer
* \return EXIT_SUCCESS is file is fully read, EXIT_FAILURE otherwise
*/
int parse() override;
/*!
* \brief read DFU suffix content of the file, fill _hdr structure
* \return EXIT_SUCCESS if suffix is fully read, EXIT_FAILURE otherwise
*/
int parseHeader();
/*!
* \brief return vendor id associated
* \return _idVendor
*/
uint16_t vendorID() const noexcept {return _idVendor;}
/*!
* \brief return product id associated
* \return _idProduct
*/
uint16_t productID() const noexcept {return _idProduct;}
private:
/*!
* \brief information in the suffix file part
*/
uint16_t _bcdDFU; /**< specification number */
uint16_t _idVendor; /**< device VID */
uint16_t _idProduct; /**< device PID */
uint16_t _bcdDevice; /**< release number */
uint32_t _dwCRC; /**< data CRC */
uint8_t _bLength; /**< DFU suffix length */
};
#endif // SRC_DFUFILEPARSER_HPP_