Index: sources/model/dg/adjustment/settings/MAdjustDGSerialNumberResponse.cpp =================================================================== diff -u -r27cc308ff5113a9386899d3c8f8b29962a8498e1 -r44550c670a421059754a70e2ce517e81f29c2e5d --- sources/model/dg/adjustment/settings/MAdjustDGSerialNumberResponse.cpp (.../MAdjustDGSerialNumberResponse.cpp) (revision 27cc308ff5113a9386899d3c8f8b29962a8498e1) +++ sources/model/dg/adjustment/settings/MAdjustDGSerialNumberResponse.cpp (.../MAdjustDGSerialNumberResponse.cpp) (revision 44550c670a421059754a70e2ce517e81f29c2e5d) @@ -22,9 +22,37 @@ }; } +/** + * \brief MAdjustSerialNumberDGResponse::isValid + * \details Checks if character meets DG serial constraints. (Alphanumeric or '-') + * \param vChar - the character. + * \return bool - whether character is valid. + */ +bool MAdjustSerialNumberDGResponse::isValid(const QChar &vChar) +{ + return vChar.isLetterOrNumber() || vChar == '-'; +} + +/** + * \brief MAdjustSerialNumberDGResponse::fromByteArray + * \details Removes any invalid characters from DG serial string. + * \param vByteArray - DG serial string represented as a byte array. + * \return true if serial contains any valid characters. + */ bool MAdjustSerialNumberDGResponse::fromByteArray(const QByteArray &vByteArray, int *) { - _data.mSerialNumber = qPrintable(vByteArray); - return true; + // only keep valid characters from serial and stop if end of line reached + QString serial; + for ( char c: vByteArray ) { + if ( !c ) break; + QChar ch(c); + if ( isValid(ch) ) { + serial += ch; + } + } + + // whitespace cannot be in serial and empty serial is invalid + _data.mSerialNumber = serial.trimmed(); + return ! _data.mSerialNumber.isEmpty(); } MAdjustSerialNumberDGResponse::Data MAdjustSerialNumberDGResponse::data() const {