From 55d405697c79c4ca23535140e60915e89b4054e3 Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Sun, 31 Jul 2016 20:43:13 +0200 Subject: CAN: Add QCanBusDeviceInfo Returns: * a list of available devices for the chosen plugin * if the device is virtual * if the device is CAN FD capable Use this list in the CAN Example for interface selection. If information about virtual channels or CAN FD capabability is not available, false is returned. For SocketCAN, PeakCAN, VectorCAN and SystecCAN, the implementation is completed. TinyCAN only return the list of possible interfaces for now. This is can be changed later, but needs quite some refactoring of the TinyCAN plugin. [ChangeLog][QtCanBus] Added the new class QCanBusDeviceInfo for enumeration of available CAN interfaces and more information about them. Task-number: QTBUG-54298 Change-Id: I851bcc3b9ee41aaaf1164c6b4a5aaf6503cd8746 Reviewed-by: Denis Shienkov Reviewed-by: Alex Blasche --- src/plugins/canbus/tinycan/main.cpp | 6 ++++++ src/plugins/canbus/tinycan/tinycanbackend.cpp | 5 +++++ src/plugins/canbus/tinycan/tinycanbackend.h | 2 ++ 3 files changed, 13 insertions(+) (limited to 'src/plugins/canbus/tinycan') diff --git a/src/plugins/canbus/tinycan/main.cpp b/src/plugins/canbus/tinycan/main.cpp index fe988ba..55c5590 100644 --- a/src/plugins/canbus/tinycan/main.cpp +++ b/src/plugins/canbus/tinycan/main.cpp @@ -51,6 +51,12 @@ class TinyCanBusPlugin : public QObject, public QCanBusFactory public: + QList availableDevices(QString *errorMessage) const override + { + Q_UNUSED(errorMessage); + return TinyCanBackend::interfaces(); + } + QCanBusDevice *createDevice(const QString &interfaceName, QString *errorMessage) const override { QString errorReason; diff --git a/src/plugins/canbus/tinycan/tinycanbackend.cpp b/src/plugins/canbus/tinycan/tinycanbackend.cpp index 0961813..390adee 100644 --- a/src/plugins/canbus/tinycan/tinycanbackend.cpp +++ b/src/plugins/canbus/tinycan/tinycanbackend.cpp @@ -68,6 +68,11 @@ bool TinyCanBackend::canCreate(QString *errorReason) #endif } +QList TinyCanBackend::interfaces() +{ + return { createDeviceInfo(QStringLiteral("can0.0")), createDeviceInfo(QStringLiteral("can0.1")) }; +} + Q_GLOBAL_STATIC(QList, qChannels) static QMutex channelsGuard(QMutex::NonRecursive); diff --git a/src/plugins/canbus/tinycan/tinycanbackend.h b/src/plugins/canbus/tinycan/tinycanbackend.h index bd3aca0..3726a71 100644 --- a/src/plugins/canbus/tinycan/tinycanbackend.h +++ b/src/plugins/canbus/tinycan/tinycanbackend.h @@ -40,6 +40,7 @@ #include #include +#include #include #include @@ -68,6 +69,7 @@ public: QString interpretErrorFrame(const QCanBusFrame &errorFrame) override; static bool canCreate(QString *errorReason); + static QList interfaces(); private: TinyCanBackendPrivate * const d_ptr; -- cgit v1.2.3