diff options
Diffstat (limited to 'src/tools/canbusutil/canbusutil.cpp')
-rw-r--r-- | src/tools/canbusutil/canbusutil.cpp | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/tools/canbusutil/canbusutil.cpp b/src/tools/canbusutil/canbusutil.cpp index 65040ba..9c8995d 100644 --- a/src/tools/canbusutil/canbusutil.cpp +++ b/src/tools/canbusutil/canbusutil.cpp @@ -97,15 +97,16 @@ bool CanBusUtil::parseDataField(qint32 &id, QString &payload) return true; } -bool CanBusUtil::parsePayloadField(QString payload, bool &rtrFrame, - bool &fdFrame, QByteArray &bytes) +bool CanBusUtil::setFrameFromPayload(QString payload, QCanBusFrame *frame, + bool &fdFrame) { fdFrame = false; - rtrFrame = false; if (!payload.isEmpty() && payload.at(0).toUpper() == 'R') { - rtrFrame = true; bool validPayloadLength = false; + + frame->setFrameType(QCanBusFrame::RemoteRequestFrame); + if (payload.size() == 1) { // payload = "R" validPayloadLength = true; } else if (payload.size() > 1) { // payload = "R8" @@ -113,7 +114,7 @@ bool CanBusUtil::parsePayloadField(QString payload, bool &rtrFrame, int rtrFrameLength = payload.toInt(&validPayloadLength); if (validPayloadLength && rtrFrameLength >= 0 && rtrFrameLength <= 8) { - bytes = QByteArray(rtrFrameLength, 0); + frame->setPayload(QByteArray(rtrFrameLength, 0)); } else if (validPayloadLength) { m_output << "The length must be between 0 and 8 (including)." << endl; validPayloadLength = false; @@ -141,7 +142,7 @@ bool CanBusUtil::parsePayloadField(QString payload, bool &rtrFrame, return false; } - bytes = QByteArray::fromHex(payload.toLatin1()); + QByteArray bytes = QByteArray::fromHex(payload.toLatin1()); const int maxSize = fdFrame ? 64 : 8; if (bytes.size() > maxSize) { @@ -149,6 +150,8 @@ bool CanBusUtil::parsePayloadField(QString payload, bool &rtrFrame, bytes.truncate(maxSize); } + frame->setPayload(bytes); + return true; } @@ -179,15 +182,13 @@ bool CanBusUtil::sendData() { qint32 id; QString payload; - bool rtrFrame; bool fdFrame; - QByteArray bytes; QCanBusFrame frame; if (parseDataField(id, payload) == false) return false; - if (parsePayloadField(payload, rtrFrame, fdFrame, bytes) == false) + if (setFrameFromPayload(payload, &frame, fdFrame) == false) return false; if (id < 0 || id > 0x1FFFFFFF) { // 29 bits @@ -195,10 +196,6 @@ bool CanBusUtil::sendData() m_output << "Warning! Id does not fit into Extended Frame Format, setting id to: " << id << endl; } - if (rtrFrame) - frame.setFrameType(QCanBusFrame::RemoteRequestFrame); - - frame.setPayload(bytes); frame.setFrameId(id); if (fdFrame) |