libdrmconf 0.13.3
A library to program DMR radios.
Loading...
Searching...
No Matches
gpssystem.hh
1#ifndef GPSSYSTEM_H
2#define GPSSYSTEM_H
3
4#include "configreference.hh"
5#include <QAbstractTableModel>
6#include "anytone_extension.hh"
7#include "opengd77_extension.hh"
8
9class Config;
10class DMRContact;
11class DMRChannel;
12class FMChannel;
13
14
18{
19 Q_OBJECT
20 Q_CLASSINFO("IdPrefix", "aprs")
21
22
23 Q_PROPERTY(unsigned period READ period WRITE setPeriod)
24
25protected:
27 explicit PositioningSystem(QObject *parent=nullptr);
34 PositioningSystem(const QString &name, unsigned period=300, QObject *parent=nullptr);
35
36public:
38 virtual ~PositioningSystem();
39
41 unsigned period() const;
43 void setPeriod(unsigned period);
44
45public:
46 bool parse(const YAML::Node &node, Context &ctx, const ErrorStack &err=ErrorStack());
47 bool link(const YAML::Node &node, const Context &ctx, const ErrorStack &err=ErrorStack());
48
49protected:
50 bool populate(YAML::Node &node, const ConfigItem::Context &context, const ErrorStack &err=ErrorStack());
51
52protected slots:
55
56protected:
58 unsigned _period;
59};
60
61
65{
66 Q_OBJECT
67
72
73public:
75 Q_INVOKABLE explicit GPSSystem(QObject *parent=nullptr);
86 GPSSystem(const QString &name, DMRContact *contact=nullptr,
87 DMRChannel *revertChannel = nullptr, unsigned period=300,
88 QObject *parent = nullptr);
89
90 ConfigItem *clone() const;
91
93 bool hasContact() const;
95 DMRContact *contactObj() const;
99 const DMRContactReference *contact() const;
104
107 bool hasRevertChannel() const;
109 DMRChannel *revertChannel() const;
111 void setRevertChannel(DMRChannel *channel);
113 void resetRevertChannel();
114
116 const DMRChannelReference *revert() const;
119
120public:
121 YAML::Node serialize(const Context &context, const ErrorStack &err=ErrorStack());
122
123protected:
128};
129
130
134{
135 Q_OBJECT
136
140 Q_PROPERTY(QString destination READ destination WRITE setDestination SCRIPTABLE false)
142 Q_PROPERTY(unsigned int destSSID READ destSSID WRITE setDestSSID SCRIPTABLE false)
144 Q_PROPERTY(QString source READ source WRITE setSource SCRIPTABLE false)
146 Q_PROPERTY(unsigned int srcSSID READ srcSSID WRITE setSrcSSID SCRIPTABLE false)
148 Q_PROPERTY(QString path READ path WRITE setPath SCRIPTABLE false)
149
151 Q_PROPERTY(Icon icon READ icon WRITE setIcon)
153 Q_PROPERTY(QString message READ message WRITE setMessage)
158
159public:
160 static const unsigned PRIMARY_TABLE = (0<<8);
161 static const unsigned SECONDARY_TABLE = (1<<8);
162 static const unsigned TABLE_MASK = (3<<8);
163 static const unsigned ICON_MASK = 0x7f;
164
166 enum class Icon {
167 PoliceStation = (PRIMARY_TABLE | 0), None, Digipeater, Phone, DXCluster, HFGateway, SmallPlane,
168 MobileSatelliteStation, WheelChair, Snowmobile, RedCross, BoyScout, Home, X, RedDot,
169 Circle0, Circle1, Circle2, Circle3, Circle4, Circle5, Circle6, Circle7, Circle8, Circle9,
170 Fire, Campground, Motorcycle, RailEngine, Car, FileServer, HCFuture, AidStation, BBS, Canoe,
171 Eyeball = (PRIMARY_TABLE | 36), Tractor, GridSquare, Hotel, TCPIP, School = (PRIMARY_TABLE | 42),
172 Logon, MacOS, NTSStation, Balloon, PoliceCar, TBD, RV, Shuttle, SSTV, Bus, ATV, WXService, Helo,
173 Yacht, Windows, Jogger, Triangle, PBBS, LargePlane, WXStation, DishAntenna, Ambulance, Bike,
174 ICP, FireStation, Horse, FireTruck, Glider, Hospital, IOTA, Jeep, SmallTruck, Laptop, MicE,
175 Node, EOC, Rover, Grid, Antenna, PowerBoat, TruckStop, TruckLarge, Van, Water, XAPRS, Yagi,
176 Shelter
177 };
178 Q_ENUM(Icon)
179
180public:
182 Q_INVOKABLE explicit APRSSystem(QObject *parent=nullptr);
198 APRSSystem(const QString &name, FMChannel *channel, const QString &dest, unsigned destSSID,
199 const QString &src, unsigned srcSSID, const QString &path="", Icon icon=Icon::Jogger,
200 const QString &message="", unsigned period=300, QObject *parent=nullptr);
201
202 bool copy(const ConfigItem &other);
203 ConfigItem *clone() const;
204
207 bool hasRevertChannel() const;
209 FMChannel *revertChannel() const;
211 void setRevertChannel(FMChannel *revertChannel);
213 void resetRevertChannel();
214
216 const FMChannelReference *revert() const;
219
221 const QString &destination() const;
223 unsigned destSSID() const;
225 void setDestination(const QString &call, unsigned ssid);
227 void setDestination(const QString &call);
229 void setDestSSID(unsigned ssid);
230
232 const QString &source() const;
234 unsigned srcSSID() const;
236 void setSource(const QString &call, unsigned ssid);
238 void setSource(const QString &call);
240 void setSrcSSID(unsigned ssid);
241
243 const QString &path() const;
245 void setPath(const QString &path);
246
248 Icon icon() const;
250 void setIcon(Icon icon);
251
253 const QString &message() const;
255 void setMessage(const QString &msg);
256
261
266
267public:
268 YAML::Node serialize(const Context &context, const ErrorStack &err=ErrorStack());
269 bool parse(const YAML::Node &node, Context &ctx, const ErrorStack &err=ErrorStack());
270
271protected:
272 bool populate(YAML::Node &node, const Context &context, const ErrorStack &err=ErrorStack());
273
274protected:
280 unsigned _destSSID;
282 QString _source;
284 unsigned _srcSSID;
286 QString _path;
290 QString _message;
295};
296
297
301{
302Q_OBJECT
303
304public:
306 explicit PositioningSystems(QObject *parent=nullptr);
307
309 PositioningSystem *system(int idx) const;
310
311 int add(ConfigObject *obj, int row=-1, bool unique=true);
312
314 int gpsCount() const;
317 int indexOfGPSSys(const GPSSystem *gps) const;
320 GPSSystem *gpsSystem(int idx) const;
321
323 int aprsCount() const;
326 int indexOfAPRSSys(APRSSystem *gps) const;
329 APRSSystem *aprsSystem(int idx) const;
330
331public:
332 ConfigItem *allocateChild(const YAML::Node &node, ConfigItem::Context &ctx, const ErrorStack &err=ErrorStack());
333};
334
335
336#endif // GPSSYSTEM_H
Represents an APRS system within the generic config.
Definition gpssystem.hh:134
AnytoneFMAPRSSettingsExtension * _anytone
Owns the Anytone settings extension.
Definition gpssystem.hh:292
QString _source
Holds the source call.
Definition gpssystem.hh:282
void setAnytoneExtension(AnytoneFMAPRSSettingsExtension *ext)
Sets the Anytone settings extension.
Definition gpssystem.cc:385
Q_INVOKABLE APRSSystem(QObject *parent=nullptr)
Default constructor.
Definition gpssystem.cc:203
static const unsigned ICON_MASK
Bitmask for the icon table entry.
Definition gpssystem.hh:163
void setDestSSID(unsigned ssid)
Sets the destination SSID.
Definition gpssystem.cc:319
AnytoneFMAPRSSettingsExtension * anytoneExtension() const
Returns the Anytone settings extension, if set.
Definition gpssystem.cc:381
QString _destination
Holds the destination call.
Definition gpssystem.hh:278
void setIcon(Icon icon)
Sets the map icon.
Definition gpssystem.cc:366
void setSrcSSID(unsigned ssid)
Sets the source SSID.
Definition gpssystem.cc:346
static const unsigned SECONDARY_TABLE
Secondary icon table flag.
Definition gpssystem.hh:161
OpenGD77APRSSystemExtension * openGD77Extension() const
Returns the OpenGD77 settings extension, if set.
Definition gpssystem.cc:398
QString message
An optional text message.
Definition gpssystem.hh:153
void setPath(const QString &path)
Sets the APRS path.
Definition gpssystem.cc:356
static const unsigned PRIMARY_TABLE
Primary icon table flag.
Definition gpssystem.hh:160
OpenGD77APRSSystemExtension * _openGD77
Owns the OpenGD77 settings extension.
Definition gpssystem.hh:294
unsigned _destSSID
Holds the destination SSID.
Definition gpssystem.hh:280
unsigned int destSSID
The destination SSID.
Definition gpssystem.hh:142
QString destination
The destination call.
Definition gpssystem.hh:140
AnytoneFMAPRSSettingsExtension * anytone
Anytone specific settings.
Definition gpssystem.hh:155
QString _message
Holds the optional message.
Definition gpssystem.hh:290
FMChannelReference _channel
A weak reference to the transmit channel.
Definition gpssystem.hh:276
QString path
The APRS path as a string.
Definition gpssystem.hh:148
FMChannelReference * revert()
Returns a reference to the revert channel.
OpenGD77APRSSystemExtension * opengd77
OpenGD77 specific settings.
Definition gpssystem.hh:157
static const unsigned TABLE_MASK
Bitmask for icon table flags.
Definition gpssystem.hh:162
unsigned _srcSSID
Holds the source SSID.
Definition gpssystem.hh:284
void setDestination(const QString &call, unsigned ssid)
Sets the destination call and SSID.
Definition gpssystem.cc:308
Icon icon
The APRS icon.
Definition gpssystem.hh:151
unsigned int srcSSID
The source SSID.
Definition gpssystem.hh:146
FMChannelReference * revert
The transmit channel.
Definition gpssystem.hh:138
void setMessage(const QString &msg)
Sets the optional APRS message text.
Definition gpssystem.cc:375
QString _path
Holds the APRS path string.
Definition gpssystem.hh:286
Icon _icon
Holds the map icon.
Definition gpssystem.hh:288
void setSource(const QString &call, unsigned ssid)
Sets the source call and SSID.
Definition gpssystem.cc:335
void setOpenGD77Extension(OpenGD77APRSSystemExtension *ext)
Sets the OpenGD77 settings extension.
Definition gpssystem.cc:402
QString source
The source call.
Definition gpssystem.hh:144
Icon
All implemented APRS icons.
Definition gpssystem.hh:166
Implements some additional settings for the FM APRS system.
Definition anytone_extension.hh:368
Parse context for config objects.
Definition configobject.hh:43
Base class for all configuration objects (channels, zones, contacts, etc).
Definition configobject.hh:35
virtual bool copy(const ConfigItem &other)
Copies the given item into this one.
Definition configobject.cc:139
virtual ConfigItem * clone() const =0
Clones this item.
virtual YAML::Node serialize(const Context &context, const ErrorStack &err=ErrorStack())
Recursively serializes the configuration to YAML nodes.
Definition configobject.cc:365
ConfigItem(QObject *parent=nullptr)
Hidden constructor.
Definition configobject.cc:132
ConfigObjectList(const QMetaObject &elementTypes=ConfigItem::staticMetaObject, QObject *parent=nullptr)
Hidden constructor.
Definition configobject.cc:1385
Base class of all labeled and named objects.
Definition configobject.hh:194
ConfigObject(QObject *parent=nullptr)
Specifies the prefix for every ID assigned to every object during serialization.
Definition configobject.cc:1015
QString name
The name of the object.
Definition configobject.hh:198
The config class, representing the codeplug configuration.
Definition config.hh:70
Implements a reference to a DMR channel.
Definition configreference.hh:139
Extension to the DigitalChannel class to implement an DMR channel.
Definition channel.hh:363
Represents a reference to a DMR contact.
Definition configreference.hh:99
Represents a digital contact, that is a DMR number.
Definition contact.hh:141
Implements a stack of error messages to provide a pretty formatted error traceback.
Definition errorstack.hh:43
Implements a reference to a FM channel.
Definition configreference.hh:151
Extension to the AnalogChannel class to implement an analog FM channel.
Definition channel.hh:221
This class represents a GPS signalling system within the codeplug.
Definition gpssystem.hh:65
YAML::Node serialize(const Context &context, const ErrorStack &err=ErrorStack())
Recursively serializes the configuration to YAML nodes.
Definition gpssystem.cc:190
DMRChannel * revertChannel() const
Returns the revert channel for the GPS information or nullptr if not set.
Definition gpssystem.cc:161
void setContact(DMRContactReference *contactObj)
Sets the reference to the destination contact for the GPS information.
Definition gpssystem.cc:140
ConfigItem * clone() const
Clones this item.
Definition gpssystem.cc:115
void setContactObj(DMRContact *contactObj)
Sets the destination contact for the GPS information.
Definition gpssystem.cc:135
void resetRevertChannel()
Resets the revert channel to the current channel.
Definition gpssystem.cc:174
DMRContactReference _contact
Holds the destination contact for the GPS information.
Definition gpssystem.hh:125
DMRContact * contactObj() const
Returns the destination contact for the GPS information or nullptr if not set.
Definition gpssystem.cc:130
DMRChannelReference * revert
References the revert channel.
Definition gpssystem.hh:71
void setRevertChannel(DMRChannel *channel)
Sets the revert channel for the GPS information to be sent on.
Definition gpssystem.cc:166
bool hasContact() const
Returns true if a contact is set for the GPS system.
Definition gpssystem.cc:125
DMRContactReference * contact
References the destination contact.
Definition gpssystem.hh:69
DMRChannelReference _revertChannel
Holds the revert channel on which the GPS information is sent on.
Definition gpssystem.hh:127
Q_INVOKABLE GPSSystem(QObject *parent=nullptr)
Default constructor.
Definition gpssystem.cc:80
bool hasRevertChannel() const
Returns true if the GPS system has a revert channel set.
Definition gpssystem.cc:156
Definition opengd77_extension.hh:158
Base class of the positioning systems, that is APRS and DMR position reporting system.
Definition gpssystem.hh:18
bool link(const YAML::Node &node, const Context &ctx, const ErrorStack &err=ErrorStack())
Links the given object to the rest of the codeplug using the given context.
Definition gpssystem.cc:67
unsigned _period
Holds the update period in seconds.
Definition gpssystem.hh:58
bool populate(YAML::Node &node, const ConfigItem::Context &context, const ErrorStack &err=ErrorStack())
Recursively serializes the configuration to YAML nodes.
Definition gpssystem.cc:40
void onReferenceModified()
Gets called, whenever a reference is modified.
Definition gpssystem.cc:72
void setPeriod(unsigned period)
Sets the update period in seconds.
Definition gpssystem.cc:34
PositioningSystem(QObject *parent=nullptr)
Default constructor.
Definition gpssystem.cc:12
bool parse(const YAML::Node &node, Context &ctx, const ErrorStack &err=ErrorStack())
Parses the given YAML node, updates the given object and updates the given context (IDs).
Definition gpssystem.cc:47
unsigned period
The update period in seconds.
Definition gpssystem.hh:23
PositioningSystems(QObject *parent=nullptr)
Constructs an empty list of GPS systems.
Definition gpssystem.cc:514
APRSSystem * aprsSystem(int idx) const
Returns the APRS system at index idx.
Definition gpssystem.cc:602
int aprsCount() const
Returns the number of defined APRS system.
Definition gpssystem.cc:576
int indexOfGPSSys(const GPSSystem *gps) const
Returns the index of the GPS System.
Definition gpssystem.cc:544
int indexOfAPRSSys(APRSSystem *gps) const
Returns the index of the specified APRS system.
Definition gpssystem.cc:586
int add(ConfigObject *obj, int row=-1, bool unique=true)
Adds an element to the list.
Definition gpssystem.cc:528
int gpsCount() const
Returns the number of defined GPS systems.
Definition gpssystem.cc:535
GPSSystem * gpsSystem(int idx) const
Gets the GPS system at the specified index.
Definition gpssystem.cc:560
PositioningSystem * system(int idx) const
Returns the positioning system at the specified index.
Definition gpssystem.cc:521
ConfigItem * allocateChild(const YAML::Node &node, ConfigItem::Context &ctx, const ErrorStack &err=ErrorStack())
Allocates a member objects for the given YAML node.
Definition gpssystem.cc:617