1#ifndef ANYTONEINTERFACE_HH
2#define ANYTONEINTERFACE_HH
90 bool check(uint32_t
addr, QString &msg)
const;
158 static QList<USBDeviceDescriptor>
detect(
bool saveOnly=
true);
186 static QList<USBDeviceDescriptor>
detect(
bool saveOnly=
true);
AnytoneGD32Interface(const USBDeviceDescriptor &descriptor, const ErrorStack &err=ErrorStack(), QObject *parent=nullptr)
Constructs a new interface to Anytone radios.
Definition anytone_interface.cc:373
static USBDeviceInfo interfaceInfo()
Returns some information about this interface.
Definition anytone_interface.cc:407
RadioInfo identifier(const ErrorStack &err=ErrorStack())
Returns an identifier of the radio.
Definition anytone_interface.cc:381
bool leave_program_mode(const ErrorStack &err=ErrorStack())
Sends a command message to radio to leave program state and reboot.
Definition anytone_interface.cc:312
void close()
Closes the interface to the device.
Definition anytone_interface.cc:117
bool read(uint32_t bank, uint32_t addr, uint8_t *data, int nbytes, const ErrorStack &err=ErrorStack())
Reads a chunk of data from the block-address bno (block number).
Definition anytone_interface.cc:200
bool write_start(uint32_t bank, uint32_t addr, const ErrorStack &err=ErrorStack())
Starts the write process into the specified bank and at the given address.
Definition anytone_interface.cc:142
bool write(uint32_t bank, uint32_t addr, uint8_t *data, int nbytes, const ErrorStack &err=ErrorStack())
Writes a chunk of data at the address addr.
Definition anytone_interface.cc:152
State _state
Holds the state of the interface.
Definition anytone_interface.hh:128
bool read_finish(const ErrorStack &err=ErrorStack())
This function ends a series of read operations.
Definition anytone_interface.cc:233
bool enter_program_mode(const ErrorStack &err=ErrorStack())
Send command message to radio to ender program state.
Definition anytone_interface.cc:253
State
Possible states of the radio interface.
Definition anytone_interface.hh:118
@ STATE_CLOSED
Interface to radio is closed (captive final state).
Definition anytone_interface.hh:122
@ STATE_ERROR
An error occurred (captive final state), use errorMessage() to get an error message.
Definition anytone_interface.hh:123
@ STATE_OPEN
Interface to radio is open.
Definition anytone_interface.hh:120
@ STATE_PROGRAM
Radio is in program mode.
Definition anytone_interface.hh:121
@ STATE_INITIALIZED
Initial state.
Definition anytone_interface.hh:119
AnytoneInterface(const USBDeviceDescriptor &descriptor, const ErrorStack &err=ErrorStack(), QObject *parent=nullptr)
Constructs a new interface to Anytone radios.
Definition anytone_interface.cc:90
bool reboot(const ErrorStack &err=ErrorStack())
Some radios need to be rebooted after being read or programmed.
Definition anytone_interface.cc:239
virtual ~AnytoneInterface()
Destructor.
Definition anytone_interface.cc:110
bool read_start(uint32_t bank, uint32_t addr, const ErrorStack &err=ErrorStack())
Starts the read process from the specified bank and at the given address.
Definition anytone_interface.cc:190
bool send_receive(const char *cmd, int clen, char *resp, int rlen, const ErrorStack &err=ErrorStack())
Internal used method to send messages to and receive responses from radio.
Definition anytone_interface.cc:333
RadioVariant _info
Holds the radio info.
Definition anytone_interface.hh:130
bool getInfo(RadioVariant &info)
Reads the radio info from the device and returns it.
Definition anytone_interface.cc:133
bool request_identifier(RadioVariant &info, const ErrorStack &err=ErrorStack())
Sends a request to radio to identify itself.
Definition anytone_interface.cc:284
bool write_finish(const ErrorStack &err=ErrorStack())
This function ends a series of write operations.
Definition anytone_interface.cc:184
RadioInfo identifier(const ErrorStack &err=ErrorStack())
Returns an identifier of the radio.
Definition anytone_interface.cc:429
static USBDeviceInfo interfaceInfo()
Returns some information about this interface.
Definition anytone_interface.cc:445
AnytoneSTM32Interface(const USBDeviceDescriptor &descriptor, const ErrorStack &err=ErrorStack(), QObject *parent=nullptr)
Constructs a new interface to Anytone radios.
Definition anytone_interface.cc:422
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
USBSerial(const USBDeviceDescriptor &descriptor, QSerialPort::BaudRate rate=QSerialPort::Baud115200, const ErrorStack &err=ErrorStack(), QObject *parent=nullptr)
Constructs an opens new serial interface to the devices identified by the given vendor and product ID...
Definition usbserial.cc:19
static QList< USBDeviceDescriptor > detect()
Searches for all USB serial ports.
Definition usbserial.cc:133
Structure of radio information response.
Definition anytone_interface.hh:109
char version[6]
Version number. Either hardware or 'radio' version.
Definition anytone_interface.hh:113
uint8_t eot
Fixed 0x06 on success.
Definition anytone_interface.hh:114
char model[7]
Model name.
Definition anytone_interface.hh:111
uint8_t bands
Frequency bands supported by radio.
Definition anytone_interface.hh:112
char prefix
Fixed prefix. Set to 'I' on success.
Definition anytone_interface.hh:110
Collects information about the particular radio being accessed.
Definition anytone_interface.hh:20
char bands
A code for which bands are supported.
Definition anytone_interface.hh:24
RadioVariant()
Empty constructor.
Definition anytone_interface.cc:75
bool isValid() const
Returns true if the radio info is valid.
Definition anytone_interface.cc:82
QString version
The (firmware/hardware) version.
Definition anytone_interface.hh:26
QString name
The name of the radio.
Definition anytone_interface.hh:22
ReadRequest(uint32_t addr)
Constructs a read request for the specified address.
Definition anytone_interface.cc:13
uint8_t size
Fixed to 16.
Definition anytone_interface.hh:74
char cmd
Fixed to 'R'.
Definition anytone_interface.hh:72
uint32_t addr
Memory address in little-endian.
Definition anytone_interface.hh:73
Binary representation of a read response from the radio.
Definition anytone_interface.hh:80
bool check(uint32_t addr, QString &msg) const
Check the response, returns true if read request was successful.
Definition anytone_interface.cc:23
char cmd
Fixed to 'W'.
Definition anytone_interface.hh:81
uint8_t ack
Fixed to 0x06.
Definition anytone_interface.hh:86
uint8_t sum
Sum over address, size and data.
Definition anytone_interface.hh:85
char data[16]
The actual data.
Definition anytone_interface.hh:84
uint8_t size
Fixed to 16.
Definition anytone_interface.hh:83
uint32_t addr
Memory address in big-endian.
Definition anytone_interface.hh:82
uint8_t size
Fixed to 16.
Definition anytone_interface.hh:97
char data[16]
The actual data.
Definition anytone_interface.hh:98
uint32_t addr
Memory address in big-endian.
Definition anytone_interface.hh:96
uint8_t ack
Fixed to 0x06;.
Definition anytone_interface.hh:100
uint8_t sum
Sum over addr, size and data.
Definition anytone_interface.hh:99
char cmd
Fixed to 'W'.
Definition anytone_interface.hh:95
WriteRequest(uint32_t addr, const char *data)
Assembles a write request message to the given address with the given data.
Definition anytone_interface.cc:59