summaryrefslogtreecommitdiffstats
path: root/src/plugins/canbus
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-01-25 10:25:00 +0100
committerLiang Qi <liang.qi@qt.io>2017-01-25 10:25:00 +0100
commit4156b8a637783e6e3d54359275c28ea0c6a493b6 (patch)
tree7c8ec17ceb0c61aecb13deaf77a358bb2ddf9542 /src/plugins/canbus
parent96406689fa3be46b1e7f4193c2d82b0407f543ad (diff)
parent6cb07fb512082bac7df5b50048d7ade111b575e0 (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.cpp19
-rw-r--r--src/plugins/canbus/vectorcan/vectorcanbackend.h2
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;