summaryrefslogtreecommitdiffstats
path: root/src/plugins/canbus/socketcan/socketcanbackend.cpp
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2016-08-11 20:19:06 +0200
committerAndré Hartmann <aha_1980@gmx.de>2019-02-22 18:47:37 +0000
commit6ddb74e8165fc9658ab57ff5a3e09eb23ad9c69e (patch)
tree3944ab8ed5c5523d30e2f25bee7946447fe3484b /src/plugins/canbus/socketcan/socketcanbackend.cpp
parenteb85cebadb546dafe7c87db931164491ad5cca89 (diff)
SocketCAN: Set and get bitrate by loading libsocketcan dynamically
Can be extended for further functions from this library also. [ChangeLog][Plugins][SocketCAN] If libsocketcan is available, the CAN bus bitrate can be get and set at runtime. Fixes: QTBUG-54296 Change-Id: Ie677ddb5cf4ee9f99927973d837ef7a2810a2b37 Reviewed-by: Rolf Eike Beer <eb@emlix.com> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
Diffstat (limited to 'src/plugins/canbus/socketcan/socketcanbackend.cpp')
-rw-r--r--src/plugins/canbus/socketcan/socketcanbackend.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/plugins/canbus/socketcan/socketcanbackend.cpp b/src/plugins/canbus/socketcan/socketcanbackend.cpp
index 74b0d1d..cac1db5 100644
--- a/src/plugins/canbus/socketcan/socketcanbackend.cpp
+++ b/src/plugins/canbus/socketcan/socketcanbackend.cpp
@@ -36,6 +36,10 @@
#include "socketcanbackend.h"
+#include "libsocketcan.h"
+
+#include <QtSerialBus/qcanbusdevice.h>
+
#include <QtCore/qdatastream.h>
#include <QtCore/qdebug.h>
#include <QtCore/qdiriterator.h>
@@ -181,6 +185,14 @@ QList<QCanBusDeviceInfo> SocketCanBackend::interfaces()
SocketCanBackend::SocketCanBackend(const QString &name) :
canSocketName(name)
{
+ QString errorString;
+ libSocketCan.reset(new LibSocketCan(&errorString));
+ if (Q_UNLIKELY(!errorString.isEmpty())) {
+ qCInfo(QT_CANBUS_PLUGINS_SOCKETCAN,
+ "Cannot load library libsocketcan, some functionality will not be available.\n%ls",
+ qUtf16Printable(errorString));
+ }
+
resetConfigurations();
}
@@ -200,6 +212,8 @@ void SocketCanBackend::resetConfigurations()
QVariant::fromValue(QCanBusFrame::FrameErrors(QCanBusFrame::AnyError)));
QCanBusDevice::setConfigurationParameter(
QCanBusDevice::CanFdKey, false);
+ QCanBusDevice::setConfigurationParameter(
+ QCanBusDevice::BitRateKey, 500000);
}
bool SocketCanBackend::open()
@@ -345,6 +359,12 @@ bool SocketCanBackend::applyConfigurationParameter(int key, const QVariant &valu
success = true;
break;
}
+ case QCanBusDevice::BitRateKey:
+ {
+ const quint32 bitRate = value.toUInt();
+ libSocketCan->setBitrate(canSocketName, bitRate);
+ break;
+ }
default:
setError(tr("SocketCanBackend: No such configuration as %1 in SocketCanBackend").arg(key),
QCanBusDevice::CanBusError::ConfigurationError);