diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2016-08-11 20:19:06 +0200 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2019-02-22 18:47:37 +0000 |
commit | 6ddb74e8165fc9658ab57ff5a3e09eb23ad9c69e (patch) | |
tree | 3944ab8ed5c5523d30e2f25bee7946447fe3484b /src/plugins/canbus/socketcan/socketcanbackend.cpp | |
parent | eb85cebadb546dafe7c87db931164491ad5cca89 (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.cpp | 20 |
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); |