Merged in f5soh/librepilot/update_credits (pull request #529)
[librepilot.git] / ground / gcs / src / plugins / uavobjects / uavobject.h.template
blob6320a2ff557237c5de6b2ded14d834589f148a63
1 /**
2  ******************************************************************************
3  *
4  * @file       $(NAMELC).h
5  * @author     The LibrePilot Project, http://www.librepilot.org Copyright (C) 2016.
6  *             The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
7  * @see        The GNU Public License (GPL) Version 3
8  * @addtogroup GCSPlugins GCS Plugins
9  * @{
10  * @addtogroup UAVObjectsPlugin UAVObjects Plugin
11  * @{
12  *   
13  * @note       Object definition file: $(XMLFILE). 
14  *             This is an automatically generated file.
15  *             DO NOT modify manually.
16  *
17  * @brief      The UAVUObjects GCS plugin 
18  *****************************************************************************/
19 /* 
20  * This program is free software; you can redistribute it and/or modify 
21  * it under the terms of the GNU General Public License as published by 
22  * the Free Software Foundation; either version 3 of the License, or 
23  * (at your option) any later version.
24  * 
25  * This program is distributed in the hope that it will be useful, but 
26  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
27  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 
28  * for more details.
29  * 
30  * You should have received a copy of the GNU General Public License along 
31  * with this program; if not, write to the Free Software Foundation, Inc., 
32  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
33  */
34 #ifndef $(NAMEUC)_H
35 #define $(NAMEUC)_H
37 #include "uavdataobject.h"
38 $(INCLUDE)
40 class UAVObjectManager;
42 class $(NAME)Constants : public QObject {
43     Q_OBJECT
44 public:
45     enum Enum { $(ENUMS_COUNT) };
46     Q_ENUMS(Enum) // TODO switch to Q_ENUM once on Qt 5.5
49 $(ENUMS)
51 class UAVOBJECTS_EXPORT $(NAME): public UAVDataObject
53     Q_OBJECT
54 $(PROPERTIES)
56     // Deprecated properties
57 $(DEPRECATED_PROPERTIES)
59 public:
60     // Field structure
61     typedef struct {
62 $(DATAFIELDS)
63     } __attribute__((packed)) DataFields;
65     // Field information
66 $(DATAFIELDINFO)
68     // Constants
69     static const quint32 OBJID = $(OBJIDHEX);
70     static const QString NAME;
71     static const QString DESCRIPTION;
72     static const QString CATEGORY;
73     static const bool ISSINGLEINST = $(ISSINGLEINST);
74     static const bool ISSETTINGS = $(ISSETTINGS);
75     static const quint32 NUMBYTES = sizeof(DataFields);
77     // Functions
78     $(NAME)();
80     DataFields getData();
81     void setData(const DataFields& data, bool emitUpdateEvents = true);
82     Metadata getDefaultMetadata();
83     UAVDataObject* clone(quint32 instID);
84     UAVDataObject* dirtyClone();
86     static $(NAME)* GetInstance(UAVObjectManager* objMngr, quint32 instID = 0);
88     static void registerQMLTypes();
90 $(PROPERTY_GETTERS)
92 public slots:
93 $(PROPERTY_SETTERS)
95 signals:
96 $(PROPERTY_NOTIFICATIONS)
98 private slots:
99     void emitNotifications();
101 private:
102     DataFields data_;
104     void setDefaultFieldValues();
108 #endif // $(NAMEUC)_H