summaryrefslogtreecommitdiffstats
path: root/src/plugins/canbus/socketcan/socketcanbackend.cpp
diff options
context:
space:
mode:
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);