summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcell Varga <marcell.varga@aimotive.com>2017-09-25 18:52:09 +0200
committerMarcell Varga <eandr2@gmail.com>2017-09-29 11:16:28 +0000
commita7cac26249c70519d381636a667e1c57ab90caca (patch)
tree6c24b04de74a55f4faf86e7e69bc22282f5ed769
parent9a720b4fcc1d743db1b04f7696a30e7850c7707b (diff)
PeakCAN: Fix connect() always returning false under Linux
It was impossible to open a Peak CAN device under Linux, because CAN_SetValue (which is needed for the Windows implementation) always returned with error. Task-number: QTBUG-63428 Change-Id: I353bf44a7bdea4a18ef84d8037a3a9fd86d47d89 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: André Hartmann <aha_1980@gmx.de>
-rw-r--r--src/plugins/canbus/peakcan/peakcanbackend.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/plugins/canbus/peakcan/peakcanbackend.cpp b/src/plugins/canbus/peakcan/peakcanbackend.cpp
index b6eb30e..ca751cf 100644
--- a/src/plugins/canbus/peakcan/peakcanbackend.cpp
+++ b/src/plugins/canbus/peakcan/peakcanbackend.cpp
@@ -272,7 +272,6 @@ bool PeakCanBackendPrivate::open()
return false;
}
}
-#endif
const TPCANStatus err = ::CAN_SetValue(channelIndex, PCAN_RECEIVE_EVENT, &readHandle, sizeof(readHandle));
if (Q_UNLIKELY(err != PCAN_ERROR_OK)) {
@@ -280,6 +279,14 @@ bool PeakCanBackendPrivate::open()
return false;
}
+#else
+ const TPCANStatus err = ::CAN_GetValue(channelIndex, PCAN_RECEIVE_EVENT, &readHandle, sizeof(readHandle));
+ if (Q_UNLIKELY(err != PCAN_ERROR_OK)) {
+ q->setError(systemErrorString(err), QCanBusDevice::ConnectionError);
+ return false;
+ }
+#endif
+
writeNotifier = new WriteNotifier(this, q);
writeNotifier->setInterval(0);