Index: sources/model/hd/adjustment/settings/MAdjustHDSerialNumberResponse.cpp =================================================================== diff -u -r27cc308ff5113a9386899d3c8f8b29962a8498e1 -r44550c670a421059754a70e2ce517e81f29c2e5d --- sources/model/hd/adjustment/settings/MAdjustHDSerialNumberResponse.cpp (.../MAdjustHDSerialNumberResponse.cpp) (revision 27cc308ff5113a9386899d3c8f8b29962a8498e1) +++ sources/model/hd/adjustment/settings/MAdjustHDSerialNumberResponse.cpp (.../MAdjustHDSerialNumberResponse.cpp) (revision 44550c670a421059754a70e2ce517e81f29c2e5d) @@ -22,9 +22,37 @@ }; } +/** + * \brief MAdjustSerialNumberHDResponse::isValid + * \details Checks if character meets HD serial constraints. (alphanumeric or '-') + * \param vChar - the character. + * \return bool - whether character is valid. + */ +bool MAdjustSerialNumberHDResponse::isValid(const QChar &vChar) +{ + return vChar.isLetterOrNumber() || vChar == '-'; +} + +/** + * \brief MAdjustSerialNumberHDResponse::fromByteArray + * \details Removes any invalid characters from HD serial string. + * \param vByteArray - HD serial string represented as a byte array. + * \return bool - whether serial contains any valid characters. + */ bool MAdjustSerialNumberHDResponse::fromByteArray(const QByteArray &vByteArray, int *) { - _data.mSerialNumber = qPrintable(vByteArray); - return true; + QString serial; + for ( char c: vByteArray ) { + // stop if end of file found while iterating through serial + 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(); } MAdjustSerialNumberHDResponse::Data MAdjustSerialNumberHDResponse::data() const {