libdrmconf 0.12.1
A library to program DMR radios.
Loading...
Searching...
No Matches
radioid.hh
1#ifndef RADIOID_HH
2#define RADIOID_HH
3
4#include "configobject.hh"
5
7
8
14class RadioID: public ConfigObject
15{
16 Q_OBJECT
17
18protected:
21 explicit RadioID(QObject *parent=nullptr);
23 RadioID(const QString &name, QObject *parent=nullptr);
24};
25
26
32class DMRRadioID : public RadioID
33{
34 Q_OBJECT
35 Q_CLASSINFO("IdPrefix", "id")
36
37
38 Q_PROPERTY(unsigned number READ number WRITE setNumber)
39
40public:
42 Q_INVOKABLE explicit DMRRadioID(QObject *parent=nullptr);
43
48 DMRRadioID(const QString &name, uint32_t number, QObject *parent = nullptr);
49
50 ConfigItem *clone() const;
51
53 uint32_t number() const;
55 void setNumber(uint32_t number);
56
57 YAML::Node serialize(const Context &context, const ErrorStack &err=ErrorStack());
58 bool parse(const YAML::Node &node, ConfigItem::Context &ctx, const ErrorStack &err=ErrorStack());
59 bool link(const YAML::Node &node, const ConfigItem::Context &ctx, const ErrorStack &err=ErrorStack());
60
61protected:
63 uint32_t _number;
64};
65
66
70{
71 Q_OBJECT
72
73protected:
75 explicit DefaultRadioID(QObject *parent=nullptr);
76
77public:
79 static DefaultRadioID *get();
80
81private:
83 static DefaultRadioID *_instance;
84};
85
86
91class DTMFRadioID: public RadioID
92{
93 Q_OBJECT
94 Q_CLASSINFO("IdPrefix", "dtmf")
95
96
97 Q_PROPERTY(QString number READ number WRITE setNumber)
98
99public:
101 Q_INVOKABLE explicit DTMFRadioID(QObject *parent=nullptr);
102
107 explicit DTMFRadioID(const QString &name, const QString &number, QObject *parent=nullptr);
108
109 ConfigItem *clone() const;
110
112 const QString &number() const;
114 void setNumber(const QString &number);
115
116protected:
118 QString _number;
119};
120
121
125{
126 Q_OBJECT
127
128
129public:
131 explicit RadioIDList(QObject *parent=nullptr);
132
133 void clear();
134
136 DMRRadioID *getId(int idx) const;
138 DMRRadioID *find(uint32_t id) const;
139
140 int add(ConfigObject *obj, int row=-1, bool unique=true);
141
143 virtual int addId(const QString &name, uint32_t id);
145 virtual bool delId(uint32_t id);
146
147public:
148 ConfigItem *allocateChild(const YAML::Node &node, ConfigItem::Context &ctx, const ErrorStack &err=ErrorStack());
149};
150
151
152#endif // RADIOID_HH
Parse context for config objects.
Definition configobject.hh:48
Base class for all configuration objects (channels, zones, contacts, etc).
Definition configobject.hh:40
List class for config objects.
Definition configobject.hh:349
Base class of all labeled and named objects.
Definition configobject.hh:199
QString name
The name of the object.
Definition configobject.hh:203
Implements a reference to a radio ID.
Definition configreference.hh:251
Represents a DMR radio ID within the abstract config.
Definition radioid.hh:33
unsigned number
The number of the radio ID.
Definition radioid.hh:38
bool link(const YAML::Node &node, const ConfigItem::Context &ctx, const ErrorStack &err=ErrorStack())
Links the given object to the rest of the codeplug using the given context.
Definition radioid.cc:90
ConfigItem * clone() const
Clones this item.
Definition radioid.cc:40
void setNumber(uint32_t number)
Sets the DMR ID.
Definition radioid.cc:55
YAML::Node serialize(const Context &context, const ErrorStack &err=ErrorStack())
Recursively serializes the configuration to YAML nodes.
Definition radioid.cc:63
bool parse(const YAML::Node &node, ConfigItem::Context &ctx, const ErrorStack &err=ErrorStack())
Parses the given YAML node, updates the given object and updates the given context (IDs).
Definition radioid.cc:76
uint32_t _number
Holds the DMR ID.
Definition radioid.hh:63
Represents a DTMF radio ID as used for PTT-ID on analog channels.
Definition radioid.hh:92
A singleton radio ID representing the default DMR radio ID within the abstract config.
Definition radioid.hh:70
Implements a stack of error messages to provide a pretty formatted error traceback.
Definition errorstack.hh:41
Represents the list of configured DMR IDs (radio IDs) within the abstract config.
Definition radioid.hh:125
Abstract base class for all radio IDs.
Definition radioid.hh:15
RadioID(QObject *parent=nullptr)
Hidden default constructor.
Definition radioid.cc:11