summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2017-03-22 21:11:45 +0100
committerAndré Hartmann <aha_1980@gmx.de>2017-03-30 07:48:11 +0000
commit734e8002b1f71d1b6ef1a66bc8c9351483011f8f (patch)
tree0a58a0077e0671b8e932810486742bebf693c5bf
parent7a89e11e654598ef7a2d000eac0c125087e88a41 (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>
-rw-r--r--src/tools/canbusutil/canbusutil.cpp14
-rw-r--r--src/tools/canbusutil/canbusutil.h1
-rw-r--r--src/tools/canbusutil/main.cpp15
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;