Index: sources/applicationcontroller.cpp =================================================================== diff -u -r4a6abe765f03feae8100ec660aa04aa218d4dfa3 -rd3edfbd78f021082f37c7ee79a5a31a57b2808d4 --- sources/applicationcontroller.cpp (.../applicationcontroller.cpp) (revision 4a6abe765f03feae8100ec660aa04aa218d4dfa3) +++ sources/applicationcontroller.cpp (.../applicationcontroller.cpp) (revision d3edfbd78f021082f37c7ee79a5a31a57b2808d4) @@ -240,7 +240,11 @@ QVariantList mData; int mFakeDataLen = gFakeData.length(); if (mFakeDataLen) { - createFakeSequencedLongMessage(mData, mFakeDataLen); + if (gFakeSeqAtBegin) { + createFakeSeqAtBeginLongMessage(mData, mFakeDataLen); + } else { + createFakeSequencedLongMessage (mData, mFakeDataLen); + } } else { mData += static_cast(GuiActionData::NoData); } @@ -257,34 +261,37 @@ void ApplicationController::createFakeSequencedLongMessage(QVariantList &vData, const int vFakeDataLen) { QByteArray data; - Types::U16 u16; if (vFakeDataLen == 1 && gFakeData == QByteArray::fromHex(gFakeData_default)) { - static quint64 txCount = 0; + static quint16 txCount = 0; + Types::U16 seq; + quint8 dataBytesLeft = 0; + const quint8 crcBytesLen = 2; for (int i = 0; i < 13; i++) { switch (i) { - case 0: - u16.value = txCount; - data += u16.bytes[0]; - data += u16.bytes[1]; + case 0: // First frame : HEAD + seq.value = txCount; + data += seq.bytes[0]; + data += seq.bytes[1]; break; - case 12: - for (int i = 0; i < 4; i++) { + case 12: // Last frame with CRC + dataBytesLeft = 8 - sizeof(seq) - crcBytesLen; + for (int i = 0; i < dataBytesLeft; i++) { data += (char)(0); } - u16.value = txCount; - data += u16.bytes[0]; - data += u16.bytes[1]; + seq.value = txCount; + data += seq.bytes[0]; + data += seq.bytes[1]; break; - default: - const quint8 dataBytesLeft = 8 - 2; // 2 Bytes for the txCount + default: // Middle Frames + dataBytesLeft = 8 - sizeof(seq); for (int i = 0; i < dataBytesLeft; i++) { data += (char)(0); } - u16.value = txCount; - data += u16.bytes[0]; - data += u16.bytes[1]; + seq.value = txCount; + data += seq.bytes[0]; + data += seq.bytes[1]; break; } Types::safeIncrement(txCount); @@ -294,3 +301,59 @@ vData += gFakeData; } } + +/*! + * \brief ApplicationController::createFakeSequencedAtBeginLongMessage + * \details This method is creating the fake message with frame sequence + * which we use for Denali Message test + * \param vFakeDataLen + */ +void ApplicationController::createFakeSeqAtBeginLongMessage(QVariantList &vData, const int vFakeDataLen) +{ + QByteArray data; + if (vFakeDataLen == 1 && gFakeData == QByteArray::fromHex(gFakeData_default)) { + static quint32 txCount = 0; + Types::U32 seq; + quint8 dataBytesLeft = 0; + const quint8 crcBytesLen = 2; + for (int i = 0; i < 13; i++) { + switch (i) { + case 0: // First frame : HEAD + seq.value = txCount; + data += seq.bytes[0]; + data += seq.bytes[1]; + //data += seq.bytes[3]; // Chopped off + //data += seq.bytes[4]; // Chopped off + break; + + case 12: // Last frame with CRC + seq.value = txCount; + data += seq.bytes[0]; + data += seq.bytes[1]; + data += seq.bytes[3]; + data += seq.bytes[4]; + dataBytesLeft = 8 - sizeof(seq) - crcBytesLen; + for (int i = 0; i < dataBytesLeft; i++) { + data += (char)(0); + } + break; + + default: // Middle Frames + dataBytesLeft = 8 - sizeof(seq); + seq.value = txCount; + data += seq.bytes[0]; + data += seq.bytes[1]; + data += seq.bytes[3]; + data += seq.bytes[4]; + for (int i = 0; i < dataBytesLeft; i++) { + data += (char)(0); + } + break; + } + Types::safeIncrement(txCount); + } + vData += QByteArray::fromHex(data.toHex()); + } else { + vData += gFakeData; + } +}