1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 Tim Sander <tim@krieglstein.org>
4 ** Copyright (C) 2016 Denis Shienkov <denis.shienkov@gmail.com>
5 ** Contact: https://www.qt.io/licensing/
6 **
7 ** This file is part of Qt Creator.
8 **
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21 ** included in the packaging of this file. Please review the following
22 ** information to ensure the GNU General Public License requirements will
23 ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24 **
25 ****************************************************************************/
26 
27 #pragma once
28 
29 #include <projectexplorer/devicesupport/idevice.h>
30 #include <projectexplorer/devicesupport/idevicefactory.h>
31 
32 namespace BareMetal {
33 namespace Internal {
34 
35 class IDebugServerProvider;
36 
37 // BareMetalDevice
38 
39 class BareMetalDevice final : public ProjectExplorer::IDevice
40 {
41     Q_DECLARE_TR_FUNCTIONS(BareMetal::Internal::BareMetalDevice)
42 
43 public:
44     using Ptr = QSharedPointer<BareMetalDevice>;
45     using ConstPtr = QSharedPointer<const BareMetalDevice>;
46 
create()47     static Ptr create() { return Ptr(new BareMetalDevice); }
48     ~BareMetalDevice() final;
49 
50     static QString defaultDisplayName();
51 
52     ProjectExplorer::IDeviceWidget *createWidget() final;
53 
54     ProjectExplorer::DeviceProcessSignalOperation::Ptr signalOperation() const final;
55 
56     QString debugServerProviderId() const;
57     void setDebugServerProviderId(const QString &id);
58     void unregisterDebugServerProvider(IDebugServerProvider *provider);
59 
60     void fromMap(const QVariantMap &map) final;
61     QVariantMap toMap() const final;
62 
63 private:
64     BareMetalDevice();
65     QString m_debugServerProviderId;
66 };
67 
68 // BareMetalDeviceFactory
69 
70 class BareMetalDeviceFactory final : public ProjectExplorer::IDeviceFactory
71 {
72 public:
73    explicit BareMetalDeviceFactory();
74 
75    ProjectExplorer::IDevice::Ptr create() const final;
76 };
77 
78 } //namespace Internal
79 } //namespace BareMetal
80