libdrmconf 0.13.3
A library to program DMR radios.
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
RadioddityCodeplug::ChannelElement Class Reference

Implements the base for all Radioddity channel encodings. More...

#include <radioddity_codeplug.hh>

Inheritance diagram for RadioddityCodeplug::ChannelElement:
Inheritance graph
[legend]
Collaboration diagram for RadioddityCodeplug::ChannelElement:
Collaboration graph
[legend]

Classes

struct  Limit
 Some limits for this element. More...
 
struct  Offset
 Some internal offsets within the channel element. More...
 

Public Types

enum  Mode { MODE_ANALOG = 0 , MODE_DIGITAL = 1 }
 Possible channel types. More...
 
enum  Admit { ADMIT_ALWAYS = 0 , ADMIT_CH_FREE = 1 , ADMIT_COLOR = 2 }
 Possible admit criteria. More...
 
enum  PrivacyGroup { PRIVGR_NONE = 0 , PRIVGR_53474C39 = 1 }
 Possible privacy groups, not used in ham radio. More...
 

Public Member Functions

 ChannelElement (uint8_t *ptr)
 Constructs a channel from the given memory.
 
virtual ~ChannelElement ()
 Destructor.
 
virtual void clear ()
 Resets the channel.
 
virtual QString name () const
 Returns the name of the channel.
 
virtual void setName (const QString &n)
 Sets the name of the channel.
 
virtual uint32_t rxFrequency () const
 Returns the RX frequency of the channel.
 
virtual void setRXFrequency (uint32_t freq)
 Sets the RX frequency of the channel.
 
virtual uint32_t txFrequency () const
 Returns the TX frequency of the channel.
 
virtual void setTXFrequency (uint32_t freq)
 Sets the TX frequency of the channel.
 
virtual Mode mode () const
 Returns the channel mode.
 
virtual void setMode (Mode mode)
 Sets the channel mode.
 
virtual unsigned txTimeOut () const
 Returns the TX timeout in seconds.
 
virtual void setTXTimeOut (unsigned tot)
 Sets the TX timeout in seconds.
 
virtual unsigned txTimeOutRekeyDelay () const
 Returns the transmit time-out re-key delay in seconds.
 
virtual void setTXTimeOutRekeyDelay (unsigned delay)
 Sets the transmit time-out re-key delay in seconds.
 
virtual Admit admitCriterion () const
 Returns the admit criterion.
 
virtual void setAdmitCriterion (Admit admit)
 Sets the admit criterion.
 
virtual bool hasScanList () const
 Returns true if a scan list is set.
 
virtual unsigned scanListIndex () const
 Returns the scan list index (+1).
 
virtual void setScanListIndex (unsigned index)
 Sets the scan list index (+1).
 
virtual SelectiveCall rxTone () const
 Returns the RX subtone.
 
virtual void setRXTone (const SelectiveCall &code)
 Sets the RX subtone.
 
virtual SelectiveCall txTone () const
 Returns the TX subtone.
 
virtual void setTXTone (const SelectiveCall &code)
 Sets the TX subtone.
 
virtual unsigned txSignalingIndex () const
 Returns TX signaling index (+1).
 
virtual void setTXSignalingIndex (unsigned index)
 Sets TX signaling index (+1).
 
virtual unsigned rxSignalingIndex () const
 Returns RX signaling index (+1).
 
virtual void setRXSignalingIndex (unsigned index)
 Sets RX signaling index (+1).
 
virtual PrivacyGroup privacyGroup () const
 Returns the privacy group.
 
virtual void setPrivacyGroup (PrivacyGroup grp)
 Sets the privacy group.
 
virtual unsigned txColorCode () const
 Returns the TX color code.
 
virtual void setTXColorCode (unsigned cc)
 Sets the TX color code.
 
virtual bool hasGroupList () const
 Returns true if a group list is set.
 
virtual unsigned groupListIndex () const
 Returns the group-list index (+1).
 
virtual void setGroupListIndex (unsigned index)
 Sets the group-list index (+1).
 
virtual unsigned rxColorCode () const
 Returns the RX color code.
 
virtual void setRXColorCode (unsigned cc)
 Sets the RX color code.
 
virtual bool hasEmergencySystem () const
 Returns true if an emergency system is set.
 
virtual unsigned emergencySystemIndex () const
 Returns the emergency system index (+1).
 
virtual void setEmergencySystemIndex (unsigned index)
 Sets the emergency system index (+1).
 
virtual bool hasContact () const
 Returns true if a TX contact is set.
 
virtual unsigned contactIndex () const
 Returns the transmit contact index (+1).
 
virtual void setContactIndex (unsigned index)
 Sets the transmit contact index (+1).
 
virtual bool dataCallConfirm () const
 Returns true if data-call-confirm is enabled.
 
virtual void enableDataCallConfirm (bool enable)
 Enables/disables data-call-confirm.
 
virtual bool emergencyAlarmACK () const
 Returns true if emergency alarm ACK is enabled.
 
virtual void enableEmergencyAlarmACK (bool enable)
 Enables/disables emergency alarm ACK.
 
virtual bool privateCallConfirm () const
 Returns true if private-call-confirm is enabled.
 
virtual void enablePrivateCallConfirm (bool enable)
 Enables/disables private-call-confirm.
 
virtual bool privacyEnabled () const
 Returns true if privacy is enabled.
 
virtual void enablePrivacy (bool enable)
 Enables/disables privacy.
 
virtual DMRChannel::TimeSlot timeSlot () const
 Returns the time slot of the channel.
 
virtual void setTimeSlot (DMRChannel::TimeSlot ts)
 Sets the time slot of the channel.
 
virtual bool dualCapacityDirectMode () const
 Returns true if the dual-capacity direct mode is enabled.
 
virtual void enableDualCapacityDirectMode (bool enable)
 Enables/disables the dual-capacity direct mode.
 
virtual bool nonSTEFrequency () const
 Returns true if non-STE is frequency (?!).
 
virtual void enableNonSTEFrequency (bool enable)
 Enables/disables non-STE is frequency (?!).
 
virtual FMChannel::Bandwidth bandwidth () const
 Returns the bandwidth.
 
virtual void setBandwidth (FMChannel::Bandwidth bw)
 Sets the bandwidth.
 
virtual bool rxOnly () const
 Returns true if RX only is enabled.
 
virtual void enableRXOnly (bool enable)
 Enables/disables RX only.
 
virtual bool talkaround () const
 Returns true if talkaround is enabled.
 
virtual void enableTalkaround (bool enable)
 Enables/disables talkaround.
 
virtual bool vox () const
 Returns true if VOX is enabled.
 
virtual void enableVOX (bool enable)
 Enables/disables VOX.
 
virtual Channel::Power power () const
 Returns the power setting of the channel.
 
virtual void setPower (Channel::Power pwr)
 Sets the power setting of the channel.
 
virtual ChanneltoChannelObj (Context &ctx, const ErrorStack &err=ErrorStack()) const
 Constructs a generic Channel object from the codeplug channel.
 
virtual bool linkChannelObj (Channel *c, Context &ctx, const ErrorStack &err=ErrorStack()) const
 Links a previously constructed channel to the rest of the configuration.
 
virtual bool fromChannelObj (const Channel *c, Context &ctx, const ErrorStack &err=ErrorStack())
 Initializes this codeplug channel from the given generic configuration.
 
- Public Member Functions inherited from Codeplug::Element
 Element (const Element &other)
 Copy constructor.
 
virtual ~Element ()
 Destructor.
 
Elementoperator= (const Element &other)
 Copy assignment.
 
virtual bool isValid () const
 Returns true if the pointer is not null.
 
bool fill (uint8_t value, unsigned offset=0, int size=-1)
 Fills the memsets the entire element to the given value.
 
bool getBit (const Offset::Bit &offset) const
 Reads a specific bit at the given byte-offset.
 
bool getBit (unsigned offset, unsigned bit) const
 Reads a specific bit at the given byte-offset.
 
void setBit (const Offset::Bit &offset, bool value=true)
 Sets a specific bit at the given byte-offset.
 
void setBit (unsigned offset, unsigned bit, bool value=true)
 Sets a specific bit at the given byte-offset.
 
void clearBit (unsigned offset, unsigned bit)
 Clears a specific bit at the given byte-offset.
 
void clearBit (const Offset::Bit &offset)
 Clears a specific bit.
 
uint8_t getUInt2 (const Offset::Bit &offset) const
 Reads a 2bit unsigned integer at the given bit-offset.
 
uint8_t getUInt2 (unsigned offset, unsigned bit) const
 Reads a 2bit unsigned integer at the given byte- and bit-offset.
 
void setUInt2 (const Offset::Bit &offset, uint8_t value)
 Stores a 2bit unsigned integer at the given bit-offset.
 
void setUInt2 (unsigned offset, unsigned bit, uint8_t value)
 Stores a 2bit unsigned integer at the given byte- and bit-offset.
 
uint8_t getUInt3 (const Offset::Bit &offset) const
 Reads a 3bit unsigned integer at the given bit-offset.
 
uint8_t getUInt3 (unsigned offset, unsigned bit) const
 Reads a 3bit unsigned integer at the given byte- and bit-offset.
 
void setUInt3 (const Offset::Bit &offset, uint8_t value)
 Stores a 3bit unsigned integer at the given bit-offset.
 
void setUInt3 (unsigned offset, unsigned bit, uint8_t value)
 Stores a 3bit unsigned integer at the given byte- and bit-offset.
 
uint8_t getUInt4 (const Offset::Bit &offset) const
 Reads a 4bit unsigned integer at the given bit-offset.
 
uint8_t getUInt4 (unsigned offset, unsigned bit) const
 Reads a 4bit unsigned integer at the given byte- and bit-offset.
 
void setUInt4 (const Offset::Bit &offset, uint8_t value)
 Stores a 4bit unsigned integer at the given bit-offset.
 
void setUInt4 (unsigned offset, unsigned bit, uint8_t value)
 Stores a 4bit unsigned integer at the given byte- and bit-offset.
 
uint8_t getUInt5 (const Offset::Bit &offset) const
 Reads a 5bit unsigned integer at the given byte- and bit-offset.
 
uint8_t getUInt5 (unsigned offset, unsigned bit) const
 Reads a 5bit unsigned integer at the given byte- and bit-offset.
 
void setUInt5 (const Offset::Bit &offset, uint8_t value)
 Stores a 5bit unsigned integer at the given byte- and bit-offset.
 
void setUInt5 (unsigned offset, unsigned bit, uint8_t value)
 Stores a 5bit unsigned integer at the given byte- and bit-offset.
 
uint8_t getUInt6 (const Offset::Bit &offset) const
 Reads a 6bit unsigned integer at the given byte- and bit-offset.
 
uint8_t getUInt6 (unsigned offset, unsigned bit) const
 Reads a 6bit unsigned integer at the given byte- and bit-offset.
 
void setUInt6 (const Offset::Bit &offset, uint8_t value)
 Stores a 6bit unsigned integer at the given byte- and bit-offset.
 
void setUInt6 (unsigned offset, unsigned bit, uint8_t value)
 Stores a 6bit unsigned integer at the given byte- and bit-offset.
 
uint8_t getUInt8 (unsigned offset) const
 Reads a 8bit unsigned integer at the given byte- and bit-offset.
 
void setUInt8 (unsigned offset, uint8_t value)
 Reads a 8bit unsigned integer at the given byte- and bit-offset.
 
int8_t getInt8 (unsigned offset) const
 Reads a 8bit signed integer at the given byte- and bit-offset.
 
void setInt8 (unsigned offset, int8_t value)
 Reads a 8bit signed integer at the given byte- and bit-offset.
 
uint16_t getUInt16_be (unsigned offset) const
 Reads a 16bit big-endian unsigned integer at the given byte-offset.
 
uint16_t getUInt16_le (unsigned offset) const
 Reads a 16bit little-endian unsigned integer at the given byte-offset.
 
void setUInt16_be (unsigned offset, uint16_t value)
 Stores a 16bit big-endian unsigned integer at the given byte-offset.
 
void setUInt16_le (unsigned offset, uint16_t value)
 Stores a 16bit little-endian unsigned integer at the given byte-offset.
 
uint32_t getUInt24_be (unsigned offset) const
 Reads a 24bit big-endian unsigned integer at the given byte-offset.
 
uint32_t getUInt24_le (unsigned offset) const
 Reads a 24bit little-endian unsigned integer at the given byte-offset.
 
void setUInt24_be (unsigned offset, uint32_t value)
 Stores a 24bit big-endian unsigned integer at the given byte-offset.
 
void setUInt24_le (unsigned offset, uint32_t value)
 Stores a 24bit little-endian unsigned integer at the given byte-offset.
 
uint32_t getUInt32_be (unsigned offset) const
 Reads a 32bit big-endian unsigned integer at the given byte-offset.
 
uint32_t getUInt32_le (unsigned offset) const
 Reads a 32bit little-endian unsigned integer at the given byte-offset.
 
void setUInt32_be (unsigned offset, uint32_t value)
 Stores a 32bit big-endian unsigned integer at the given byte-offset.
 
void setUInt32_le (unsigned offset, uint32_t value)
 Stores a 32bit little-endian unsigned integer at the given byte-offset.
 
uint64_t getUInt64_be (unsigned offset) const
 Reads a 64bit big-endian unsigned integer at the given byte-offset.
 
uint64_t getUInt64_le (unsigned offset) const
 Reads a 64bit little-endian unsigned integer at the given byte-offset.
 
void setUInt64_be (unsigned offset, uint64_t value)
 Stores a 64bit big-endian unsigned integer at the given byte-offset.
 
void setUInt64_le (unsigned offset, uint64_t value)
 Stores a 64bit little-endian unsigned integer at the given byte-offset.
 
uint8_t getBCD2 (unsigned offset) const
 Reads a 2-digit (1-byte/8bit) BDC value in big-endian at the given byte-offset.
 
void setBCD2 (unsigned offset, uint8_t value)
 Stores a 2-digit (1-byte/8bit) BDC value in big-endian at the given byte-offset.
 
uint16_t getBCD4_be (unsigned offset) const
 Reads a 4-digit (2-byte/16bit) BDC value in big-endian at the given byte-offset.
 
void setBCD4_be (unsigned offset, uint16_t value)
 Stores a 4-digit (2-byte/16bit) BDC value in big-endian at the given byte-offset.
 
uint16_t getBCD4_le (unsigned offset) const
 Reads a 4-digit (2-byte/16bit) BDC value in little-endian at the given byte-offset.
 
void setBCD4_le (unsigned offset, uint16_t value)
 Stores a 4-digit (1-byte/16bit) BDC value in little-endian at the given byte-offset.
 
uint32_t getBCD8_be (unsigned offset) const
 Reads a 8-digit (4-byte/32bit) BDC value in big-endian at the given byte-offset.
 
void setBCD8_be (unsigned offset, uint32_t value)
 Stores a 8-digit (4-byte/32bit) BDC value in big-endian at the given byte-offset.
 
uint32_t getBCD8_le (unsigned offset) const
 Reads a 8-digit (4-byte/32bit) BDC value in little-endian at the given byte-offset.
 
void setBCD8_le (unsigned offset, uint32_t value)
 Stores a 8-digit (4-byte/32bit) BDC value in little-endian at the given byte-offset.
 
QString readASCII (unsigned offset, unsigned maxlen, uint8_t eos=0x00) const
 Reads up to maxlen ASCII chars at the given byte-offset using eos as the string termination char.
 
void writeASCII (unsigned offset, const QString &txt, unsigned maxlen, uint8_t eos=0x00)
 Stores up to maxlen ASCII chars at the given byte-offset using eos as the string termination char.
 
QString readUnicode (unsigned offset, unsigned maxlen, uint16_t eos=0x0000) const
 Reads up to maxlen unicode chars at the given byte-offset using eos as the string termination char.
 
void writeUnicode (unsigned offset, const QString &txt, unsigned maxlen, uint16_t eos=0x0000)
 Stores up to maxlen unicode chars at the given byte-offset using eos as the string termination char.
 

Static Public Member Functions

static constexpr unsigned int size ()
 The size of the channel.
 

Protected Member Functions

 ChannelElement (uint8_t *ptr, size_t size)
 Constructs a channel from the given memory.
 
- Protected Member Functions inherited from Codeplug::Element
 Element (uint8_t *ptr, size_t size)
 Hidden constructor.
 

Additional Inherited Members

- Protected Attributes inherited from Codeplug::Element
uint8_t * _data
 Holds the pointer to the element.
 
size_t _size
 Holds the size of the element.
 

Detailed Description

Implements the base for all Radioddity channel encodings.

Memory layout of encoded channel:

     7   6   5   4   3   2   1   0   7   6   5   4   3   2   1   0   7   6   5   4   3   2   1   0   7   6   5   4   3   2   1   0
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
00 | Name, 16 x 1byte ASCII encoded, 0xff terminated text                                                                       ...
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0c  ...                                                                                                                            |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
10 | RX Frequency in 10Hz encoded as 8-digits BCD, little-endian                                                                   |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
14 | TX Frequency in 10Hz encoded as 8-digits BCD, little-endian                                                                   |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
18 | Mode 0=analog, 1digital       | Unused set to 0                                               | TX timeout (TOT) N x 15s      |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
1c | TOT rekey delay in s          | Admit 0=always, 1=free, 2=CC  | !!! Unknown set to 0x50 !!!   | Scan-list index +1            |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
20 | RX CTCSS/DCS                                                  | TX CTCSS/DCS                                                  |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
24 | Unused set to 0x00            | TX signaling index +1         | Unused set to 0x00            | RX signaling index +1         |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
28 | !!! Unknown set to 0x16 !!!   | Privacy Grp 0=None, 1=53474c39| TX Color code [0,15]          | RX group-list index +1        |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
2c | RX Color code [0,15]          | Emergency sys. index +1       | TX contact index +1                                           |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
30 |DCC|EAC| 0   0   0   0   0   0 | 0 |SLT| 0 |PRV| 0   0   0 |PCC| 0   0 |STE| 0   0   0   0 |DCM|PWR|VOX| 0   0 |TLK|RXO|BW | 0 |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
34 | Unused set to 0                                                                                                               |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
where
EAC = Emergency alarm ACK; DCC = Data call confirmed; SLT = Repeater slot {1,2}; PRV = Privacy enabled; PCC = Private call confirmed;
STE = Non STE is frequency(?!?); DCM = Dual capacity direct mode enable; PWR = Power; VOX = Voice operated switch wnable;
TLK = Allow talkaround; RXO = RX only; BW = Bandwidth;

Member Enumeration Documentation

◆ Admit

Possible admit criteria.

Enumerator
ADMIT_ALWAYS 

Allow always.

ADMIT_CH_FREE 

Allow TX on channel free.

ADMIT_COLOR 

Allow TX on matching color-code.

◆ Mode

Possible channel types.

Enumerator
MODE_ANALOG 

Analog channel, aka FM.

MODE_DIGITAL 

Digital channel, aka DMR.

◆ PrivacyGroup

Possible privacy groups, not used in ham radio.

Enumerator
PRIVGR_NONE 

No privacy group, default.

PRIVGR_53474C39 

Privacy group 53474C39 (wtf?).

Member Function Documentation

◆ clear()

void RadioddityCodeplug::ChannelElement::clear ( )
virtual

◆ fromChannelObj()

bool RadioddityCodeplug::ChannelElement::fromChannelObj ( const Channel c,
Context ctx,
const ErrorStack err = ErrorStack() 
)
virtual

Initializes this codeplug channel from the given generic configuration.

Reimplemented in RD5RCodeplug::ChannelElement.

◆ linkChannelObj()

bool RadioddityCodeplug::ChannelElement::linkChannelObj ( Channel c,
Context ctx,
const ErrorStack err = ErrorStack() 
) const
virtual

Links a previously constructed channel to the rest of the configuration.

Reimplemented in RD5RCodeplug::ChannelElement.

◆ name()

QString RadioddityCodeplug::ChannelElement::name ( ) const
virtual

Returns the name of the channel.

Reimplemented in RadioddityCodeplug::VFOChannelElement.

◆ setName()

void RadioddityCodeplug::ChannelElement::setName ( const QString &  n)
virtual

Sets the name of the channel.

Reimplemented in RadioddityCodeplug::VFOChannelElement.

◆ setTXTimeOut()

void RadioddityCodeplug::ChannelElement::setTXTimeOut ( unsigned  tot)
virtual

Sets the TX timeout in seconds.

Setting it to 0 disables the timeout.

◆ toChannelObj()

Channel * RadioddityCodeplug::ChannelElement::toChannelObj ( Codeplug::Context ctx,
const ErrorStack err = ErrorStack() 
) const
virtual

Constructs a generic Channel object from the codeplug channel.

Reimplemented in RD5RCodeplug::ChannelElement.

◆ txTimeOut()

unsigned RadioddityCodeplug::ChannelElement::txTimeOut ( ) const
virtual

Returns the TX timeout in seconds.

A value of 0 means disabled.


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