libdrmconf 0.14.1
A library to program DMR radios.
Loading...
Searching...
No Matches
dm32uv.hh
1
3#ifndef DM32UV_HH
4#define DM32UV_HH
5
6#include "radio.hh"
7#include "dm32uv_codeplug.hh"
8#include "dm32uv_callsigndb.hh"
9#include <QObject>
10#include <QHash>
11
12// Forward declaration
13class DM32UVInterface;
14
15
18class DM32UV : public Radio
19{
20 Q_OBJECT
21
22public:
26 class AddressMap {
27 public:
29 AddressMap();
31 AddressMap(const AddressMap &other) = default;
32
34 void map(uint32_t phys, uint32_t virt);
35
37 bool virtualIsMapped(uint32_t virt) const;
39 bool physicalIsMapped(uint32_t virt) const;
40
44 uint32_t toVirtual(uint32_t phys) const;
48 uint32_t toPhysical(uint32_t virt) const;
49
51 inline QList<uint32_t> mappedPhysical() const {
52 QList<uint32_t> addrs;
53 for (auto prefix: _toVirtual.keys())
54 addrs.append(prefix<<12);
55 return addrs;
56 }
57
59 inline QList<uint32_t> mappedVirtual() const {
60 QList<uint32_t> addrs;
61 for (auto prefix: _toPhysical.keys())
62 addrs.append(prefix<<12);
63 return addrs;
64 }
65
66 protected:
69 QMap<uint32_t, uint32_t> _toVirtual;
72 QMap<uint32_t, uint32_t> _toPhysical;
73 };
74
75public:
77 explicit DM32UV(DM32UVInterface *device=nullptr, QObject *parent=nullptr);
78
82
83 const QString &name() const override;
84
85 const RadioLimits &limits() const override;
86
87 const Codeplug &codeplug() const override;
88 Codeplug &codeplug() override;
89
90 bool startDownload(const TransferFlags &flags, const ErrorStack &err=ErrorStack()) override;
91 bool startUpload(Config *config, const Codeplug::Flags &flags, const ErrorStack &err) override;
92 bool startUploadCallsignDB(UserDatabase *db, const CallsignDB::Flags &selection, const ErrorStack &err) override;
93 bool startUploadSatelliteConfig(SatelliteDatabase *db, const TransferFlags &flags, const ErrorStack &err) override;
94
95
96public:
98 struct Offset {
100 static constexpr uint32_t blockSize() { return 0x1000; }
101 };
102
103private:
104 virtual bool download(const ErrorStack &err=ErrorStack());
105 virtual bool upload(const ErrorStack &err=ErrorStack());
106 virtual bool uploadCallsigns(const ErrorStack &err=ErrorStack());
107
108protected:
110 void run() override;
111
112protected:
116 QString _radioName;
127
128
129private:
131 static RadioLimits *_limits;
132};
133
134
135#endif // DM32UV_HH
Controls the selection of callsigns from the UserDatabase to be encoded into the callsign db.
Definition callsigndb.hh:22
Certain flags passed to CodePlug::encode to control the transfer and encoding of the codeplug.
Definition codeplug.hh:24
This class defines the interface all device-specific code-plugs must implement.
Definition codeplug.hh:18
The config class, representing the codeplug configuration.
Definition config.hh:70
Implements the call-sign DB for the DM32UV.
Definition dm32uv_callsigndb.hh:12
Implementation of the binary codeplug for the Baofeng DM32UV.
Definition dm32uv_codeplug.hh:26
Interface to Baofeng Dm-32UV devices.
Definition dm32uv_interface.hh:16
QMap< uint32_t, uint32_t > _toPhysical
Holds only the prefix address mapping from virtual to physical addresses.
Definition dm32uv.hh:72
bool physicalIsMapped(uint32_t virt) const
Returns true, if the physical address is mapped.
Definition dm32uv.cc:29
QList< uint32_t > mappedPhysical() const
Returns the map from physical to virtual addresses, sorted by physical addresses.
Definition dm32uv.hh:51
bool virtualIsMapped(uint32_t virt) const
Returns true, if the virtual address is mapped.
Definition dm32uv.cc:24
AddressMap(const AddressMap &other)=default
Default copy constructor.
AddressMap()
Default constructor.
Definition dm32uv.cc:10
void map(uint32_t phys, uint32_t virt)
Adds an address mapping.
Definition dm32uv.cc:17
QMap< uint32_t, uint32_t > _toVirtual
Holds only the prefix address mapping from physical to virtual addresses.
Definition dm32uv.hh:69
uint32_t toPhysical(uint32_t virt) const
Maps the given virtual codeplug address to a physical memory address.
Definition dm32uv.cc:34
uint32_t toVirtual(uint32_t phys) const
Maps the given physical address to a virtual codeplug address.
Definition dm32uv.cc:42
QList< uint32_t > mappedVirtual() const
Returns the map from virtual to physical addresses, sorted by virtual addresses.
Definition dm32uv.hh:59
void run() override
Thread main routine, performs all blocking IO operations for codeplug up- and download.
Definition dm32uv.cc:171
Config * _config
The generic configuration.
Definition dm32uv.hh:124
DM32UVInterface * _dev
The interface to the radio.
Definition dm32uv.hh:114
bool startUpload(Config *config, const Codeplug::Flags &flags, const ErrorStack &err) override
Derives the device-specific codeplug from the generic configuration and uploads that codeplug to the ...
Definition dm32uv.cc:115
QString _radioName
The name of the device.
Definition dm32uv.hh:116
UserDatabase * _userDB
A weak reference to the user-database.
Definition dm32uv.hh:126
static RadioInfo defaultRadioInfo()
Returns the default radio information.
Definition dm32uv.cc:63
bool startDownload(const TransferFlags &flags, const ErrorStack &err=ErrorStack()) override
Starts the download of the codeplug.
Definition dm32uv.cc:92
const RadioLimits & limits() const override
Returns the limits for this radio.
Definition dm32uv.cc:74
const QString & name() const override
Returns the name of the radio (e.g., device identifier).
Definition dm32uv.cc:69
bool startUploadCallsignDB(UserDatabase *db, const CallsignDB::Flags &selection, const ErrorStack &err) override
Assembles the callsign DB from the given one and uploads it to the device.
Definition dm32uv.cc:140
const Codeplug & codeplug() const override
Returns the codeplug instance.
Definition dm32uv.cc:81
DM32UV(DM32UVInterface *device=nullptr, QObject *parent=nullptr)
Default constructor.
Definition dm32uv.cc:56
Codeplug::Flags _codeplugFlags
Holds the flags to control assembly and upload of code-plugs.
Definition dm32uv.hh:118
DM32UVCallsignDB _callsigns
Encoded call-sign db.
Definition dm32uv.hh:122
bool startUploadSatelliteConfig(SatelliteDatabase *db, const TransferFlags &flags, const ErrorStack &err) override
Assembles the satellite config and writes it to the device.
Definition dm32uv.cc:161
DM32UVCodeplug _codeplug
Encoded / read codeplug.
Definition dm32uv.hh:120
Implements a stack of error messages to provide a pretty formatted error traceback.
Definition errorstack.hh:43
Provides some information about a radio model.
Definition radioinfo.hh:16
Represents the limits or the entire codeplug.
Definition radiolimits.hh:755
Radio(QObject *parent=nullptr)
Default constructor.
Definition radio.cc:35
A table holding all known satellites.
Definition satellitedatabase.hh:108
Controls the transfer of codeplugs, callsign DBs etc to the device.
Definition transferflags.hh:7
Auto-updating DMR user database.
Definition userdatabase.hh:24
Some constants.
Definition dm32uv.hh:98
static constexpr uint32_t blockSize()
Size for each codeplug block.
Definition dm32uv.hh:100