diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2018-03-22 20:17:58 +0100 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2018-04-17 07:27:13 +0000 |
commit | 1343e05db51e156ba315d2068c4ba2456443b3af (patch) | |
tree | 2bb110a5c2191c5182108005e516669a7c757394 /src | |
parent | 194f3726987aae32930ae02db9f00a1590fffe2a (diff) |
Add configuration options to canbusutil
[ChangeLog][canbusutil] Added configuration options to canbusutil,
e.g. for bitrate setting or to enable CAN FD operation mode.
Task-number: QTBUG-67164
Change-Id: I43690cfd3e0c24f3d5ad79d11b1a60e7fbec3dc1
Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Reviewed-by: Rolf Eike Beer <eb@emlix.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/canbusutil/canbusutil.cpp | 11 | ||||
-rw-r--r-- | src/tools/canbusutil/canbusutil.h | 3 | ||||
-rw-r--r-- | src/tools/canbusutil/main.cpp | 38 |
3 files changed, 52 insertions, 0 deletions
diff --git a/src/tools/canbusutil/canbusutil.cpp b/src/tools/canbusutil/canbusutil.cpp index 38433bb..a4e1a58 100644 --- a/src/tools/canbusutil/canbusutil.cpp +++ b/src/tools/canbusutil/canbusutil.cpp @@ -58,6 +58,12 @@ void CanBusUtil::setShowFdFlags(bool showFdFlags) m_readTask->setShowFdFlags(showFdFlags); } +void CanBusUtil::setConfigurationParameter(QCanBusDevice::ConfigurationKey key, + const QVariant &value) +{ + m_configurationParameter[key] = value; +} + bool CanBusUtil::start(const QString &pluginName, const QString &deviceName, const QString &data) { if (!m_canBus) { @@ -201,6 +207,11 @@ bool CanBusUtil::connectCanDevice() m_output << tr("Cannot create CAN bus device: '%1'").arg(m_deviceName) << endl; return false; } + + const auto constEnd = m_configurationParameter.constEnd(); + for (auto i = m_configurationParameter.constBegin(); i != constEnd; ++i) + m_canDevice->setConfigurationParameter(i.key(), i.value()); + connect(m_canDevice.data(), &QCanBusDevice::errorOccurred, m_readTask, &ReadTask::handleError); if (!m_canDevice->connectDevice()) { m_output << tr("Cannot create CAN bus device: '%1'").arg(m_deviceName) << endl; diff --git a/src/tools/canbusutil/canbusutil.h b/src/tools/canbusutil/canbusutil.h index e6432a3..19b7868 100644 --- a/src/tools/canbusutil/canbusutil.h +++ b/src/tools/canbusutil/canbusutil.h @@ -58,6 +58,7 @@ public: void setShowTimeStamp(bool showTimeStamp); void setShowFdFlags(bool showFdFlags); + void setConfigurationParameter(QCanBusDevice::ConfigurationKey key, const QVariant &value); bool start(const QString &pluginName, const QString &deviceName, const QString &data = QString()); int printPlugins(); int printDevices(const QString &pluginName); @@ -78,6 +79,8 @@ private: QString m_data; QScopedPointer<QCanBusDevice> m_canDevice; ReadTask *m_readTask = nullptr; + using ConfigurationParameter = QHash<QCanBusDevice::ConfigurationKey, QVariant>; + ConfigurationParameter m_configurationParameter; }; #endif // CANBUSUTIL_H diff --git a/src/tools/canbusutil/main.cpp b/src/tools/canbusutil/main.cpp index 6744f19..3a71192 100644 --- a/src/tools/canbusutil/main.cpp +++ b/src/tools/canbusutil/main.cpp @@ -102,6 +102,28 @@ int main(int argc, char *argv[]) CanBusUtil::tr("Show available CAN bus devices for the given plugin.")); parser.addOption(listDevicesOption); + const QCommandLineOption canFdOption({"f", "can-fd"}, + CanBusUtil::tr("Enable CAN FD functionality when listening.")); + parser.addOption(canFdOption); + + const QCommandLineOption loopbackOption({"c", "local-loopback"}, + CanBusUtil::tr("Transmits all sent frames to other local applications.")); + parser.addOption(loopbackOption); + + const QCommandLineOption receiveOwnOption({"o", "receive-own"}, + CanBusUtil::tr("Receive each sent frame on successful transmission.")); + parser.addOption(receiveOwnOption); + + const QCommandLineOption bitrateOption({"b", "bitrate"}, + CanBusUtil::tr("Set the CAN bus bitrate to the given value."), + QStringLiteral("bitrate")); + parser.addOption(bitrateOption); + + const QCommandLineOption dataBitrateOption({"a", "data-bitrate"}, + CanBusUtil::tr("Set the CAN FD data bitrate to the given value."), + QStringLiteral("bitrate")); + parser.addOption(dataBitrateOption); + parser.process(app); if (parser.isSet(listOption)) @@ -109,6 +131,22 @@ int main(int argc, char *argv[]) QString data; const QStringList args = parser.positionalArguments(); + + if (parser.isSet(canFdOption)) + util.setConfigurationParameter(QCanBusDevice::CanFdKey, true); + if (parser.isSet(loopbackOption)) + util.setConfigurationParameter(QCanBusDevice::LoopbackKey, true); + if (parser.isSet(receiveOwnOption)) + util.setConfigurationParameter(QCanBusDevice::ReceiveOwnKey, true); + if (!parser.value(bitrateOption).isEmpty()) { + util.setConfigurationParameter(QCanBusDevice::BitRateKey, + parser.value(bitrateOption).toInt()); + } + if (!parser.value(dataBitrateOption).isEmpty()) { + util.setConfigurationParameter(QCanBusDevice::DataBitRateKey, + parser.value(dataBitrateOption).toInt()); + } + if (parser.isSet(listeningOption)) { util.setShowTimeStamp(parser.isSet(showTimeStampOption)); util.setShowFdFlags(parser.isSet(showFdFlagsOption)); |