summaryrefslogtreecommitdiffstats
path: root/src/plugins/canbus/vectorcan
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2017-02-23 21:56:35 +0100
committerMihai Baneu <bdmihai@gmail.com>2017-02-28 10:07:23 +0000
commitbb77953d24bd633eb87caf80df1fbaa3d8cf6da5 (patch)
tree7dd1093d264953784b42e8dbb693cf0792b8176e /src/plugins/canbus/vectorcan
parent384838937eb1c621c9c6305bcdae414e9cdee946 (diff)
VectorCAN: Fix receiving transmit echo for all sent frames
* Implement QCanBusDevice::ReceiveOwnKey for configuration * Discard transmit echo frames when ReceiveOwnKey is disabled Task-number: QTBUG-59037 Change-Id: I2a6ce5c6f9ca73225ec4cdb4ece776a05be4c906 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Mihai Baneu <bdmihai@gmail.com>
Diffstat (limited to 'src/plugins/canbus/vectorcan')
-rw-r--r--src/plugins/canbus/vectorcan/vectorcanbackend.cpp6
-rw-r--r--src/plugins/canbus/vectorcan/vectorcanbackend_p.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/src/plugins/canbus/vectorcan/vectorcanbackend.cpp b/src/plugins/canbus/vectorcan/vectorcanbackend.cpp
index adca3cb..e57bb40 100644
--- a/src/plugins/canbus/vectorcan/vectorcanbackend.cpp
+++ b/src/plugins/canbus/vectorcan/vectorcanbackend.cpp
@@ -240,6 +240,9 @@ bool VectorCanBackendPrivate::setConfigurationParameter(int key, const QVariant
switch (key) {
case QCanBusDevice::BitRateKey:
return setBitRate(value.toUInt());
+ case QCanBusDevice::ReceiveOwnKey:
+ transmitEcho = value.toBool();
+ return true;
default:
q->setError(VectorCanBackend::tr("Unsupported configuration key"),
QCanBusDevice::ConfigurationError);
@@ -348,6 +351,9 @@ void VectorCanBackendPrivate::startRead()
const s_xl_can_msg &msg = event.tagData.msg;
+ if ((msg.flags & XL_CAN_MSG_FLAG_TX_COMPLETED) && !transmitEcho)
+ continue;
+
QCanBusFrame frame(msg.id, QByteArray(reinterpret_cast<const char *>(msg.data),
int(msg.dlc)));
frame.setTimeStamp(QCanBusFrame::TimeStamp::fromMicroSeconds(event.timeStamp / 1000));
diff --git a/src/plugins/canbus/vectorcan/vectorcanbackend_p.h b/src/plugins/canbus/vectorcan/vectorcanbackend_p.h
index 141aca8..4e14eca 100644
--- a/src/plugins/canbus/vectorcan/vectorcanbackend_p.h
+++ b/src/plugins/canbus/vectorcan/vectorcanbackend_p.h
@@ -84,6 +84,7 @@ public:
VectorCanBackend * const q_ptr;
+ bool transmitEcho = false;
long portHandle = XL_INVALID_PORTHANDLE;
quint64 channelMask = 0;
HANDLE readHandle = INVALID_HANDLE_VALUE;