mcsParser: length must be in bit. Allows to store data in direct or reverse Byte order

This commit is contained in:
Gwenhael Goavec-Merou 2020-05-19 07:58:08 +02:00
parent dec69596d3
commit 64754604f6
2 changed files with 7 additions and 6 deletions

View File

@ -41,10 +41,10 @@ using namespace std;
#define TYPE_BASE 7 #define TYPE_BASE 7
#define DATA_BASE 9 #define DATA_BASE 9
McsParser::McsParser(string filename, bool verbose): McsParser::McsParser(string filename, bool reverseOrder, bool verbose):
ConfigBitstreamParser(filename, ConfigBitstreamParser::ASCII_MODE, ConfigBitstreamParser(filename, ConfigBitstreamParser::ASCII_MODE,
verbose), verbose),
_base_addr(0) _base_addr(0), _reverseOrder(reverseOrder)
{} {}
int McsParser::parse() int McsParser::parse()
@ -56,7 +56,7 @@ int McsParser::parse()
getline(_fd, str); getline(_fd, str);
ret = parseLine(str); ret = parseLine(str);
} while (ret == 0); } while (ret == 0);
return ret; return (ret < 0) ? EXIT_FAILURE : EXIT_SUCCESS;
} }
int McsParser::parseLine(string buffer) int McsParser::parseLine(string buffer)
@ -87,10 +87,10 @@ int McsParser::parseLine(string buffer)
ptr = (char *)(buff + DATA_BASE); ptr = (char *)(buff + DATA_BASE);
for (int i = 0; i < byteLen; i++, ptr += 2) { for (int i = 0; i < byteLen; i++, ptr += 2) {
sscanf(ptr, "%2hx", &tmp); sscanf(ptr, "%2hx", &tmp);
_bit_data[loc_addr + i] = tmp; _bit_data[loc_addr + i] = (_reverseOrder)? reverseByte(tmp):tmp;
sum += tmp; sum += tmp;
} }
_bit_length +=byteLen; _bit_length += (byteLen * 8);
} else if (type == 1) { } else if (type == 1) {
return 1; return 1;
} else if (type == 4) { } else if (type == 4) {

View File

@ -22,13 +22,14 @@
class McsParser: public ConfigBitstreamParser { class McsParser: public ConfigBitstreamParser {
public: public:
McsParser(std::string filename, bool verbose); McsParser(std::string filename, bool reverseOrder, bool verbose);
int parse(); int parse();
private: private:
int parseLine(std::string buffer); int parseLine(std::string buffer);
int _base_addr; int _base_addr;
bool _reverseOrder;
}; };
#endif #endif