From bfd7e9b6ed4ed2ae2e678aeb43144c61f32a77f0 Mon Sep 17 00:00:00 2001 From: Gwenhael Goavec-Merou Date: Mon, 24 Aug 2020 08:53:30 +0200 Subject: [PATCH] anlogicBitParser: allows to reverse (or not) bytes --- src/anlogicBitParser.cpp | 11 ++++++++--- src/anlogicBitParser.hpp | 4 +++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/anlogicBitParser.cpp b/src/anlogicBitParser.cpp index e4dda9b..3aa7568 100644 --- a/src/anlogicBitParser.cpp +++ b/src/anlogicBitParser.cpp @@ -31,8 +31,10 @@ using namespace std; -AnlogicBitParser::AnlogicBitParser(const string &filename, bool verbose): - ConfigBitstreamParser(filename, ConfigBitstreamParser::BIN_MODE, verbose) +AnlogicBitParser::AnlogicBitParser(const string &filename, bool reverseOrder, + bool verbose): + ConfigBitstreamParser(filename, ConfigBitstreamParser::BIN_MODE, verbose), + _reverseOrder(reverseOrder) {} AnlogicBitParser::~AnlogicBitParser() @@ -136,7 +138,10 @@ int AnlogicBitParser::parse() _bit_data.clear(); for (auto it = blocks.begin(); it != blocks.end(); it++) { for (size_t pos = 0; pos < it->size(); pos++) { - _bit_data += reverseByte(((*it)[pos])); + if (_reverseOrder == true) + _bit_data += reverseByte(((*it)[pos])); + else + _bit_data += ((*it)[pos]); } } _bit_length = _bit_data.size() * 8; diff --git a/src/anlogicBitParser.hpp b/src/anlogicBitParser.hpp index 8851ea9..ca8e071 100644 --- a/src/anlogicBitParser.hpp +++ b/src/anlogicBitParser.hpp @@ -30,13 +30,15 @@ */ class AnlogicBitParser: public ConfigBitstreamParser { public: - AnlogicBitParser(const std::string &filename, bool verbose = false); + AnlogicBitParser(const std::string &filename, bool reverseOrder, + bool verbose = false); ~AnlogicBitParser(); int parse() override; void displayHeader(); private: int parseHeader(); + bool _reverseOrder; }; #endif // SRC_ANLOGICBITPARSER_HPP_