libdrmconf 0.12.1
A library to program DMR radios.
Loading...
Searching...
No Matches
satellitedatabase.hh
1#ifndef SATELLITEDATABASE_HH
2#define SATELLITEDATABASE_HH
3
4#include "errorstack.hh"
5#include "frequency.hh"
6#include "signaling.hh"
7#include "transponderdatabase.hh"
8#include "orbitalelementsdatabase.hh"
9
10
11
13{
14public:
15 Satellite();
16 Satellite(const OrbitalElement &orbit);
17
18 Satellite(const Satellite &sat) = default;
19 Satellite &operator =(const Satellite &other) = default;
20
21 const QString &name() const;
22 void setName(const QString &name);
23
24 const Frequency &fmUplink() const;
25 void setFMUplink(const Frequency &f);
26 const Frequency &fmDownlink() const;
27 void setFMDownlink(const Frequency &f);
28 const SelectiveCall &fmUplinkTone() const;
29 const SelectiveCall &fmDownlinkTone() const;
30
31 const Frequency &aprsUplink() const;
32 void setAPRSUplink(const Frequency &f);
33 const Frequency &aprsDownlink() const;
34 void setAPRSDownlink(const Frequency &f);
35 const SelectiveCall &aprsUplinkTone() const;
36 const SelectiveCall &aprsDownlinkTone() const;
37
38 const Frequency &beacon() const;
39 void setBeacon(const Frequency &f);
40
41 QJsonObject toJson() const;
42
43public:
44 static Satellite fromJson(const QJsonObject &obj, const OrbitalElementsDatabase &db);
45
46protected:
47 QString _name;
48 Frequency _fmUplink;
49 Frequency _fmDownlink;
50 SelectiveCall _fmUplinkTone;
51 SelectiveCall _fmDownlinkTone;
52 Frequency _aprsUplink;
53 Frequency _aprsDownlink;
54 SelectiveCall _aprsUplinkTone;
55 SelectiveCall _aprsDownlinkTone;
56 Frequency _beacon;
57};
58
59
60
63class SatelliteDatabase : public QAbstractTableModel
64{
65 Q_OBJECT
66
67public:
68 explicit SatelliteDatabase(unsigned int updatePeriodDays=7, QObject *parent = nullptr);
69
70 const OrbitalElementsDatabase &orbitalElements() const;
71 OrbitalElementsDatabase &orbitalElements();
72 const TransponderDatabase &transponders() const;
73 TransponderDatabase &transponders();
74
75 unsigned int count() const;
76 const Satellite &getAt(unsigned int idx) const;
77 void add(const Satellite &sat);
78 bool removeRows(int row, int count, const QModelIndex &parent=QModelIndex());
79
80 Qt::ItemFlags flags(const QModelIndex &index) const;
81 int rowCount(const QModelIndex &parent) const;
82 int columnCount(const QModelIndex &parent) const;
83 QVariant headerData(int section, Qt::Orientation orientation, int role) const;
84 QVariant data(const QModelIndex &index, int role) const;
85 bool setData(const QModelIndex &index, const QVariant &value, int role);
86
87public slots:
88 void update();
89 void load();
90 bool save(const ErrorStack &err = ErrorStack()) const;
91
92signals:
94 void loaded();
96 void error(const QString &msg);
97
98private:
100 QVector<Satellite> _satellites;
101 OrbitalElementsDatabase _orbitalElements;
102 TransponderDatabase _transponders;
103};
104
105#endif // SATELLITEDATABASE_HH
Implements a stack of error messages to provide a pretty formatted error traceback.
Definition errorstack.hh:41
Definition orbitalelementsdatabase.hh:9
Definition orbitalelementsdatabase.hh:91
A table holding all known satellites.
Definition satellitedatabase.hh:64
void loaded()
Gets emitted once the satellites has been loaded.
void error(const QString &msg)
Gets emitted if the loading one of the sources fails.
Definition satellitedatabase.hh:13
Definition transponderdatabase.hh:53
Helper type to encode frequencies without any rounding error.
Definition frequency.hh:11
Encodes a selective call.
Definition signaling.hh:13