Index: sources/canbus/MessageBuilder.cpp =================================================================== diff -u -rc0b30f1fa82d0121706351057ab52b3bb1141459 -r6abfb957108b171a8a5ab6770ad9b463235c210b --- sources/canbus/MessageBuilder.cpp (.../MessageBuilder.cpp) (revision c0b30f1fa82d0121706351057ab52b3bb1141459) +++ sources/canbus/MessageBuilder.cpp (.../MessageBuilder.cpp) (revision 6abfb957108b171a8a5ab6770ad9b463235c210b) @@ -43,14 +43,15 @@ * \param vFrameList - The list of frames which has been created by vAction and vData to be sent. * \return true on successful to build a frame */ -bool MessageBuilder::buildFrames(const QByteArray &vData, FrameList &vFrameList, Sequence vSequence) +bool MessageBuilder::buildFrames(quint16 msgID, const QByteArray &vData, FrameList &vFrameList, Sequence vSequence) { QByteArray mPayload ; addSyncByte (mPayload); // Sync Byte addSequence (mPayload, vSequence); // adding sequence - if ( ! addActionId (mPayload ) ) { // MessageID + if ( ! addActionId (mPayload, msgID ) ) { // MessageID return false; } + if ( ! addData (mPayload, vData) ) { // Regarding Payload Length, Adding required Data return false; } @@ -103,9 +104,18 @@ * \param vAction - The ActionID of the message which needs to be appended * to the Payload vPayload */ -bool MessageBuilder::addActionId(QByteArray &vPayload) +bool MessageBuilder::addActionId(QByteArray &vPayload, quint16 msgID) { - Q_UNUSED(vPayload); + //if (vAction != 0x0000) { + if (true) { + quint16 mAction = msgID; + vPayload += (mAction >> 8) & 0xFF; // high byte + vPayload += mAction & 0xFF; // low byte + } else { + QString mHexString = Format::toHexString(0x000, false, eLenMessageIDDigits); + LOG_DEBUG(QString("Incorrect Action ID '%1'").arg(mHexString)); + return false; + } return true; } @@ -120,7 +130,7 @@ bool MessageBuilder::addData(QByteArray &vPayload, const QByteArray &vData) { quint8 vAction = 0; - quint8 len = 0; //payloadLen[vAction]; + quint8 len = vData.size(); // if len has been set to max(255) // it means it has no limit and can be as long as 255 bytes if (len == eLenMaxData) { @@ -141,6 +151,7 @@ } vPayload += len; vPayload += vData.mid(0, len); // Adding required Data + qDebug() << "Payload added" << vPayload; return true; }