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 "peakcanbackend.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_PEAKCAN, "qt.canbus.plugins.peakcan")
49
50class PeakCanBusPlugin : 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 if (Q_UNLIKELY(!PeakCanBackend::canCreate(errorMessage)))
60 return QList<QCanBusDeviceInfo>();
61
62 return PeakCanBackend::interfaces();
63 }
64
65 QCanBusDevice *createDevice(const QString &interfaceName, QString *errorMessage) const override
66 {
67 QString errorReason;
68 if (!PeakCanBackend::canCreate(errorReason: &errorReason)) {
69 qCWarning(QT_CANBUS_PLUGINS_PEAKCAN, "%ls", qUtf16Printable(errorReason));
70 if (errorMessage)
71 *errorMessage = errorReason;
72 return nullptr;
73 }
74
75 auto device = new PeakCanBackend(interfaceName);
76 return device;
77 }
78};
79
80QT_END_NAMESPACE
81
82#include "main.moc"
83

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