libdrmconf
0.12.0
A library to program DMR radios.
|
Represents the device specific binary codeplug for Anytone AT-D578UV radios. More...
#include <d578uv_codeplug.hh>
Classes | |
class | AirBandBitmapElement |
Represents the bitmap indicating which channels are valid and which are included in the air-band scan. More... | |
class | AirBandChannelElement |
Implements the air-band receiver channel. More... | |
class | ChannelElement |
Represents the actual channel encoded within the binary code-plug. More... | |
class | GeneralSettingsElement |
Represents the general config of the radio within the D578UV binary codeplug. More... | |
class | HotKeySettingsElement |
Represents the hot-key settings of the radio within the D578UV binary codeplug. More... | |
struct | Limit |
Some limtis for the codeplug. More... | |
struct | Offset |
Internal used offsets within the codeplug. More... | |
Public Member Functions | |
D578UVCodeplug (QObject *parent=nullptr) | |
Empty constructor. | |
Public Member Functions inherited from D878UVCodeplug | |
D878UVCodeplug (QObject *parent=nullptr) | |
Empty constructor. | |
Public Member Functions inherited from D868UVCodeplug | |
D868UVCodeplug (QObject *parent=nullptr) | |
Empty constructor. | |
Public Member Functions inherited from AnytoneCodeplug | |
virtual | ~AnytoneCodeplug () |
Destructor. | |
virtual void | clear () |
Clears and resets the complete codeplug to some default values. | |
Config * | preprocess (Config *config, const ErrorStack &err) const |
Retruns a prepared configuration for this particular radio. More... | |
bool | encode (Config *config, const Flags &flags, const ErrorStack &err) |
Encodes a given abstract configuration (config ) to the device specific binary code-plug. More... | |
bool | decode (Config *config, const ErrorStack &err) |
Decodes a binary codeplug to the given abstract configuration config . More... | |
bool | postprocess (Config *config, const ErrorStack &err) const |
Retruns a post-processed configuration of the decoded config. More... | |
Public Member Functions inherited from Codeplug | |
virtual | ~Codeplug () |
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 Image & | image (int i) const |
Returns a reference to the i-th image of the file. | |
Image & | image (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. | |
Protected Member Functions | |
D578UVCodeplug (const QString &label, QObject *parent=nullptr) | |
Hidden constructor. | |
bool | allocateBitmaps () |
Allocates the bitmaps. More... | |
void | allocateUpdated () |
Allocate all code-plug elements that must be written back to the device to maintain a working codeplug. More... | |
void | allocateHotKeySettings () |
Allocates hot key settings memory section. | |
bool | encodeChannels (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encode channels into codeplug. | |
bool | createChannels (Context &ctx, const ErrorStack &err=ErrorStack()) |
Create channels from codeplug. | |
bool | linkChannels (Context &ctx, const ErrorStack &err=ErrorStack()) |
Link channels. | |
void | allocateContacts () |
Allocate contacts from bitmaps. | |
bool | encodeContacts (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encode contacts into codeplug. | |
void | allocateGeneralSettings () |
Allocates general settings memory section. | |
bool | encodeGeneralSettings (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encodes the general settings section. | |
bool | decodeGeneralSettings (Context &ctx, const ErrorStack &err=ErrorStack()) |
Decodes the general settings section. | |
bool | linkGeneralSettings (Context &ctx, const ErrorStack &err=ErrorStack()) |
Link the general settings. | |
virtual void | allocateAirBand () |
Allocates the air-band channels und VFO settings. | |
Protected Member Functions inherited from D878UVCodeplug | |
D878UVCodeplug (const QString &label, QObject *parent=nullptr) | |
Hidden constructor. | |
bool | allocateBitmaps () |
Allocates the bitmaps. More... | |
void | setBitmaps (Context &ctx) |
Sets all bitmaps for the given config. | |
void | allocateForDecoding () |
Allocate all code-plug elements that must be downloaded for decoding. More... | |
void | allocateUpdated () |
Allocate all code-plug elements that must be written back to the device to maintain a working codeplug. More... | |
void | allocateForEncoding () |
Allocate all code-plug elements that are defined through the common Config. | |
bool | decodeElements (Context &ctx, const ErrorStack &err=ErrorStack()) |
Decodes the downloaded codeplug. | |
bool | encodeElements (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encodes the given config (via context) to the binary codeplug. | |
void | allocateChannels () |
Allocate channels from bitmap. | |
bool | encodeChannels (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encode channels into codeplug. | |
bool | createChannels (Context &ctx, const ErrorStack &err=ErrorStack()) |
Create channels from codeplug. | |
bool | linkChannels (Context &ctx, const ErrorStack &err=ErrorStack()) |
Link channels. | |
virtual void | allocateZones () |
Allocate zones from bitmaps. | |
virtual bool | encodeZone (int i, Zone *zone, const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Function to encode a single zone. | |
virtual bool | decodeZone (int i, Zone *zone, Context &ctx, const ErrorStack &err=ErrorStack()) |
Function to decode a single zone. | |
void | allocateGeneralSettings () |
Allocates general settings memory section. | |
bool | encodeGeneralSettings (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encodes the general settings section. | |
bool | decodeGeneralSettings (Context &ctx, const ErrorStack &err=ErrorStack()) |
Decodes the general settings section. | |
bool | linkGeneralSettings (Context &ctx, const ErrorStack &err=ErrorStack()) |
Link the general settings. | |
void | allocateGPSSystems () |
Allocates GPS settings memory section. | |
bool | encodeGPSSystems (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encodes the GPS settings section. | |
bool | createGPSSystems (Context &ctx, const ErrorStack &err=ErrorStack()) |
Create GPS systems from codeplug. | |
bool | linkGPSSystems (Context &ctx, const ErrorStack &err=ErrorStack()) |
Link GPS systems. | |
virtual void | allocateRoaming () |
Allocates memory to store all roaming channels and zones. | |
virtual bool | encodeRoaming (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encodes the roaming channels and zones. | |
virtual bool | createRoaming (Context &ctx, const ErrorStack &err=ErrorStack()) |
Creates roaming channels and zones from codeplug. | |
virtual bool | linkRoaming (Context &ctx, const ErrorStack &err=ErrorStack()) |
Links roaming channels and zones. | |
Protected Member Functions inherited from D868UVCodeplug | |
D868UVCodeplug (const QString &label, QObject *parent=nullptr) | |
Hidden constructor constructor. | |
virtual void | allocateVFOSettings () |
Allocate VFO settings. | |
virtual bool | createContacts (Context &ctx, const ErrorStack &err=ErrorStack()) |
Create contacts from codeplug. | |
virtual void | allocateAnalogContacts () |
Allocate analog contacts from bitmaps. | |
virtual bool | encodeAnalogContacts (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encode analog contacts into codeplug. | |
virtual bool | createAnalogContacts (Context &ctx, const ErrorStack &err=ErrorStack()) |
Create analog contacts from codeplug. | |
virtual void | allocateRadioIDs () |
Allocate radio IDs from bitmaps. | |
virtual bool | encodeRadioID (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encode radio ID into codeplug. | |
virtual bool | setRadioID (Context &ctx, const ErrorStack &err=ErrorStack()) |
Set radio ID from codeplug. | |
virtual void | allocateRXGroupLists () |
Allocates RX group lists from bitmaps. | |
virtual bool | encodeRXGroupLists (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encode RX group lists into codeplug. | |
virtual bool | createRXGroupLists (Context &ctx, const ErrorStack &err=ErrorStack()) |
Create RX group lists from codeplug. | |
virtual bool | linkRXGroupLists (Context &ctx, const ErrorStack &err=ErrorStack()) |
Link RX group lists. | |
virtual bool | encodeZones (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encode zones into codeplug. | |
virtual bool | createZones (Context &ctx, const ErrorStack &err=ErrorStack()) |
Create zones from codeplug. | |
virtual bool | linkZones (Context &ctx, const ErrorStack &err=ErrorStack()) |
Link zones. | |
virtual bool | linkZone (int i, Zone *zone, bool isB, Context &ctx, const ErrorStack &err=ErrorStack()) |
Function to link a single zone. | |
virtual void | allocateScanLists () |
Allocate scanlists from bitmaps. | |
virtual bool | encodeScanLists (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encode scan lists into codeplug. | |
virtual bool | createScanLists (Context &ctx, const ErrorStack &err=ErrorStack()) |
Create scan lists from codeplug. | |
virtual bool | linkScanLists (Context &ctx, const ErrorStack &err=ErrorStack()) |
Link scan lists. | |
virtual void | allocateZoneChannelList () |
Allocates zone channel list memory section. | |
virtual void | allocateDTMFNumbers () |
Allocates DTMF number list memory section. | |
virtual void | allocateBootSettings () |
Allocates boot settings memory section. | |
virtual bool | encodeBootSettings (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encodes the boot settings section. | |
virtual bool | decodeBootSettings (Context &ctx, const ErrorStack &err=ErrorStack()) |
Decodes the boot settings section. | |
virtual void | allocateSMSMessages () |
Allocate prefab SMS messages. | |
virtual bool | encodeSMSMessages (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encodes prefab SMS messages. | |
virtual bool | createSMSMessages (Context &ctx, const ErrorStack &err=ErrorStack()) |
Create SMS messages from codeplug. | |
virtual bool | linkSMSMessages (Context &ctx, const ErrorStack &err=ErrorStack()) |
Link SMS messages. | |
virtual void | allocateRepeaterOffsetFrequencies () |
Allocates repeater offset settings memory section. | |
virtual bool | encodeRepeaterOffsetFrequencies (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) |
Encodes auto-repeater offset frequencies. | |
virtual bool | decodeRepeaterOffsetFrequencies (Context &ctx, const ErrorStack &err=ErrorStack()) |
Decodes auto-repeater offset frequencies. | |
virtual void | allocateAlarmSettings () |
Allocates alarm settings memory section. | |
virtual void | allocateFMBroadcastSettings () |
Allocates FM broadcast settings memory section. | |
virtual void | allocate5ToneIDs () |
Allocates all 5-Tone IDs used. | |
virtual void | allocate5ToneFunctions () |
Allocates 5-Tone functions. | |
virtual void | allocate5ToneSettings () |
Allocates 5-Tone settings. | |
virtual void | allocate2ToneIDs () |
Allocates all 2-Tone IDs used. | |
virtual void | allocate2ToneFunctions () |
Allocates 2-Tone functions. | |
virtual void | allocate2ToneSettings () |
Allocates 2-Tone settings. | |
virtual void | allocateDTMFSettings () |
Allocates DTMF settings. | |
Protected Member Functions inherited from AnytoneCodeplug | |
AnytoneCodeplug (const QString &label, QObject *parent=nullptr) | |
Hidden constructor. | |
virtual bool | index (Config *config, Context &ctx, const ErrorStack &err=ErrorStack()) const |
Indexes all elements of the codeplug. More... | |
Protected Member Functions inherited from Codeplug | |
Codeplug (QObject *parent=nullptr) | |
Hidden default constructor. | |
Additional Inherited Members | |
Protected Attributes inherited from AnytoneCodeplug | |
QString | _label |
Holds the image label. | |
Protected Attributes inherited from DFUFile | |
QVector< Image > | _images |
The list of images. | |
Represents the device specific binary codeplug for Anytone AT-D578UV radios.
Fits firmware/CPS version 1.17.
Channels | ||
---|---|---|
Start | Size | Content |
024C1500 | 000200 | Bitmap of 4000 channels, default 0x00, 0x00 padded. |
00800000 | max. 002000 | Channel bank 0 of up to 128 channels, see D578UVCodeplug::ChannelElement 64 b each. |
00802000 | max, 002000 | Unknown data, Maybe extended channel information for channel bank 0? It is of exactly the same size as the channel bank 0. Mostly 0x00, a few 0xff. |
00840000 | max. 002000 | Channel bank 1 of up to 128 channels. |
00842000 | max. 002000 | Unknown data, related to CH bank 1? |
... | ... | ... |
00FC0000 | max. 000800 | Channel bank 32, up to 32 channels. |
00FC2000 | max. 000800 | Unknown data, related to CH bank 32. |
00FC0800 | 000040 | VFO A settings, see D578UVCodeplug::ChannelElement . |
00FC0840 | 000040 | VFO B settings, see D578UVCodeplug::ChannelElement . |
00FC2800 | 000080 | Unknown data, related to VFO A+B? It is of exactly the same size as the two VFO channels. Mostly 0x00, a few 0xff. Same pattern as the unknown data associated with channel banks. |
Zones | ||
Start | Size | Content |
024C1300 | 000020 | Bitmap of 250 zones. |
024C1360 | 000020 | Hidden zone bitmap of 250 zones. |
01000000 | max. 01f400 | 250 zones channel lists of 250 16bit indices each. 0-based, little endian, default/padded=0xffff. Offset between channel lists 0x200, size of each list 0x1f4. |
02540000 | max. 001f40 | 250 Zone names. Each zone name is up to 16 ASCII chars long and gets 0-padded to 32b. |
Roaming | ||
Start | Size | Content |
01042000 | 000020 | Roaming channel bitmask, up to 250 bits, 0-padded, default 0. |
01040000 | max. 0x1f40 | Optional up to 250 roaming channels, of 32b each. See D878UVCodeplug::RoamingChannelElement for details. |
01042080 | 000010 | Roaming zone bitmask, up to 64 bits, 0-padded, default 0. |
01043000 | max. 0x2000 | Optional up to 64 roaming zones, of 128b each. See |
Contacts | ||
Start | Size | Content |
02600000 | max. 009C40 | Index list of valid contacts. 10000 32bit indices, little endian, default 0xffffffff |
02640000 | 000500 | Contact bitmap, 10000 bit, inverted, default 0xff, 0x00 padded. |
02680000 | max. 0f4240 | 10000 contacts, see D868UVCodeplug::ContactElement . As each contact is 100b, they do not align with the 16b blocks being transferred to the device. Hence contacts are organized internally in groups of 4 contacts forming a "bank". |
04800000 | max. 013880 | DMR ID to contact index map, see |
Analog Contacts | ||
Start | Size | Content |
02900000 | 000080 | Index list of valid analog contacts. |
02900100 | 000080 | Bytemap for 128 analog contacts. |
02940000 | max. 000180 | 128 analog contacts. See |
RX Group Lists | ||
Start | Size | Content |
025C0B10 | 000020 | Bitmap of 250 RX group lists, default/padding 0x00. |
02980000 | max. 000120 | Grouplist 0, see AnytoneCodeplug::GroupListElement . |
02980200 | max. 000120 | Grouplist 1 |
... | ... | ... |
0299f200 | max. 000120 | Grouplist 250 |
Scan lists | ||
Start | Size | Content |
024C1340 | 000020 | Bitmap of 250 scan lists. |
01080000 | 000090 | Bank 0, Scanlist 1, see AnytoneCodeplug::ScanListElement . |
01080200 | 000090 | Bank 0, Scanlist 2 |
... | ... | ... |
01081E00 | 000090 | Bank 0, Scanlist 16 |
010C0000 | 000090 | Bank 1, Scanlist 17 |
... | ... | ... |
01440000 | 000090 | Bank 15, Scanlist 241 |
... | ... | ... |
01441400 | 000090 | Bank 15, Scanlist 250 |
Radio IDs | ||
Start | Size | Content |
024C1320 | 000020 | Bitmap of 250 radio IDs. |
02580000 | max. 001f40 | 250 Radio IDs. See |
GPS/APRS | ||
Start | Size | Content |
02501000 | 000100 | APRS settings, see D878UVCodeplug::APRSSettingsElement . |
02501200 | 000040 | APRS Text, up to 60 chars ASCII, 0-padded. |
02501800 | 000100 | APRS-RX settings list up to 32 entries, 8b each. See D878UVCodeplug::AnalogAPRSRXEntryElement . |
02502000 | 000080 | FM APRS frequency names, see |
General Settings | ||
Start | Size | Content |
02500000 | 0000f0 | General settings, see D578UVCodeplug::GeneralSettingsElement . |
02500100 | 000400 | Zone A & B channel list. |
02500500 | 000100 | DTMF list |
02500600 | 000030 | Power on settings, see AnytoneCodeplug::BootSettingsElement . |
02501280 | 000030 | DMR ARPS (GPS) messages, see D878UVCodeplug::GPSMessageElement . |
02501400 | 000200 | General settings extension 2, see D578UVCodeplug::GeneralSettingsExtensionElement . |
024C2000 | 0003F0 | List of 250 auto-repeater offset frequencies. 32bit little endian frequency in 10Hz. I.e., 600kHz = 60000. Default 0x00000000, 0x00 padded. |
Messages | ||
Start | Size | Content |
01640000 | max. 000100 | Some kind of linked list of messages. See AnytoneCodeplug::MessageListElement . Each entry has a size of 0x10. |
01640800 | 000090 | Bytemap of up to 100 valid messages. 0x00=valid, 0xff=invalid, remaining 46b set to 0x00. |
02140000 | max. 000800 | Bank 0, Messages 1-8. Each message consumes 0x100b. See AnytoneCodeplug::MessageElement . |
02180000 | max. 000800 | Bank 1, Messages 9-16 |
... | ... | ... |
02440000 | max. 000800 | Bank 12, Messages 97-100 |
Hot Keys | ||
Start | Size | Content |
025C0000 | 000100 | 4 analog quick-call settings. See AnytoneCodeplug::AnalogQuickCallElement . |
025C0B00 | 000010 | Status message bitmap. |
025C0100 | 000400 | Up to 32 status messages. Length unknown, offset 0x20. ASCII 0x00 terminated and padded. |
025C0500 | 000470 | 24 hot-key settings, see |
Encryption keys | ||
Start | Size | Content |
024C1700 | 000040 | 32 Encryption IDs, 0-based, 16bit big-endian. |
024C1800 | 000500 | 32 DMR-Encryption keys, see D868UVCodeplug::dmr_encryption_key_t , 40b each. |
024C4000 | 004000 | Up to 256 AES encryption keys. See |
Misc | ||
Start | Size | Content |
024C1400 | 000020 | Alarm setting, see AnytoneCodeplug::AlarmSettingElement . |
024C1440 | 000030 | Digital alarm settings extension, see |
FM Broadcast | ||
Start | Size | Content |
02480210 | 000020 | Bitmap of 100 FM broadcast channels. |
02480000 | max. 000200 | 100 FM broadcast channels. Encoded as 8-digit BCD little-endian in 100Hz. Filled with 0x00. |
02480200 | 000010 | FM broadcast VFO frequency. Encoded as 8-digit BCD little-endian in 100Hz. Filled with 0x00. |
DTMF, 2-tone & 5-tone signaling. | ||
Start | Size | Content |
024C0C80 | 000010 | 5-tone encoding bitmap. |
024C0000 | 000020 | 5-tone encoding. |
024C0D00 | 000200 | 5-tone ID list. |
024C1000 | 000080 | 5-tone settings. |
024C1080 | 000050 | DTMF settings. |
024C1280 | 000010 | 2-tone encoding bitmap. |
024C1100 | 000010 | 2-tone encoding. |
024C1290 | 000010 | 2-tone settings. |
024C2600 | 000010 | 2-tone decoding bitmap. |
024C2400 | 000030 | 2-tone decoding. |
Air-band settings | ||
Start | Size | Content |
02BC0000 | 000c80 | Up to 100 air band channels, 0x20 bytes each. See AirBandChannelElement . |
02BC1000 | 000020 | Air band VFO channel, see AirBandChannelElement . |
02BC1020 | 000020 | Air band channel bitmap |
02BC1040 | 000020 | Air band scan enable bitmap |
Still unknown | ||
Start | Size | Content |
024C1090 | 000040 | Unknown, set to 0xff |
024C1440 | 000030 | Unknown data. |
02504000 | 000400 | Unknown data. |
|
protectedvirtual |
|
protectedvirtual |
Allocate all code-plug elements that must be written back to the device to maintain a working codeplug.
These elements might be updated during encoding.
Reimplemented from D868UVCodeplug.