diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2016-09-29 21:22:24 +0200 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2016-10-05 08:35:51 +0000 |
commit | 8e4bd5bcfd6093c980866a6b258311e7d8ae5bbf (patch) | |
tree | 7f9724da2f47660aae94df4d09555d53f4461d11 | |
parent | 3cda427846e3f6f1858011f8a13d4e3d5e23e919 (diff) |
canbusutil: Fix RTR frame handlingv5.8.0-beta1
* Allow empty CAN RTR frames, they are as valid as empty
CAN data frames
* CAN FD defines data frames, but does not seem to define
RTR frames. At least cansend forbids RTR frames with a
length > 8.
Change-Id: I4405fc450a4f683f6d4f34b237e48d37c6a3670b
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Reviewed-by: Andreas Wilhelm <aw@emlix.com>
-rw-r--r-- | src/tools/canbusutil/canbusutil.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/tools/canbusutil/canbusutil.cpp b/src/tools/canbusutil/canbusutil.cpp index d7200a1..80ea5e3 100644 --- a/src/tools/canbusutil/canbusutil.cpp +++ b/src/tools/canbusutil/canbusutil.cpp @@ -102,16 +102,18 @@ bool CanBusUtil::parsePayloadField(QString payload, bool &rtrFrame, if (!payload.isEmpty() && payload.at(0).toUpper() == 'R') { rtrFrame = true; bool validPayloadLength = false; - if (payload.size() > 1) { + if (fdFrame) { + m_output << "CAN FD RTR data frames are not valid." << endl; + } else if (payload.size() == 1) { // payload = "R" + validPayloadLength = true; + } else if (payload.size() > 1) { // payload = "R8" payload = payload.mid(1); int rtrFrameLength = payload.toInt(&validPayloadLength); - if (validPayloadLength && rtrFrameLength > 0 && rtrFrameLength <= 64) { + if (validPayloadLength && rtrFrameLength >= 0 && rtrFrameLength <= 8) { bytes = QByteArray(rtrFrameLength, 0); - if (rtrFrameLength > 8) - fdFrame = true; } else if (validPayloadLength) { - m_output << "The length must be larger than 0 and not exceed 64." << endl; + m_output << "The length must be between 0 and 8 (including)." << endl; validPayloadLength = false; } } |