From 0ce15a0b241ca46a76d0b5693c1b5b811c55ac49 Mon Sep 17 00:00:00 2001 From: Rolf Eike Beer Date: Thu, 17 Dec 2015 11:26:22 +0100 Subject: QCanBusFrame: add flag to identify CAN FD frames MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-49675 Task-number: QTBUG-56720 Change-Id: Id24783c6ee1b81317d2e6d0965a9ed37987b47ec Reviewed-by: André Hartmann Reviewed-by: Alex Blasche --- src/plugins/canbus/socketcan/socketcanbackend.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/plugins/canbus/socketcan') 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); -- cgit v1.2.3