libdrmconf  0.11.3
A library to program DMR radios.
Classes | Public Member Functions | List of all members
GD77CallsignDB Class Reference

Represents and encodes the binary format for the call-sign database within the radio. More...

#include <gd77_callsigndb.hh>

Inheritance diagram for GD77CallsignDB:
Inheritance graph
[legend]
Collaboration diagram for GD77CallsignDB:
Collaboration graph
[legend]

Classes

struct  userdb_entry_t
 Represents a user-db entry within the binary codeplug. More...
 
struct  userdb_t
 Represents the binary call-sign database header. More...
 

Public Member Functions

 GD77CallsignDB (QObject *parent=nullptr)
 Constructor.
 
virtual ~GD77CallsignDB ()
 Destructor.
 
virtual bool encode (UserDatabase *calldb, const Selection &selection=Selection(), const ErrorStack &err=ErrorStack())
 Encodes as many entries as possible of the given user-database.
 
- Public Member Functions inherited from CallsignDB
virtual ~CallsignDB ()
 Destructor.
 
- Public Member Functions inherited from DFUFile
 DFUFile (QObject *parent=nullptr)
 Constructs an empty DFU file object.
 
uint32_t size () const
 Returns the total size of the DFU file.
 
uint32_t memSize () const
 Returns the total memory size stored in the DFU file.
 
int numImages () const
 Returns the number of images within the DFU file.
 
const Imageimage (int i) const
 Returns a reference to the i-th image of the file.
 
Imageimage (int i)
 Returns a reference to the i-th image of the file.
 
void addImage (const QString &name, uint8_t altSettings=1)
 Adds a new image to the file.
 
void addImage (const Image &img)
 Adds an image to the file.
 
void remImage (int i)
 Deletes the i-th image from the file.
 
bool isAligned (unsigned blocksize) const
 Checks if all image addresses and sizes is aligned with the given block size.
 
bool read (const QString &filename, const ErrorStack &err=ErrorStack())
 Reads the specified DFU file. More...
 
bool read (QFile &file, const ErrorStack &err=ErrorStack())
 Reads the specified DFU file. More...
 
bool write (const QString &filename, const ErrorStack &err=ErrorStack())
 Writes to the specified file. More...
 
bool write (QFile &file, const ErrorStack &err=ErrorStack())
 Writes to the specified file. More...
 
void dump (QTextStream &stream) const
 Dumps a text representation of the DFU file structure to the specified text stream.
 
virtual bool isAllocated (uint32_t offset, uint32_t img=0) const
 Returns true if the specified address (and image) is allocated.
 
virtual unsigned char * data (uint32_t offset, uint32_t img=0)
 Returns a pointer to the encoded raw data at the specified offset.
 
virtual const unsigned char * data (uint32_t offset, uint32_t img=0) const
 Returns a const pointer to the encoded raw data at the specified offset.
 

Additional Inherited Members

- Protected Member Functions inherited from CallsignDB
 CallsignDB (QObject *parent=nullptr)
 Hidden constructor.
 
- Protected Attributes inherited from DFUFile
QVector< Image_images
 The list of images.
 

Detailed Description

Represents and encodes the binary format for the call-sign database within the radio.

The call-sign DB gets stored at a separate memory bank (no. 3) at address 0x0000. The encoded DB consists of the DB header followed by the DB entries. The number of entries is limited to 10920 leading to a max DB size of 0x20000 bytes. These 0x20000 bytes are organized into two banks bank 3 contains 0x00000-0x0ffff and bank 4 contains 0x10000-0x1ffff.

The header is encoded as:

0                               8
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ ... +
|'I' 'D' '-' 'V' '0' '0' '1'  0 | # entries, LE | Entries     ... |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ ... +

The number of DB entries is encoded as a 32bit little-endian integer.

Each DB entry is encoded as:

0                               8
+---+---+---+---+---+---+---+---+---+---+---+---+
| DMR ID, 8xBCD | Name, 8xASCII, 0-terminated   |
+---+---+---+---+---+---+---+---+---+---+---+---+

The DMR ID gets encoded a 8 BCD digits in little endian while the name is encoded as up-to 8 ASCII bytes 0-terminated and padded.


The documentation for this class was generated from the following files: