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

View File

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