summaryrefslogtreecommitdiffstats
path: root/src/tools
diff options
context:
space:
mode:
authorRolf Eike Beer <eb@emlix.com>2016-11-11 10:07:33 +0100
committerRolf Eike Beer <eb@emlix.com>2016-11-11 12:08:03 +0000
commit05e173195364b698797b9a3cf3493542df7fbe17 (patch)
tree29001edafe859b6c3cc8c6f6e2954e94a62f0d38 /src/tools
parentaeed62284bbf9692b2d35a9e95e98c872172eb42 (diff)
canbusutil: directly pass QCanBusFrame to parsePayloadField()
It makes no sense to return all information in different variables and assemble the frame in the caller, just let this method put everything into the frame. While at it, give the method a more sensible name. Change-Id: If7e7d467ac4c43d2b2cf245c95e8fe99551aa242 Reviewed-by: Andreas Wilhelm <aw@emlix.com> Reviewed-by: André Hartmann <aha_1980@gmx.de>
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/canbusutil/canbusutil.cpp23
-rw-r--r--src/tools/canbusutil/canbusutil.h8
2 files changed, 17 insertions, 14 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)
diff --git a/src/tools/canbusutil/canbusutil.h b/src/tools/canbusutil/canbusutil.h
index 0700ca0..dd1ce26 100644
--- a/src/tools/canbusutil/canbusutil.h
+++ b/src/tools/canbusutil/canbusutil.h
@@ -44,6 +44,12 @@
#include "readtask.h"
+QT_BEGIN_NAMESPACE
+
+class QCanBusFrame;
+
+QT_END_NAMESPACE
+
class CanBusUtil : public QObject
{
Q_OBJECT
@@ -56,7 +62,7 @@ public:
private:
bool parseDataField(qint32 &id, QString &payload);
- bool parsePayloadField(QString payload, bool &rtrFrame, bool &fdFrame, QByteArray &bytes);
+ bool setFrameFromPayload(QString payload, QCanBusFrame *frame, bool &fdFrame);
bool connectCanDevice();
bool startListeningOnCanDevice();
bool sendData();