libdrmconf 0.12.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
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, // Actually a different device. Implement!
36 D878UV,
37 D878UVII,
38 D578UV,
39 // Baofeng/BTECH
40 DM1701, RT84 = DM1701,
42 };
43
44public:
46 RadioInfo(Radio radio, const QString &name, const QString manufacturer,
48 const QList<RadioInfo> &alias=QList<RadioInfo>());
50 RadioInfo(Radio radio, const QString &key, const QString &name, const QString manufacturer,
52 const QList<RadioInfo> &alias=QList<RadioInfo>());
53
55 RadioInfo();
56
58 bool isValid() const;
59
61 const QString &key() const;
63 const QString &name() const;
65 const QString &manufacturer() const;
67 const USBDeviceInfo &interface() const;
68
71 bool hasAlias() const;
73 const QList<RadioInfo> &alias() const;
74
76 Radio id() const;
77
78public:
80 static bool hasRadioKey(const QString &key);
82 static RadioInfo byKey(const QString &key);
84 static RadioInfo byID(Radio radio);
85
87 static QList<RadioInfo> allRadios(bool flat=true);
89 static QList<RadioInfo> allRadios(const USBDeviceInfo &interface, bool flat=true);
90
91protected:
95 QString _key;
97 QString _name;
101 QList<RadioInfo> _alias;
104
105protected:
107 static QHash<QString, Radio> _radiosByName;
109 static QHash<unsigned, RadioInfo> _radiosById;
110};
111
112
113#endif // RADIOINFO_HH
Implements an interface to Anytone AT-D578UV VHF/UHF 50W DMR (Tier I & II) radios.
Definition d578uv.hh:19
Implements an interface to Anytone AT-D868UV VHF/UHF 7W DMR (Tier I & II) radios.
Definition d868uv.hh:36
Implements an interface to Anytone AT-D878UV VHF/UHF 7W DMR (Tier I & II) radios.
Definition d878uv.hh:36
Implements an USB interface to the Baofeng DM-1701 and Retevis RT84 VHF/UHF 5W DMR (Tier I&II) radios...
Definition dm1701.hh:39
Represents a BTECH DMR-6X2UV.
Definition dmr6x2uv.hh:22
Implements the BTECH DR-1801UV (BF-1801 A6).
Definition dr1801uv.hh:20
Implements an USB interface to the Radioddity GD-73 UHF 2W DMR (Tier I&II) radio.
Definition gd73.hh:22
Implements an USB interface to the Radioddity GD-77(S) VHF/UHF 5W DMR (Tier I&II) radios.
Definition gd77.hh:22
Implements an USB interface to the TYT MD-2017 & Retevis RT82 VHF/UHF 5W DMR (Tier I&II) radios.
Definition md2017.hh:36
Implements an USB interface to the TYT MD-390 VHF/UHF 5W DMR (Tier I&II) radio.
Definition md390.hh:32
Implements an USB interface to Open GD-77(S) VHF/UHF 5W DMR (Tier I&II) radios.
Definition opengd77.hh:18
Implements an USB interface to radios running the Open RTX firmware.
Definition openrtx.hh:18
Implements an USB interface to Open UV380 VHF/UHF 5W DMR (Tier I&II) radios.
Definition openuv380.hh:17
Implements an interface to the Baofeng/Radioddity RD-5R VHF/UHF 5W DMR (Tier I/II) radio.
Definition rd5r.hh:37
Provides some information about a radio model.
Definition radioinfo.hh:16
static QHash< unsigned, RadioInfo > _radiosById
ID->Info map.
Definition radioinfo.hh:49
static RadioInfo byID(Radio radio)
Returns the radio info by id.
Definition radioinfo.cc:148
Radio id() const
Returns the unique device ID (alias radios share ID).
Definition radioinfo.cc:131
static QHash< QString, Radio > _radiosByName
Key->ID map.
Definition radioinfo.hh:22
QString _name
Holds the name of the radio.
Definition radioinfo.hh:97
QList< RadioInfo > _alias
Holds possible identical radios from other manufacturers.
Definition radioinfo.hh:101
static QList< RadioInfo > allRadios(bool flat=true)
Returns the list of all known radios.
Definition radioinfo.cc:153
const USBDeviceInfo & interface() const
Returns some information about the interface to the radio.
Definition radioinfo.cc:117
const QString & key() const
Returns the radio key (used to identify radios in the command line).
Definition radioinfo.cc:102
bool isValid() const
Returns true if the info is valid.
Definition radioinfo.cc:97
Radio _radio
Holds the radio id.
Definition radioinfo.hh:93
static RadioInfo byKey(const QString &key)
Returns the radio info by key.
Definition radioinfo.cc:141
QString _manufacturer
Holds the name of the manufacturer.
Definition radioinfo.hh:99
QString _key
Holds the key of the radio.
Definition radioinfo.hh:95
static bool hasRadioKey(const QString &key)
Returns true if the given key is known.
Definition radioinfo.cc:136
bool hasAlias() const
Returns true if the radio has aliases.
Definition radioinfo.cc:122
const QString & manufacturer() const
Returns the manufacturer name.
Definition radioinfo.cc:112
RadioInfo()
Empty constructor.
Definition radioinfo.cc:90
USBDeviceInfo _interface
Holds some information about the interface to the radio.
Definition radioinfo.hh:103
const QList< RadioInfo > & alias() const
Returns the list of alias radios.
Definition radioinfo.cc:126
const QString & name() const
Returns the radio name.
Definition radioinfo.cc:107
Base class for all Radio objects.
Definition radio.hh:32
Generic information about a possible radio interface.
Definition usbdevice.hh:121
Implements an USB interface to the TYT MD-UV390 & Retevis RT3S VHF/UHF 5W DMR (Tier I&II) radios.
Definition uv390.hh:37