summaryrefslogtreecommitdiffstats
path: root/src/plugins/canbus/socketcan
diff options
context:
space:
mode:
authorRolf Eike Beer <eb@emlix.com>2015-12-17 11:26:22 +0100
committerAlex Blasche <alexander.blasche@qt.io>2016-11-15 10:54:47 +0000
commit0ce15a0b241ca46a76d0b5693c1b5b811c55ac49 (patch)
treee671bfc7ee8031c67e317893b3c4ecd4e4df300f /src/plugins/canbus/socketcan
parentc20ad40f7f3bac218842d98554bebcf0bfea0103 (diff)
QCanBusFrame: add flag to identify CAN FD frames
Task-number: QTBUG-49675 Task-number: QTBUG-56720 Change-Id: Id24783c6ee1b81317d2e6d0965a9ed37987b47ec Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/plugins/canbus/socketcan')
-rw-r--r--src/plugins/canbus/socketcan/socketcanbackend.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/plugins/canbus/socketcan/socketcanbackend.cpp b/src/plugins/canbus/socketcan/socketcanbackend.cpp
index c9781d1..8974279 100644
--- a/src/plugins/canbus/socketcan/socketcanbackend.cpp
+++ b/src/plugins/canbus/socketcan/socketcanbackend.cpp
@@ -368,7 +368,7 @@ bool SocketCanBackend::writeFrame(const QCanBusFrame &newData)
qWarning() << QString("payload (%1 bytes) is too large for chosen frame size of "
"maximal %2 bytes. Frame is discarded.").
arg(payloadSize).arg(canFdOptionEnabled ? CANFD_MAX_DLEN : CAN_MAX_DLEN);
- if (!canFdOptionEnabled && payloadSize <= CANFD_MAX_DLEN)
+ if (!canFdOptionEnabled && newData.hasFlexibleDataRateFormat())
setError(tr("Sending CAN FD frame although CAN FD option not enabled."),
QCanBusDevice::WriteError);
else
@@ -378,7 +378,7 @@ bool SocketCanBackend::writeFrame(const QCanBusFrame &newData)
}
qint64 bytesWritten = 0;
- if (canFdOptionEnabled) {
+ if (newData.hasFlexibleDataRateFormat()) {
canfd_frame frame;
frame.len = newData.payload().size();
frame.can_id = canId;
@@ -600,6 +600,7 @@ void SocketCanBackend::readSocket()
const QCanBusFrame::TimeStamp stamp(timeStamp.tv_sec, timeStamp.tv_usec);
QCanBusFrame bufferedFrame;
bufferedFrame.setTimeStamp(stamp);
+ bufferedFrame.setFlexibleDataRateFormat(bytesReceived == CANFD_MTU);
bufferedFrame.setExtendedFrameFormat(frame.can_id & CAN_EFF_FLAG);
Q_ASSERT(frame.len <= CANFD_MAX_DLEN);