diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2017-03-22 21:11:45 +0100 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2017-03-30 07:48:11 +0000 |
commit | 734e8002b1f71d1b6ef1a66bc8c9351483011f8f (patch) | |
tree | 0a58a0077e0671b8e932810486742bebf693c5bf /src/tools | |
parent | 7a89e11e654598ef7a2d000eac0c125087e88a41 (diff) |
canbusutil: Print available devices for given plugin
Change-Id: I72d2dd90137c3be2e07311d1dc4f83dfa4c15a18
Reviewed-by: Rolf Eike Beer <eb@emlix.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/canbusutil/canbusutil.cpp | 14 | ||||
-rw-r--r-- | src/tools/canbusutil/canbusutil.h | 1 | ||||
-rw-r--r-- | src/tools/canbusutil/main.cpp | 15 |
3 files changed, 26 insertions, 4 deletions
diff --git a/src/tools/canbusutil/canbusutil.cpp b/src/tools/canbusutil/canbusutil.cpp index 2e7c15f..f64fc3d 100644 --- a/src/tools/canbusutil/canbusutil.cpp +++ b/src/tools/canbusutil/canbusutil.cpp @@ -90,6 +90,20 @@ void CanBusUtil::printPlugins() m_output << plugins.at(i) << endl; } +int CanBusUtil::printDevices(const QString &pluginName) +{ + QString errorMessage; + const QList<QCanBusDeviceInfo> devices = m_canBus->availableDevices(pluginName, &errorMessage); + if (!errorMessage.isEmpty()) { + m_output << "Error: " << errorMessage << endl; + return 1; + } + + for (const QCanBusDeviceInfo &info : devices) + m_output << info.name() << endl; + return 0; +} + bool CanBusUtil::parseDataField(qint32 &id, QString &payload) { int hashMarkPos = m_data.indexOf('#'); diff --git a/src/tools/canbusutil/canbusutil.h b/src/tools/canbusutil/canbusutil.h index a553647..8beb967 100644 --- a/src/tools/canbusutil/canbusutil.h +++ b/src/tools/canbusutil/canbusutil.h @@ -60,6 +60,7 @@ public: void setShowFdFlags(bool showFdFlags); bool start(const QString &pluginName, const QString &deviceName, const QString &data = QString()); void printPlugins(); + int printDevices(const QString &pluginName); private: bool parseDataField(qint32 &id, QString &payload); diff --git a/src/tools/canbusutil/main.cpp b/src/tools/canbusutil/main.cpp index 2103dcc..a5dcb43 100644 --- a/src/tools/canbusutil/main.cpp +++ b/src/tools/canbusutil/main.cpp @@ -100,6 +100,10 @@ int main(int argc, char *argv[]) CanBusUtil::tr("Show extra info (CAN FD flags) for each received CAN bus frame.")); parser.addOption(showFdFlagsOption); + const QCommandLineOption listDevicesOption({"d", "devices"}, + CanBusUtil::tr("Show available CAN bus devices for the given plugin.")); + parser.addOption(listDevicesOption); + parser.process(app); if (parser.isSet(listOption)) { @@ -109,16 +113,19 @@ int main(int argc, char *argv[]) QString data; const QStringList args = parser.positionalArguments(); - if (!parser.isSet(listeningOption) && args.size() == 3) { + if (parser.isSet(listeningOption)) { + util.setShowTimeStamp(parser.isSet(showTimeStampOption)); + util.setShowFdFlags(parser.isSet(showFdFlagsOption)); + } else if (args.size() == 3) { data = args[2]; - } else if (!parser.isSet(listeningOption) || args.size() != 2) { + } else if (args.size() == 1 && parser.isSet(listDevicesOption)) { + return util.printDevices(args[0]); + } else if (args.size() != 2) { fprintf(stderr, "Invalid number of arguments (%d given).\n\n%s", args.size(), qPrintable(parser.helpText())); return 1; } - util.setShowTimeStamp(parser.isSet(showTimeStampOption)); - util.setShowFdFlags(parser.isSet(showFdFlagsOption)); if (!util.start(args[0], args[1], data)) return -1; |