diff options
author | Liang Qi <liang.qi@qt.io> | 2017-01-25 10:25:00 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-01-25 10:25:00 +0100 |
commit | 4156b8a637783e6e3d54359275c28ea0c6a493b6 (patch) | |
tree | 7c8ec17ceb0c61aecb13deaf77a358bb2ddf9542 /src/plugins/canbus | |
parent | 96406689fa3be46b1e7f4193c2d82b0407f543ad (diff) | |
parent | 6cb07fb512082bac7df5b50048d7ade111b575e0 (diff) |
Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
.qmake.conf
Change-Id: Ie8bb65e2f51726a9a6108619d881263de1899b9c
Diffstat (limited to 'src/plugins/canbus')
-rw-r--r-- | src/plugins/canbus/socketcan/socketcanbackend.cpp | 19 | ||||
-rw-r--r-- | src/plugins/canbus/vectorcan/vectorcanbackend.h | 2 |
2 files changed, 7 insertions, 14 deletions
diff --git a/src/plugins/canbus/socketcan/socketcanbackend.cpp b/src/plugins/canbus/socketcan/socketcanbackend.cpp index f65e42a..509008d 100644 --- a/src/plugins/canbus/socketcan/socketcanbackend.cpp +++ b/src/plugins/canbus/socketcan/socketcanbackend.cpp @@ -427,25 +427,17 @@ bool SocketCanBackend::writeFrame(const QCanBusFrame &newData) canId |= CAN_ERR_FLAG; } - - int payloadSize = newData.payload().size(); - if ((!canFdOptionEnabled && payloadSize > CAN_MAX_DLEN) - || (canFdOptionEnabled && payloadSize > CANFD_MAX_DLEN)) { - 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 && newData.hasFlexibleDataRateFormat()) - setError(tr("Sending CAN FD frame although CAN FD option not enabled."), - QCanBusDevice::WriteError); - else - setError(tr("Frame payload exceeds maximum CAN frame payload length."), - QCanBusDevice::WriteError); + if (Q_UNLIKELY(!canFdOptionEnabled && newData.hasFlexibleDataRateFormat())) { + const QString error = tr("Sending CAN FD frame although CAN FD option not enabled."); + qDebug("%ls", qUtf16Printable(error)); + setError(error, QCanBusDevice::WriteError); return false; } qint64 bytesWritten = 0; if (newData.hasFlexibleDataRateFormat()) { canfd_frame frame; + memset(&frame, 0, sizeof(frame)); frame.len = newData.payload().size(); frame.can_id = canId; frame.flags = newData.hasBitrateSwitch() ? CANFD_BRS : 0; @@ -455,6 +447,7 @@ bool SocketCanBackend::writeFrame(const QCanBusFrame &newData) bytesWritten = ::write(canSocket, &frame, sizeof(frame)); } else { can_frame frame; + memset(&frame, 0, sizeof(frame)); frame.can_dlc = newData.payload().size(); frame.can_id = canId; ::memcpy(frame.data, newData.payload().constData(), frame.can_dlc); diff --git a/src/plugins/canbus/vectorcan/vectorcanbackend.h b/src/plugins/canbus/vectorcan/vectorcanbackend.h index d956634..ff8fcfe 100644 --- a/src/plugins/canbus/vectorcan/vectorcanbackend.h +++ b/src/plugins/canbus/vectorcan/vectorcanbackend.h @@ -56,7 +56,7 @@ class VectorCanBackend : public QCanBusDevice Q_DISABLE_COPY(VectorCanBackend) public: explicit VectorCanBackend(const QString &name, QObject *parent = nullptr); - ~VectorCanBackend() override; + ~VectorCanBackend(); bool open() override; void close() override; |