libdrmconf
0.15.1
A library to program DMR radios.
Toggle main menu visibility
Loading...
Searching...
No Matches
gnsssettings.hh
1
#ifndef GNSSSETTINGS_HH
2
#define GNSSSETTINGS_HH
3
4
#include "configobject.hh"
5
#include <QGeoCoordinate>
6
8
class
GNSSSettings :
public
ConfigExtension
9
{
10
Q_OBJECT
11
12
Q_CLASSINFO(
"description"
,
"Some common global GNSS settings."
);
13
14
Q_CLASSINFO(
"fixedPositionEnabledDescription"
,
"If enabled, the fixed position is used instead of the GNSS position."
)
15
Q_PROPERTY(
bool
fixedPositionEnabled READ fixedPositionEnabled WRITE enableFixedPosition FINAL)
16
17
Q_CLASSINFO(
"fixedPositionDescription"
,
"Some fixed position (locator)."
)
18
Q_PROPERTY(QString fixedPosition READ fixedPositionLocator WRITE setFixedPositionLocator FINAL)
19
20
Q_CLASSINFO(
"systemsDescription"
,
"Enabled GNSSs."
)
21
Q_PROPERTY(Systems systems READ systems WRITE setSystems FINAL)
22
23
Q_CLASSINFO(
"unitsDescrption"
,
"Specifies unit system."
)
24
Q_PROPERTY(Units units READ units WRITE setUnits FINAL)
25
26
public
:
27
enum class
Units {
28
Metric, Archaic
29
};
30
Q_ENUM(Units)
31
32
enum class
System {
33
Fixed = 0, GPS = 1, Glonass = 2, Galileo = 4, Beidou = 8
34
};
35
Q_DECLARE_FLAGS(Systems, System)
36
Q_FLAGS(Systems)
37
38
39
public
:
40
explicit
GNSSSettings(QObject *parent =
nullptr
);
41
42
ConfigItem
*
clone
()
const override
;
43
46
bool
fixedPositionEnabled
()
const
;
47
void
enableFixedPosition(
bool
use);
48
49
const
QGeoCoordinate &fixedPosition()
const
;
50
void
setFixedPosition(
const
QGeoCoordinate &pos);
51
QString fixedPositionLocator()
const
;
52
void
setFixedPositionLocator(
const
QString &locator);
53
54
Systems systems()
const
;
55
void
setSystems(Systems systems);
56
57
Units units()
const
;
58
void
setUnits(Units units);
59
60
protected
:
61
bool
_fixedPositionEnabled;
62
QGeoCoordinate _fixedPosition;
63
Systems _systems;
64
Units _units;
65
};
66
67
Q_DECLARE_OPERATORS_FOR_FLAGS(GNSSSettings::Systems)
68
69
namespace
YAML
70
{
72
template
<>
73
struct
convert<QGeoCoordinate>
74
{
76
static
Node
encode
(
const
QGeoCoordinate& rhs) {
77
if
(! rhs.isValid())
78
return
Node(YAML::Null);
79
80
Node list;
81
list[
"longitude"
] = rhs.longitude();
82
list[
"latitude"
] = rhs.latitude();
83
if
(std::isfinite(rhs.altitude()))
84
list[
"altitude"
] = rhs.altitude();
85
return
list;
86
}
87
89
static
bool
decode
(
const
Node& node, QGeoCoordinate& rhs) {
90
if
(node.IsNull()) {
91
rhs = QGeoCoordinate();
92
return
true
;
93
}
94
if
(! node.IsMap())
95
return
false
;
96
if
((!node[
"longitude"
]) || (!node[
"longitude"
].IsScalar()))
97
return
false
;
98
if
((!node[
"latitude"
]) || (!node[
"latitude"
].IsScalar()))
99
return
false
;
100
rhs.setLongitude(node[
"longitude"
].as<double>(std::numeric_limits<double>::quiet_NaN()));
101
rhs.setLatitude(node[
"latitude"
].as<double>(std::numeric_limits<double>::quiet_NaN()));
102
if
(node[
"altitude"
] && node[
"altitude"
].IsScalar())
103
rhs.setAltitude(node[
"altitude"
].as<double>(std::numeric_limits<double>::quiet_NaN()));
104
return
true
;
105
}
106
};
107
}
108
109
#endif
// GNSSSETTINGS_HH
ConfigExtension::ConfigExtension
ConfigExtension(QObject *parent=nullptr)
Hidden constructor.
Definition
configobject.cc:1244
ConfigItem::ConfigItem
ConfigItem(QObject *parent=nullptr)
Hidden constructor.
Definition
configobject.cc:158
GNSSSettings::clone
ConfigItem * clone() const override
Clones this item.
Definition
gnsssettings.cc:14
GNSSSettings::fixedPositionEnabled
bool fixedPositionEnabled() const
Returns true, if the fixed position is valid and either explicitly enabled or the GNSSs flags are set...
Definition
gnsssettings.cc:25
YAML::convert< QGeoCoordinate >::decode
static bool decode(const Node &node, QGeoCoordinate &rhs)
Parses the frequency.
Definition
gnsssettings.hh:89
YAML::convert< QGeoCoordinate >::encode
static Node encode(const QGeoCoordinate &rhs)
Serializes the frequency.
Definition
gnsssettings.hh:76
lib
gnsssettings.hh
Generated by
1.17.0