libdrmconf 0.12.1
A library to program DMR radios.
Loading...
Searching...
No Matches
GD77Codeplug Class Reference

Represents, encodes and decodes the device specific codeplug for a Radioddity GD-77. More...

#include <gd77_codeplug.hh>

Inheritance diagram for GD77Codeplug:
Collaboration diagram for GD77Codeplug:

Classes

class  ChannelElement
 Channel representation within the binary codeplug. More...
class  ContactElement
 Specific codeplug representation of a DMR contact for the GD77. More...
class  GroupListBankElement
 Table of RX group lists. More...
class  GroupListElement
 Represents an RX group list within the codeplug. More...
struct  Limit
 Some limits for the GD77 codeplug. More...
struct  Offset
 Some internal offsets within the codeplug. More...
class  ScanListBankElement
 Bank of scan lists for the GD77. More...
class  ScanListElement
 Represents a single scan list within the GD77 codeplug. More...

Public Member Functions

 GD77Codeplug (QObject *parent=nullptr)
 Constructs an empty codeplug for the GD-77.
void clearGeneralSettings ()
bool encodeGeneralSettings (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())
bool decodeGeneralSettings (Context &ctx, const ErrorStack &err=ErrorStack())
void clearButtonSettings ()
bool encodeButtonSettings (Context &ctx, const Flags &flags, const ErrorStack &err=ErrorStack())
bool decodeButtonSettings (Context &ctx, const ErrorStack &err=ErrorStack())
void clearMessages ()
bool encodeMessages (Context &ctx, const Flags &flags, const ErrorStack &err=ErrorStack())
bool decodeMessages (Context &ctx, const ErrorStack &err=ErrorStack())
void clearScanLists ()
bool encodeScanLists (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())
bool createScanLists (Context &ctx, const ErrorStack &err=ErrorStack())
bool linkScanLists (Context &ctx, const ErrorStack &err=ErrorStack())
void clearContacts ()
bool encodeContacts (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())
bool createContacts (Context &ctx, const ErrorStack &err=ErrorStack())
void clearDTMFContacts ()
bool encodeDTMFContacts (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())
bool createDTMFContacts (Context &ctx, const ErrorStack &err=ErrorStack())
void clearChannels ()
bool encodeChannels (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())
bool createChannels (Context &ctx, const ErrorStack &err=ErrorStack())
bool linkChannels (Context &ctx, const ErrorStack &err=ErrorStack())
void clearBootSettings ()
void clearMenuSettings ()
void clearBootText ()
bool encodeBootText (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())
bool decodeBootText (Context &ctx, const ErrorStack &err=ErrorStack())
void clearVFOSettings ()
void clearZones ()
bool encodeZones (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())
bool createZones (Context &ctx, const ErrorStack &err=ErrorStack())
bool linkZones (Context &ctx, const ErrorStack &err=ErrorStack())
void clearGroupLists ()
bool encodeGroupLists (const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())
bool createGroupLists (Context &ctx, const ErrorStack &err=ErrorStack())
bool linkGroupLists (Context &ctx, const ErrorStack &err=ErrorStack())
void clearEncryption ()
bool encodeEncryption (const Flags &flags, Context &ctx, const ErrorStack &err)
bool createEncryption (Context &ctx, const ErrorStack &err)
bool linkEncryption (Context &ctx, const ErrorStack &err)

Detailed Description

Represents, encodes and decodes the device specific codeplug for a Radioddity GD-77.

The GD-77 & GD-77S codeplugs are almost identical to the Radioddity/Baofeng RD5RCodeplug, in fact the memory layout (see below) and almost all of the single components of the codeplug are encoded in exactly the same way. Obviously, when Baofeng and Radioddity joint to create the RD5R, Radioddity provided the firmware. However, there are some small subtile differences between these two codeplug formats, requiring a separate class for the GD-77. For example, the contacts and scan-lists swapped the addresses and the channel_t encoding analog and digital channels for the codeplugs are identical except for the squelch settings. Thanks for that!

Matching firmware versions

This class implements the codeplug for the firmware version 4.03.06. The codeplug format usually does not change much with firmware revisions, in particular not with older radios. Unfortunately, it is not possible to detect the firmware version running on the device. Consequenly, only the newest firmware version is supported. However, older revisions may still work.

Codeplug structure within radio

The memory representation of the codeplug within the radio is divided into two segments. The first segment starts at the address 0x00080 and ends at 0x07c00 while the second section starts at 0x08000 and ends at 0x1e300.

StartEndSizeContent
First segment 0x00080-0x07c00
0x000800x000e00x0070??? Unknown ???
0x000e00x000ec0x000cGeneral settings, see RadioddityCodeplug::GeneralSettingsElement.
0x000ec0x001080x0028??? Unknown ???
0x001080x001280x0020Button settings, see RadioddityCodeplug::ButtonSettingsElement.
0x001280x013700x124832 preset message texts, see RadioddityCodeplug::MessageBankElement.
0x013700x017900x0420??? Unknown ???
0x017900x02dd00x164064 scan lists, see GD77Codeplug::ScanListBankElement and GD77Codeplug::ScanListElement
0x02dd00x02f880x01b8??? Unknown ???
0x02f880x033880x0400DTMF contacts, see RadioddityCodeplug::DTMFContactElement.
0x033880x037800x03f8??? Unknown ???
0x037800x053900x1c10First 128 channels (bank 0), see RadioddityCodeplug::ChannelBankElement and GD77Codeplug::ChannelElement
0x053900x075180x2188??? Unknown ???
0x075180x075380x0020Boot settings, see RadioddityCodeplug::BootSettingsElement.
0x075380x075400x0008Menu settings, see RadioddityCodeplug::MenuSettingsElement.
0x075400x075600x00202 intro lines, RadioddityCodeplug::BootTextElement.
0x075600x075900x0030??? Unknown ???
0x075900x075c80x0038VFO A settings RadioddityCodeplug::VFOChannelElement
0x075c80x076000x0038VFO B settings RadioddityCodeplug::VFOChannelElement
0x076000x07c000x0600??? Unknown ???
Second segment 0x08000-0x1e300
0x080000x080100x0010??? Unknown ???
0x080100x0af100x2f0068 zones of 80 channels each, see RadioddityCodeplug::ZoneBankElement RadioddityCodeplug::ZoneElement.
0x0af100x0b1b00x02a0??? Unknown ???
0x0b1b00x176200xc470Remaining 896 channels (bank 1-7), see RadioddityCodeplug::ChannelBankElement, GD77Codeplug::ChannelElement.
0x176200x1d6200x60001024 contacts, see GD77Codeplug::ContactElement.
0x1d6200x1eaa00x148064 RX group lists, see GD77Codeplug::GroupListBankElement, GD77Codeplug::GroupListElement.
0x1eaa00x1eb000x0060??? Unknown ???

The documentation for this class was generated from the following files:
  • /builddir/build/BUILD/qdmr-0.12.1-build/qdmr-0.12.1/lib/gd77_codeplug.hh
  • /builddir/build/BUILD/qdmr-0.12.1-build/qdmr-0.12.1/lib/gd77_codeplug.cc