added skipFirstSymbols param to getDataStr()

This commit is contained in:
john30
2017-02-19 10:46:56 +01:00
parent 735a4a8b7c
commit de40346c6b
2 changed files with 10 additions and 5 deletions
+8 -4
View File
@@ -88,14 +88,16 @@ result_t SymbolString::parseHex(const string& str, const bool isEscaped) {
return RESULT_OK; return RESULT_OK;
} }
const string SymbolString::getDataStr(const bool unescape, const bool skipLastSymbol) { const string SymbolString::getDataStr(const bool unescape, const bool skipLastSymbol,
ostringstream sstr; unsigned char skipFirstSymbols) {
bool previousEscape = false; bool previousEscape = false;
ostringstream sstr;
for (size_t i = 0; i < m_data.size(); i++) { for (size_t i = 0; i < m_data.size(); i++) {
unsigned char value = m_data[i]; unsigned char value = m_data[i];
if (m_unescapeState == 0 && unescape && previousEscape) { if (m_unescapeState == 0 && unescape && previousEscape) {
if (!skipLastSymbol || i+1 < m_data.size()) { if (skipFirstSymbols > 0) {
skipFirstSymbols--;
} else if (!skipLastSymbol || i+1 < m_data.size()) {
if (value == 0x00) { if (value == 0x00) {
sstr << "a9"; // ESC sstr << "a9"; // ESC
} else if (value == 0x01) { } else if (value == 0x01) {
@@ -107,6 +109,8 @@ const string SymbolString::getDataStr(const bool unescape, const bool skipLastSy
previousEscape = false; previousEscape = false;
} else if (m_unescapeState == 0 && unescape && value == ESC) { } else if (m_unescapeState == 0 && unescape && value == ESC) {
previousEscape = true; // escape sequence not yet finished previousEscape = true; // escape sequence not yet finished
} else if (skipFirstSymbols > 0) {
skipFirstSymbols--;
} else if (!skipLastSymbol || i+1 < m_data.size()) { } else if (!skipLastSymbol || i+1 < m_data.size()) {
sstr << nouppercase << setw(2) << hex sstr << nouppercase << setw(2) << hex
<< setfill('0') << static_cast<unsigned>(value); << setfill('0') << static_cast<unsigned>(value);
+2 -1
View File
@@ -108,7 +108,8 @@ class SymbolString {
* @param skipLastSymbol whether to skip the last symbol (probably the CRC). * @param skipLastSymbol whether to skip the last symbol (probably the CRC).
* @return the symbols as hex string. * @return the symbols as hex string.
*/ */
const string getDataStr(const bool unescape = true, const bool skipLastSymbol = true); const string getDataStr(const bool unescape = true, const bool skipLastSymbol = true,
unsigned char skipFirstSymbols = 0);
/** /**
* Return a reference to the symbol at the specified index. * Return a reference to the symbol at the specified index.