summaryrefslogtreecommitdiffstats
path: root/src/tools
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2018-03-22 20:17:58 +0100
committerAndré Hartmann <aha_1980@gmx.de>2018-04-17 07:27:13 +0000
commit1343e05db51e156ba315d2068c4ba2456443b3af (patch)
tree2bb110a5c2191c5182108005e516669a7c757394 /src/tools
parent194f3726987aae32930ae02db9f00a1590fffe2a (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/tools')
-rw-r--r--src/tools/canbusutil/canbusutil.cpp11
-rw-r--r--src/tools/canbusutil/canbusutil.h3
-rw-r--r--src/tools/canbusutil/main.cpp38
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));