summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2017-09-29 18:07:31 +0200
committerAndré Hartmann <aha_1980@gmx.de>2017-10-05 04:28:47 +0000
commit344e9644317fe569363b15d13f8c1d4715bfc255 (patch)
tree183841f7c18759903bd14f7949a59e32146608a7
parenta7cac26249c70519d381636a667e1c57ab90caca (diff)
PeakCAN: Avoid turning PeakCAN status frames into random data frames
[ChangeLog][CanBus][PeakCAN] Peak CAN status frames are no longer converted into QCanBusFrame::DataFrame, they are simply dropped for now. In a later Qt version they might by converted into proper QCanBusFrame::ErrorFrame, together with an interpretErrorFrame() implementation. Change-Id: I673ef2c8d312a96de192def831036ad10d5f2c01 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Marcell Varga <eandr2@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
-rw-r--r--src/plugins/canbus/peakcan/peakcanbackend.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/plugins/canbus/peakcan/peakcanbackend.cpp b/src/plugins/canbus/peakcan/peakcanbackend.cpp
index ca751cf..075cd5d 100644
--- a/src/plugins/canbus/peakcan/peakcanbackend.cpp
+++ b/src/plugins/canbus/peakcan/peakcanbackend.cpp
@@ -420,6 +420,11 @@ void PeakCanBackendPrivate::startRead()
break;
}
+ // Filter out PCAN status frames, to avoid turning them
+ // into QCanBusFrame::DataFrames with random canId
+ if (Q_UNLIKELY(message.MSGTYPE & PCAN_MESSAGE_STATUS))
+ continue;
+
QCanBusFrame frame(message.ID, QByteArray(reinterpret_cast<const char *>(message.DATA), int(message.LEN)));
const quint64 millis = timestamp.millis + Q_UINT64_C(0xFFFFFFFF) * timestamp.millis_overflow;
const quint64 micros = Q_UINT64_C(1000) * millis + timestamp.micros;