libdrmconf 0.14.1
A library to program DMR radios.
Loading...
Searching...
No Matches
radioinfo.hh
1#ifndef RADIOINFO_HH
2#define RADIOINFO_HH
3
4#include <QString>
5#include <QHash>
6#include <QList>
7#include "usbdevice.hh"
8
9
16{
17public:
19 enum Radio {
20 // Open source firmware
21 OpenGD77,
22 OpenUV380,
23 OpenRTX,
24 // Radioddity devices
25 RD5R,
26 GD73,
27 GD77,
28 // TyT devices
29 MD390, MD380 = MD390, RT8 = MD390,
30 UV390, UV380 = UV390, RT3S = UV390,
31 MD2017, RT82 = MD2017,
32 // Anytone devices
33 D868UVE,
34 D868UV = D868UVE,
35 DMR6X2UV,
36 DMR6X2UV2,
37 D878UV,
38 D878UVII,
39 D578UV,
40 D578UVII = D578UV,
41 // Baofeng/BTECH
42 DM1701, RT84 = DM1701,
43 DR1801UV,
44 DM32UV
45 };
46
47public:
49 RadioInfo(Radio radio, const QString &name, const QString manufacturer,
50 const QSet<USBDeviceInfo> &interfaces,
51 const QList<RadioInfo> &alias=QList<RadioInfo>());
52
53 RadioInfo(Radio radio, const QString &key, const QString &name, const QString manufacturer,
54 const QSet<USBDeviceInfo> &interfaces,
55 const QList<RadioInfo> &alias=QList<RadioInfo>());
56
58 RadioInfo();
59
61 bool isValid() const;
62
64 const QString &key() const;
66 const QString &name() const;
68 const QString &manufacturer() const;
70 bool interfaceMatches(const USBDeviceInfo &other) const;
71
74 bool hasAlias() const;
76 const QList<RadioInfo> &alias() const;
77
79 Radio id() const;
80
81public:
83 static bool hasRadioKey(const QString &key);
85 static RadioInfo byKey(const QString &key);
87 static RadioInfo byID(Radio radio);
88
90 static QList<RadioInfo> allRadios(bool flat=true);
92 static QList<RadioInfo> allRadios(const USBDeviceInfo &interface, bool flat=true);
93
94protected:
98 QString _key;
100 QString _name;
104 QList<RadioInfo> _alias;
106 QSet<USBDeviceInfo> _interfaces;
107
108protected:
110 static QHash<QString, Radio> _radiosByName;
112 static QHash<unsigned, RadioInfo> _radiosById;
113};
114
115
116#endif // RADIOINFO_HH
RadioInfo(Radio radio, const QString &name, const QString manufacturer, const QSet< USBDeviceInfo > &interfaces, const QList< RadioInfo > &alias=QList< RadioInfo >())
Use static methods the access radio info or call Radio::defaultRadioInfo.
Definition radioinfo.cc:80
static QHash< unsigned, RadioInfo > _radiosById
ID->Info map.
Definition radioinfo.hh:54
static RadioInfo byID(Radio radio)
Returns the radio info by id.
Definition radioinfo.cc:158
Radio id() const
Returns the unique device ID (alias radios share ID).
Definition radioinfo.cc:141
static QHash< QString, Radio > _radiosByName
Key->ID map.
Definition radioinfo.hh:24
bool interfaceMatches(const USBDeviceInfo &other) const
Returns some information about the interface to the radio.
Definition radioinfo.cc:124
QSet< USBDeviceInfo > _interfaces
Holds some information about the interface to the radio.
Definition radioinfo.hh:106
QString _name
Holds the name of the radio.
Definition radioinfo.hh:100
QList< RadioInfo > _alias
Holds possible identical radios from other manufacturers.
Definition radioinfo.hh:104
static QList< RadioInfo > allRadios(bool flat=true)
Returns the list of all known radios.
Definition radioinfo.cc:163
const QString & key() const
Returns the radio key (used to identify radios in the command line).
Definition radioinfo.cc:109
bool isValid() const
Returns true if the info is valid.
Definition radioinfo.cc:104
Radio
Known radios.
Definition radioinfo.hh:19
Radio _radio
Holds the radio id.
Definition radioinfo.hh:96
static RadioInfo byKey(const QString &key)
Returns the radio info by key.
Definition radioinfo.cc:151
QString _manufacturer
Holds the name of the manufacturer.
Definition radioinfo.hh:102
QString _key
Holds the key of the radio.
Definition radioinfo.hh:98
static bool hasRadioKey(const QString &key)
Returns true if the given key is known.
Definition radioinfo.cc:146
bool hasAlias() const
Returns true if the radio has aliases.
Definition radioinfo.cc:132
const QString & manufacturer() const
Returns the manufacturer name.
Definition radioinfo.cc:119
RadioInfo()
Empty constructor.
Definition radioinfo.cc:97
const QList< RadioInfo > & alias() const
Returns the list of alias radios.
Definition radioinfo.cc:136
const QString & name() const
Returns the radio name.
Definition radioinfo.cc:114
Base class for all Radio objects.
Definition radio.hh:32
Generic information about a possible radio interface.
Definition usbdevice.hh:121