diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2017-02-23 21:56:35 +0100 |
---|---|---|
committer | Mihai Baneu <bdmihai@gmail.com> | 2017-02-28 10:07:23 +0000 |
commit | bb77953d24bd633eb87caf80df1fbaa3d8cf6da5 (patch) | |
tree | 7dd1093d264953784b42e8dbb693cf0792b8176e /src/plugins/canbus/vectorcan | |
parent | 384838937eb1c621c9c6305bcdae414e9cdee946 (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.cpp | 6 | ||||
-rw-r--r-- | src/plugins/canbus/vectorcan/vectorcanbackend_p.h | 1 |
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; |