libdrmconf  0.11.3
A library to program DMR radios.
Modules | Classes
Common codeplug configuration

This module collects all classes that represent the general configuration for all DMR codeplugs. More...

Collaboration diagram for Common codeplug configuration:

Modules

 Radio Limits
 This module collects all classes used to define the limits for each supported radio.
 

Classes

class  CallsignDB
 Abstract base class of all callsign database implementations. More...
 
class  Channel
 The base class of all channels (analog and digital) of a codeplug configuration. More...
 
class  AnalogChannel
 Base class for all analog channels. More...
 
class  FMChannel
 Extension to the AnalogChannel class to implement an analog FM channel. More...
 
class  DigitalChannel
 Base class of all digital channels. More...
 
class  DMRChannel
 Extension to the DigitalChannel class to implement an DMR channel. More...
 
class  SelectedChannel
 Internal singleton class representing the "currently selected" channel. More...
 
class  ChannelList
 Container class holding all channels (analog and digital) for a specific configuration (Config). More...
 
class  CommercialExtension
 Implements the generic extension for the codeplug to represent some commercial features of DMR. More...
 
class  CommercialChannelExtension
 Implements the generic extension for all channels configuring commercial features of DMR. More...
 
class  Config
 The config class, representing the codeplug configuration. More...
 
class  ConfigLabelingVisitor
 A visitor to label the entire configuration. More...
 
class  ConfigItem
 Base class for all configuration objects (channels, zones, contacts, etc). More...
 
class  ConfigObjectReference
 Implements a reference to a config object. More...
 
class  DMRContactReference
 Represents a reference to a DMR contact. More...
 
class  DMRChannelReference
 Implements a reference to a DMR channel. More...
 
class  FMChannelReference
 Implements a reference to a FM channel. More...
 
class  ScanListReference
 Implements a reference to a scan list. More...
 
class  PositioningSystemReference
 Implements a reference to a positioning system. More...
 
class  APRSSystemReference
 Implements a reference to an APRS system. More...
 
class  GPSSystemReference
 Implements a reference to a GPS system. More...
 
class  DMRRadioIDReference
 Implements a reference to a radio ID. More...
 
class  GroupListReference
 Implements a reference to a group list. More...
 
class  RoamingZoneReference
 Implements a reference to a roaming zone. More...
 
class  EncryptionKeyReference
 Implements a reference to an encryption key. More...
 
class  ZoneReference
 Implements a reference to a zone. More...
 
class  Contact
 Represents the base-class for all contact types, analog (DTMF) or digital (DMR, M17). More...
 
class  AnalogContact
 Base class for all analog contacts. More...
 
class  DTMFContact
 Represents an analog contact, that is a DTMF number. More...
 
class  DigitalContact
 Base class for all digital contacts. More...
 
class  DMRContact
 Represents a digital contact, that is a DMR number. More...
 
class  ContactList
 Represents the list of contacts within the abstract radio configuration. More...
 
class  CSVHandler
 Basic parse-handler interface. More...
 
class  CSVReader
 Implements the text-file codeplug reader. More...
 
class  EncryptionKey
 Base class of all encryption keys. More...
 
class  DMREncryptionKey
 Represents a DMR (basic) encryption key. More...
 
class  AESEncryptionKey
 Represents an AES (enhanced) encryption key. More...
 
class  EncryptionKeys
 The list of encryption keys. More...
 
class  PositioningSystem
 Base class of the positioning systems, that is APRS and DMR position reporting system. More...
 
class  GPSSystem
 This class represents a GPS signalling system within the codeplug. More...
 
class  APRSSystem
 Represents an APRS system within the generic config. More...
 
class  PositioningSystems
 The list of positioning systems. More...
 
class  RadioID
 Abstract base class for all radio IDs. More...
 
class  DMRRadioID
 Represents a DMR radio ID within the abstract config. More...
 
class  DefaultRadioID
 A singleton radio ID representing the default DMR radio ID within the abstract config. More...
 
class  DTMFRadioID
 Represents a DTMF radio ID as used for PTT-ID on analog channels. More...
 
class  RadioIDList
 Represents the list of configured DMR IDs (radio IDs) within the abstract config. More...
 
class  RadioSettings
 Represents the common radio-global settings. More...
 
class  RXGroupList
 Generic representation of a RX group list. More...
 
class  RXGroupLists
 Represents the list of RX group lists within the generic configuration. More...
 
class  ScanList
 Generic representation of a scan list. More...
 
class  ScanLists
 Represents the list of scan lists. More...
 
class  Zone
 Represents a zone within the generic configuration. More...
 
class  ZoneList
 Represents the list of zones within the generic configuration. More...
 

Detailed Description

This module collects all classes that represent the general configuration for all DMR codeplugs.

To this end, it aims at covering the important features for ham radio applications. All features that are more related to "professional" applications and are specific to each radio, are implemented by so-called extensions, see ConfigExtension. The central class for the abstract configuration is Config, this class represents a complete configuration a.k.a. codeplug of a radio. It contains all the information being programmed into the radio irrespective of the model and manufacturer.

The entire configuration (abstract, device independent codeplug) consists of a tree of ConfigItem instances. This class forms the base-class of all elements in the configuration (excluding lists etc.). Each ConfigItem may have a set of properties. These properties are used to implement the majority of the common functionality concerning the abstract codeplug. These are

To this end, the creation of codeplug extensions is pretty easy, as only the properties for the extension must be defined. The rest is taken care of by the default implementation of the ConfigItem::copy, ConfigItem::clone, ConfigItem::label, ConfigItem::serialize, ConfigItem::parse and ConfigItem::link methods. It is not necessary to override any of these methods if there is a one-to-one mapping between the property and its YAML representation.

Frequently, however, it is necessary to represent a property in a different way in YAML. This is usually true if a property may hold different specializations of a common type. For example the channel list may hold analog and digital channels. In YAML, the type is specified explicitly as an enclosing map. This structure is not a one-to-one representation of the actual property (the channel list) to the YAML format. In these cases, the ConfigItem::parse and ConfigItem::link method might be overridden to implement this.