1/****************************************************************************
2**
3** Copyright (C) 2017 Denis Shienkov <denis.shienkov@gmail.com>
4** Copyright (C) 2017 The Qt Company Ltd.
5** Contact: http://www.qt.io/licensing/
6**
7** This file is part of the QtSerialBus module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL3$
10** Commercial License Usage
11** Licensees holding valid commercial Qt licenses may use this file in
12** accordance with the commercial license agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and The Qt Company. For licensing terms
15** and conditions see http://www.qt.io/terms-conditions. For further
16** information use the contact form at http://www.qt.io/contact-us.
17**
18** GNU Lesser General Public License Usage
19** Alternatively, this file may be used under the terms of the GNU Lesser
20** General Public License version 3 as published by the Free Software
21** Foundation and appearing in the file LICENSE.LGPLv3 included in the
22** packaging of this file. Please review the following information to
23** ensure the GNU Lesser General Public License version 3 requirements
24** will be met: https://www.gnu.org/licenses/lgpl.html.
25**
26** GNU General Public License Usage
27** Alternatively, this file may be used under the terms of the GNU
28** General Public License version 2.0 or later as published by the Free
29** Software Foundation and appearing in the file LICENSE.GPL included in
30** the packaging of this file. Please review the following information to
31** ensure the GNU General Public License version 2.0 requirements will be
32** met: http://www.gnu.org/licenses/gpl-2.0.html.
33**
34** $QT_END_LICENSE$
35**
36****************************************************************************/
37
38#include "tinycanbackend.h"
39
40#include <QtSerialBus/qcanbus.h>
41#include <QtSerialBus/qcanbusdevice.h>
42#include <QtSerialBus/qcanbusfactory.h>
43
44#include <QtCore/qloggingcategory.h>
45
46QT_BEGIN_NAMESPACE
47
48Q_LOGGING_CATEGORY(QT_CANBUS_PLUGINS_TINYCAN, "qt.canbus.plugins.tinycan")
49
50class TinyCanBusPlugin : public QObject, public QCanBusFactoryV2
51{
52 Q_OBJECT
53 Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QCanBusFactory" FILE "plugin.json")
54 Q_INTERFACES(QCanBusFactoryV2)
55
56public:
57 QList<QCanBusDeviceInfo> availableDevices(QString *errorMessage) const override
58 {
59 Q_UNUSED(errorMessage);
60 return TinyCanBackend::interfaces();
61 }
62
63 QCanBusDevice *createDevice(const QString &interfaceName, QString *errorMessage) const override
64 {
65 QString errorReason;
66 if (!TinyCanBackend::canCreate(errorReason: &errorReason)) {
67 qCWarning(QT_CANBUS_PLUGINS_TINYCAN, "%ls", qUtf16Printable(errorReason));
68 if (errorMessage)
69 *errorMessage = errorReason;
70 return nullptr;
71 }
72
73 auto device = new TinyCanBackend(interfaceName);
74 return device;
75 }
76};
77
78QT_END_NAMESPACE
79
80#include "main.moc"
81

source code of qtserialbus/src/plugins/canbus/tinycan/main.cpp