1#ifndef DM32UVINTERFACE_HH
2#define DM32UVINTERFACE_HH
23 const char payload[7] = {
'P',
'S',
'E',
'A',
'R',
'C',
'H'};
39 QString identifier()
const;
46 const char payload[7] = {
'P',
'A',
'S',
'S',
'S',
'T',
'A'};
67 const char payload[7] = {
'S',
'Y',
'S',
'I',
'N',
'F',
'O'};
88 FirmwareVersion = 0x1, BuildDate = 0x3, MainConfigMemory = 0xa, CallSignDBMemory = 0xf
91 const char request_type =
'V';
93 const uint8_t unused[3] = {0x00, 0x00, 0x00};
123 uint8_t payload[255];
129 QString string()
const;
131 uint32_t lowerMemoryBound()
const;
133 uint32_t upperMemoryBound()
const;
140 const char payload[12] = {
141 '\xff',
'\xff',
'\xff',
'\xff',
'\x0c',
142 'P',
'R',
'O',
'G',
'R',
'A',
'M'
153 const char payload[1] {
'\x02'};
172 const char payload[1] = {
'\x06'};
182 const char request_type =
'R';
197 const char response_type =
'W';
203 uint8_t _payload[4096];
206 uint32_t address()
const;
208 uint16_t length()
const;
210 QByteArray payload()
const;
220 const char request_type =
'W';
226 uint8_t _payload[4096];
229 WriteRequest(uint32_t address,
const QByteArray &payload);
238 Closed, Open, Connected, SystemInfo, Program, Error
252 void (*progress)(
unsigned int percent)=
nullptr);
266 static QList<USBDeviceDescriptor>
detect(
bool saveOnly=
true);
274 template<
class Request,
class Response>
276 if (! req.send(
this, err))
278 return res.receive(
this, err);
Interface to Baofeng Dm-32UV devices.
Definition dm32uv_interface.hh:16
State _state
Current state, the interface is in.
Definition dm32uv_interface.hh:287
bool getAddressMap(DM32UV::AddressMap &map, const ErrorStack &err=ErrorStack(), void(*progress)(unsigned int percent)=nullptr)
Reads the obfuscation address map from the device.
Definition dm32uv_interface.cc:302
bool receive(char *data, qint64 n, int timeout, const ErrorStack &err=ErrorStack())
Receives some data.
Definition dm32uv_interface.cc:610
static USBDeviceInfo interfaceInfo()
Returns some information about this interface.
Definition dm32uv_interface.cc:463
bool send(const char *data, qint64 n, int timeout, const ErrorStack &err=ErrorStack())
Send some data.
Definition dm32uv_interface.cc:591
RadioInfo identifier(const ErrorStack &err=ErrorStack()) override
Returns the radio info, after identifying the radio.
Definition dm32uv_interface.cc:289
QString _firmwareVersion
Firmware version string.
Definition dm32uv_interface.hh:291
QPair< uint32_t, uint32_t > _callsignMemory
Callsign memory range.
Definition dm32uv_interface.hh:295
bool read_start(uint32_t bank, uint32_t address, const ErrorStack &err=ErrorStack()) override
Starts the read process from the specified bank and at the given address.
Definition dm32uv_interface.cc:343
RadioInfo _info
Radio info, identifying the radio.
Definition dm32uv_interface.hh:289
bool read_finish(const ErrorStack &err=ErrorStack()) override
This function ends a series of read operations.
Definition dm32uv_interface.cc:396
State
Possible states, the interface might be in.
Definition dm32uv_interface.hh:237
bool enter_program_mode(const ErrorStack &err=ErrorStack())
Enters program mode.
Definition dm32uv_interface.cc:559
bool write_finish(const ErrorStack &err=ErrorStack()) override
This function ends a series of write operations.
Definition dm32uv_interface.cc:455
bool write_start(uint32_t bank, uint32_t address, const ErrorStack &err=ErrorStack()) override
Starts the write process into the specified bank and at the given address.
Definition dm32uv_interface.cc:404
bool sendReceive(const Request &req, Response &res, const ErrorStack &err=ErrorStack())
Helper function to send a request and receives the associated response.
Definition dm32uv_interface.hh:275
bool write(uint32_t bank, uint32_t address, uint8_t *data, int nbytes, const ErrorStack &err=ErrorStack()) override
Writes a chunk of data at the address addr.
Definition dm32uv_interface.cc:420
QPair< uint32_t, uint32_t > _codeplugMemory
Codeplug memory range.
Definition dm32uv_interface.hh:293
bool read(uint32_t bank, uint32_t address, uint8_t *data, int nbytes, const ErrorStack &err=ErrorStack()) override
Reads a chunk of data from the block-address bno (block number).
Definition dm32uv_interface.cc:359
Implements a memory map between physical and virtual codeplug addresses.
Definition dm32uv.hh:26
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
Base class for all radio interface descriptors representing a unique interface to a connected radio.
Definition usbdevice.hh:197
Generic information about a possible radio interface.
Definition usbdevice.hh:121
Implements a serial connection to a radio via USB.
Definition usbserial.hh:16
static QList< USBDeviceDescriptor > detect()
Searches for all USB serial ports.
Definition usbserial.cc:133
System info response.
Definition dm32uv_interface.hh:74
uint8_t result
Response result code.
Definition dm32uv_interface.hh:76
Device detection request.
Definition dm32uv_interface.hh:21
Device detection response.
Definition dm32uv_interface.hh:30
uint8_t result
Result flag.
Definition dm32uv_interface.hh:32
Enter program mode request.
Definition dm32uv_interface.hh:138
Password request.
Definition dm32uv_interface.hh:44
Passwort response.
Definition dm32uv_interface.hh:53
uint16_t code
Some unknown data.
Definition dm32uv_interface.hh:57
uint8_t result
Response result code.
Definition dm32uv_interface.hh:55
Ping request.
Definition dm32uv_interface.hh:170
Read request.
Definition dm32uv_interface.hh:180
uint16_t length
16bit little endian length.
Definition dm32uv_interface.hh:186
Read response.
Definition dm32uv_interface.hh:195
uint16_t _length
16bit payload length.
Definition dm32uv_interface.hh:201
System info request.
Definition dm32uv_interface.hh:65
Unkown 02h request.
Definition dm32uv_interface.hh:151
Unknown 02h response.
Definition dm32uv_interface.hh:160
Value request.
Definition dm32uv_interface.hh:85
uint8_t valueId
The value ID to read.
Definition dm32uv_interface.hh:95
ValueId
Some possible value IDs.
Definition dm32uv_interface.hh:87
Value response.
Definition dm32uv_interface.hh:107
uint8_t length
THe length of the payload.
Definition dm32uv_interface.hh:113
uint32_t lower
Lower bound in little endian.
Definition dm32uv_interface.hh:118
char response_type
The received response code, should be 'V'.
Definition dm32uv_interface.hh:109
uint8_t valueId
The value ID read.
Definition dm32uv_interface.hh:111
uint32_t upper
Upper bound (inclusive) in little endian.
Definition dm32uv_interface.hh:120
Write request.
Definition dm32uv_interface.hh:218
uint16_t _length
Encodes the 16bit length in little endian.
Definition dm32uv_interface.hh:224