1#ifndef OPENGD77BASE_CODEPLUG_HH
2#define OPENGD77BASE_CODEPLUG_HH
9#include "satellitedatabase.hh"
11#include <QGeoCoordinate>
47 None = 0, APRS = 1, Text = 2, Both = 3
52 Global, Open, Normal, Closed
66 static constexpr unsigned int size() {
return 0x0038; }
72 virtual QString
name()
const;
74 virtual void setName(
const QString &n);
135 virtual bool beep()
const;
142 virtual unsigned int dmrId()
const;
144 virtual void setDMRId(
unsigned int id);
200 virtual bool rxOnly()
const;
214 virtual bool vox()
const;
243 static constexpr unsigned int name() {
return 0x0000; }
244 static constexpr unsigned int rxFrequency() {
return 0x0010; }
245 static constexpr unsigned int txFrequency() {
return 0x0014; }
246 static constexpr unsigned int mode() {
return 0x0018; }
247 static constexpr unsigned int power() {
return 0x0019; }
248 static constexpr unsigned int latitude0() {
return 0x001a; }
249 static constexpr unsigned int txTimeout() {
return 0x001b; }
250 static constexpr unsigned int latitude1() {
return 0x001c; }
251 static constexpr unsigned int latitude2() {
return 0x001d; }
252 static constexpr unsigned int longitude0() {
return 0x001e; }
253 static constexpr unsigned int longitude1() {
return 0x001f; }
254 static constexpr unsigned int rxTone() {
return 0x0020; }
255 static constexpr unsigned int txTone() {
return 0x0022; }
256 static constexpr unsigned int longitude2() {
return 0x0024; }
257 static constexpr Bit simplex() {
return {0x0026, 2}; }
258 static constexpr Bit useFixedLocation() {
return {0x0026, 3}; }
259 static constexpr Bit disablePowerSave() {
return {0x0026, 5}; }
260 static constexpr Bit disableBeep() {
return {0x0026, 6}; }
261 static constexpr Bit overrideDMRID() {
return {0x0026, 7}; }
262 static constexpr unsigned int dmrId() {
return 0x0027; }
263 static constexpr unsigned int groupList() {
return 0x002b; }
264 static constexpr unsigned int colorCode() {
return 0x002c; }
265 static constexpr unsigned int aprsIndex() {
return 0x002d; }
266 static constexpr unsigned int txContact() {
return 0x002e; }
269 static constexpr Bit
timeSlot() {
return {0x0031, 6}; }
270 static constexpr Bit
bandwidth() {
return {0x0033, 1}; }
271 static constexpr Bit
rxOnly() {
return {0x0033, 2}; }
272 static constexpr Bit
skipScan() {
return {0x0033, 4}; }
273 static constexpr Bit
skipZoneScan() {
return {0x0033, 5}; }
274 static constexpr Bit
vox() {
return {0x0033, 6}; }
275 static constexpr unsigned int squelch() {
return 0x0037; }
298 static constexpr unsigned int size() {
return 0x1c10; }
304 virtual bool isEnabled(
unsigned idx)
const ;
306 virtual void enable(
unsigned idx,
bool enabled);
308 virtual uint8_t *
get(
unsigned idx)
const;
323 static constexpr unsigned int bitmask() {
return 0x0000; }
324 static constexpr unsigned int channels() {
return 0x0010; }
367 QString
name()
const;
388 static constexpr Bit stepSize() {
return {0x0036, 4} ; }
389 static constexpr Bit offsetMode() {
return {0x0036, 2} ; }
390 static constexpr unsigned int txOffset() {
return 0x0034; }
408 static constexpr unsigned int size() {
return 0x0090; }
431 virtual QString
call()
const;
436 virtual unsigned int radioId()
const;
447 struct Limit:
public Element::Limit {
460 static constexpr unsigned int call() {
return 0x0060; }
461 static constexpr unsigned int dmrId() {
return 0x0068; }
473 Baud300 = 1, Baud1200 = 0
498 static constexpr unsigned int size() {
return 0x40; }
507 virtual QString
name()
const;
535 virtual unsigned int via1SSID()
const;
537 virtual void setVia1(
const QString &call,
unsigned int ssid);
546 virtual unsigned int via2SSID()
const;
548 virtual void setVia2(
const QString &call,
unsigned int ssid);
558 virtual QString
comment()
const;
579 struct Limit:
public Element::Limit {
591 static constexpr unsigned int name() {
return 0x0000; }
592 static constexpr unsigned int sourceSSID() {
return 0x0008; }
593 static constexpr unsigned int latitude() {
return 0x0009; }
594 static constexpr unsigned int longitude() {
return 0x000c; }
595 static constexpr unsigned int via1Call() {
return 0x000f; }
596 static constexpr unsigned int via1SSID() {
return 0x0015; }
597 static constexpr unsigned int via2Call() {
return 0x0016; }
598 static constexpr unsigned int via2SSID() {
return 0x001c; }
599 static constexpr unsigned int iconTable() {
return 0x001d; }
600 static constexpr unsigned int iconIndex() {
return 0x001e; }
601 static constexpr unsigned int comment() {
return 0x001f; }
602 static constexpr unsigned int fmFrequency() {
return 0x0037; }
604 static constexpr Bit useFixedPosition() {
return { 0x003d, 1}; }
605 static constexpr Bit
baudRate() {
return { 0x003d, 0}; }
606 static constexpr unsigned int unknownBytes() {
return 0x003e; }
625 static constexpr unsigned int size() {
return 0x40; }
642 struct Limit:
public Element::Limit {
644 static constexpr unsigned int systems() {
return 8; }
649 struct Offset:
public Element::Offset {
650 static constexpr unsigned int systems() {
return 0x0000; }
651 static constexpr unsigned int betweenSystems() {
return APRSSettingsElement::size(); }
670 static constexpr unsigned int size() {
return 0x0020; }
676 virtual QString
name()
const;
681 virtual QString
number()
const;
692 struct Limit:
public Element::Limit {
701 struct Offset:
public Element::Offset {
702 static constexpr unsigned int name() {
return 0x0000; }
703 static constexpr unsigned int number() {
return 0x0010; }
735 struct Limit:
public Element::Limit {
737 static constexpr unsigned int contacts() {
return 64; }
742 struct Offset:
public Element::Offset {
743 static constexpr unsigned int contacts() {
return 0x0000; }
744 static constexpr unsigned int betweenContacts() {
return DTMFContactElement::size(); }
781 virtual QString
line1()
const;
783 virtual void setLine1(
const QString &text);
785 virtual QString
line2()
const;
787 virtual void setLine2(
const QString &text);
796 struct Limit:
public Element::Limit {
803 struct Offset:
public Element::Offset {
804 static constexpr unsigned int bootText() {
return 0x0000; }
805 static constexpr unsigned int bootPasswdEnable() {
return 0x0001; }
806 static constexpr unsigned int bootPasswd() {
return 0x000c; }
807 static constexpr unsigned int line1() {
return 0x0028; }
808 static constexpr unsigned int line2() {
return 0x0038; }
827 static constexpr unsigned int size() {
return 0x00b0; }
835 virtual QString
name()
const;
840 virtual bool hasMember(
unsigned n)
const;
842 virtual unsigned member(
unsigned n)
const;
844 virtual void setMember(
unsigned n,
unsigned idx);
858 struct Limit:
public Element::Limit {
869 static constexpr unsigned int name() {
return 0x0000; }
870 static constexpr unsigned int channels() {
return 0x0010; }
871 static constexpr unsigned int betweenChannels() {
return 0x0002; }
891 static constexpr unsigned int size() {
899 virtual bool isEnabled(
unsigned idx)
const ;
901 virtual void enable(
unsigned idx,
bool enabled);
915 struct Limit:
public Element::Limit {
917 static constexpr unsigned int zoneCount() {
return 68; }
924 static constexpr unsigned int bitmap() {
return 0x0000; }
925 static constexpr unsigned int zones() {
return 0x0020; }
955 static constexpr unsigned int size() {
return 0x0018; }
964 virtual QString
name()
const;
969 virtual unsigned number()
const;
999 static constexpr unsigned int name() {
return 0x0000; }
1000 static constexpr unsigned int number() {
return 0x0010; }
1001 static constexpr unsigned int type() {
return 0x0014; }
1020 static constexpr unsigned int size() {
1046 static constexpr unsigned int contacts() {
return 0x0000; }
1065 static constexpr unsigned int size() {
return 0x0050; }
1071 virtual QString
name()
const;
1078 virtual unsigned int contactIndex(
unsigned int i)
const;
1080 virtual void setContactIndex(
unsigned int i,
unsigned int contactIdx);
1104 static constexpr unsigned int name() {
return 0x0000; }
1105 static constexpr unsigned int contacts() {
return 0x0010; }
1106 static constexpr unsigned int betweenContacts() {
return 0x0002; }
1124 static constexpr unsigned int size() {
return 0x1840; }
1158 static constexpr unsigned int length() {
return 0x0000; }
1159 static constexpr unsigned int groupLists() {
return 0x0080; }
1179 static constexpr unsigned int size() {
return 0x0064; }
1184 virtual void setName(
const QString &name);
1187 virtual void setEpoch(const ::OrbitalElement::Epoch &epoch);
1234 void writeFixedPoint(
const Offset::Bit &offset,
double value,
bool sign,
unsigned int dec,
unsigned int frac);
1242 void writeFractional(
const Offset::Bit &offset,
double value,
bool sign,
unsigned int frac);
1244 void writeInteger(
const Offset::Bit &offset,
int value,
bool sign,
unsigned dec);
1246 void writeDigit(
const Offset::Bit &offset, uint8_t digit);
1261 static constexpr unsigned int name() {
return 0x0000; }
1262 static constexpr Bit epochYear() {
return {0x0008, 4}; }
1263 static constexpr Bit epochJulienDay() {
return {0x0009, 4}; }
1264 static constexpr Bit meanMotionDerivative() {
return {0x000f, 4}; }
1265 static constexpr Bit inclination() {
return {0x0014, 4}; }
1266 static constexpr Bit ascension() {
return {0x0018, 4}; }
1267 static constexpr Bit eccentricity() {
return {0x001c, 4}; }
1268 static constexpr Bit perigee() {
return {0x001f, 0}; }
1269 static constexpr Bit meanAnomaly() {
return {0x0023, 0}; }
1270 static constexpr Bit meanMotion() {
return {0x0027, 0}; }
1271 static constexpr Bit revolutionNumber() {
return {0x002d, 4}; }
1272 static constexpr unsigned int fmDownlink() {
return 0x0030; }
1273 static constexpr unsigned int fmUplink() {
return 0x0034; }
1274 static constexpr unsigned int ctcss() {
return 0x0038; }
1275 static constexpr unsigned int aprsDownlink() {
return 0x003c; }
1276 static constexpr unsigned int aprsUplink() {
return 0x0040; }
1277 static constexpr unsigned int beacon() {
return 0x0044; }
1278 static constexpr unsigned int aprsPath() {
return 0x004c; }
1296 static constexpr unsigned int size() {
return 0x09e0; }
1316 static constexpr unsigned int blockId() {
return 0x0000; }
1317 static constexpr unsigned int segmentSize() {
return 0x0004; }
1318 static constexpr unsigned int satellites() {
return 0x0008; }
1335 SatelliteOrbitals = 3,
1349 static constexpr unsigned int size() {
return 0x11a0; }
1355 virtual QString
magic()
const;
1357 virtual unsigned int version()
const;
1375 static constexpr unsigned int magicString() {
return 0x0000; }
1376 static constexpr unsigned int versionNumber() {
return 0x0008; }
1377 static constexpr unsigned int blocks() {
return 0x000c; }
1389 virtual void clear();
The base class of all channels (analog and digital) of a codeplug configuration.
Definition channel.hh:34
Power
Specifies the prefix for every ID assigned to every channel during serialization.
Definition channel.hh:61
Base class for all codeplug contexts.
Definition codeplug.hh:291
Represents the abstract base class of all codeplug elements.
Definition codeplug.hh:65
Certain flags passed to CodePlug::encode to control the transfer and encoding of the codeplug.
Definition codeplug.hh:24
This class defines the interface all device-specific code-plugs must implement.
Definition codeplug.hh:18
const Object * as() const
Casts this object to the given type.
Definition configobject.hh:148
The config class, representing the codeplug configuration.
Definition config.hh:70
uint32_t size() const
Returns the total size of the DFU file.
Definition dfufile.cc:52
TimeSlot
Possible timeslots for digital channels.
Definition channel.hh:398
Implements a stack of error messages to provide a pretty formatted error traceback.
Definition errorstack.hh:43
Bandwidth
Possible bandwidth of an analog channel.
Definition channel.hh:251
Represents a time interval.
Definition interval.hh:11
Encodes some additional settings for OpenGD77 based radios.
Definition opengd77base_codeplug.hh:1330
virtual unsigned int version() const
Returns the version number.
Definition opengd77base_codeplug.cc:2537
bool isValid() const
Returns true if the pointer is not null.
Definition opengd77base_codeplug.cc:2520
virtual SatelliteBankElement satellites() const
Returns statellite settings bank, if present.
Definition opengd77base_codeplug.cc:2560
virtual bool hasSettings(Settings set) const
Returns true, if the given settings is stored.
Definition opengd77base_codeplug.cc:2542
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:2525
static constexpr unsigned int size()
Returns the size of the element.
Definition opengd77base_codeplug.hh:1349
virtual QString magic() const
Returns the magic string.
Definition opengd77base_codeplug.cc:2532
Implements the base class of boot settings for all OpenGD77 codeplugs.
Definition opengd77base_codeplug.hh:752
virtual ~BootSettingsElement()
Destructor.
Definition opengd77base_codeplug.cc:1515
virtual void setLine1(const QString &text)
Sets the first line.
Definition opengd77base_codeplug.cc:1566
virtual QString line2() const
Returns the Second line.
Definition opengd77base_codeplug.cc:1571
virtual QString line1() const
Returns the first line.
Definition opengd77base_codeplug.cc:1562
virtual void enableBootText(bool enable)
Enables/disables boot text.
Definition opengd77base_codeplug.cc:1534
virtual bool encode(const Context &ctx, const ErrorStack &err=ErrorStack())
Encodes boot text settings from configuration.
Definition opengd77base_codeplug.cc:1581
virtual unsigned bootPassword() const
Returns the boot password (6 digit).
Definition opengd77base_codeplug.cc:1545
virtual bool bootPasswordEnabled() const
Returns true if the boot password is enabled.
Definition opengd77base_codeplug.cc:1540
virtual void setLine2(const QString &text)
Sets the second line.
Definition opengd77base_codeplug.cc:1575
virtual void clearBootPassword()
Clear boot password.
Definition opengd77base_codeplug.cc:1556
virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack())
Updates the configuration with the boot text settings.
Definition opengd77base_codeplug.cc:1589
virtual bool bootText() const
Returns true if the text is shown on boot, other wise an image is shown.
Definition opengd77base_codeplug.cc:1529
virtual void setBootPassword(unsigned passwd)
Sets the boot password (6 digit).
Definition opengd77base_codeplug.cc:1550
void clear()
Resets the settings.
Definition opengd77base_codeplug.cc:1520
Implements the base for channel banks in Radioddity codeplugs.
Definition opengd77base_codeplug.hh:286
virtual ~ChannelBankElement()
Destructor.
Definition opengd77base_codeplug.cc:739
virtual uint8_t * get(unsigned idx) const
Returns a pointer to the channel at the given index.
Definition opengd77base_codeplug.cc:760
virtual bool isEnabled(unsigned idx) const
Returns true if the channel is enabled.
Definition opengd77base_codeplug.cc:749
ChannelElement channel(unsigned int n)
Returns the n-th channel.
Definition opengd77base_codeplug.cc:765
void clear()
Clears the bank.
Definition opengd77base_codeplug.cc:744
static constexpr unsigned int size()
The size of the channel bank.
Definition opengd77base_codeplug.hh:298
virtual void enable(unsigned idx, bool enabled)
Enable/disable a channel in the bank.
Definition opengd77base_codeplug.cc:754
Implements the base for all OpenGD77 channel encodings.
Definition opengd77base_codeplug.hh:37
virtual unsigned int dmrId() const
Returns the DMR ID for this channel.
Definition opengd77base_codeplug.cc:330
Alias
Alias to transmit.
Definition opengd77base_codeplug.hh:46
virtual void enableSimplex(bool enable)
Sets the channel to simplex.
Definition opengd77base_codeplug.cc:297
virtual void setBandwidth(FMChannel::Bandwidth bw)
Sets the bandwidth.
Definition opengd77base_codeplug.cc:481
virtual void clearPower()
Clears the power setting.
Definition opengd77base_codeplug.cc:204
virtual void setMode(Mode mode)
Sets the channel mode.
Definition opengd77base_codeplug.cc:161
virtual bool beep() const
Returns true, if the "beep" is enabled.
Definition opengd77base_codeplug.cc:314
virtual DMRChannel::TimeSlot timeSlot() const
Returns the time slot of the channel.
Definition opengd77base_codeplug.cc:467
virtual void enableRXOnly(bool enable)
Enables/disables RX only.
Definition opengd77base_codeplug.cc:490
static constexpr unsigned int size()
The size of the channel.
Definition opengd77base_codeplug.hh:66
virtual OpenGD77ChannelExtension::TalkerAlias aliasTimeSlot1() const
Returns the alias transmitted on time slot 1.
Definition opengd77base_codeplug.cc:421
virtual void setTXTone(const SelectiveCall &code)
Sets the TX subtone.
Definition opengd77base_codeplug.cc:286
virtual bool hasDMRId() const
Returns true if the global DMR ID is overridden.
Definition opengd77base_codeplug.cc:325
virtual void clear()
Resets the channel.
Definition opengd77base_codeplug.cc:94
virtual void setName(const QString &n)
Sets the name of the channel.
Definition opengd77base_codeplug.cc:129
virtual void setAliasTimeSlot2(OpenGD77ChannelExtension::TalkerAlias alias)
Sets the alias transmitted on time slot 2.
Definition opengd77base_codeplug.cc:456
virtual Interval transmitTimeout() const
Returns the transmit timeout.
Definition opengd77base_codeplug.cc:210
virtual void clearGroupListIndex()
Clears the group list index.
Definition opengd77base_codeplug.cc:363
virtual QGeoCoordinate fixedPosition() const
Returns the fixed position.
Definition opengd77base_codeplug.cc:234
virtual unsigned int squelchLevel() const
Returns the squelch level.
Definition opengd77base_codeplug.cc:533
virtual void setDMRId(unsigned int id)
Sets the DMR ID for this channel.
Definition opengd77base_codeplug.cc:335
virtual bool globalPower() const
Returns true if the power-setting is global.
Definition opengd77base_codeplug.cc:167
virtual FMChannel::Bandwidth bandwidth() const
Returns the bandwidth.
Definition opengd77base_codeplug.cc:477
virtual void enableSkipZoneScan(bool enable)
Enables/disables skipping in zone scan.
Definition opengd77base_codeplug.cc:508
virtual bool hasFixedPosition() const
Returns true, if a fixed position is set for the channel.
Definition opengd77base_codeplug.cc:229
virtual void setTXFrequency(const Frequency &freq)
Sets the TX frequency of the channel.
Definition opengd77base_codeplug.cc:151
virtual unsigned int aprsIndex() const
Returns the APRS system index.
Definition opengd77base_codeplug.cc:384
virtual bool powerSave() const
Returns true, if the power-save feature is enabled.
Definition opengd77base_codeplug.cc:303
SquelchMode
Possible squelch modes.
Definition opengd77base_codeplug.hh:51
virtual void clearTXContact()
Clears the TX contact index.
Definition opengd77base_codeplug.cc:415
Mode
Possible channel types.
Definition opengd77base_codeplug.hh:40
@ MODE_ANALOG
Analog channel, aka FM.
Definition opengd77base_codeplug.hh:41
@ MODE_DIGITAL
Digital channel, aka DMR.
Definition opengd77base_codeplug.hh:42
virtual void setTXContactIndex(unsigned int index)
Sets the TX contact index.
Definition opengd77base_codeplug.cc:410
virtual bool vox() const
Returns true if VOX is enabled.
Definition opengd77base_codeplug.cc:513
virtual QString name() const
Returns the name of the channel.
Definition opengd77base_codeplug.cc:124
virtual unsigned colorCode() const
Returns the color code.
Definition opengd77base_codeplug.cc:369
virtual SelectiveCall txTone() const
Returns the TX subtone.
Definition opengd77base_codeplug.cc:281
virtual SelectiveCall rxTone() const
Returns the RX subtone.
Definition opengd77base_codeplug.cc:271
virtual void setAliasTimeSlot1(OpenGD77ChannelExtension::TalkerAlias alias)
Sets the alias transmitted on time slot 1.
Definition opengd77base_codeplug.cc:433
virtual bool skipScan() const
Returns true if channel is skipped in a scan.
Definition opengd77base_codeplug.cc:495
virtual void clearDMRId()
Resets the DMR ID for this channel to the global one.
Definition opengd77base_codeplug.cc:341
virtual void clearFixedPosition()
Resets the fixed position.
Definition opengd77base_codeplug.cc:265
virtual bool rxOnly() const
Returns true if RX only is enabled.
Definition opengd77base_codeplug.cc:486
virtual Frequency rxFrequency() const
Returns the RX frequency of the channel.
Definition opengd77base_codeplug.cc:135
virtual unsigned groupListIndex() const
Returns the group-list index.
Definition opengd77base_codeplug.cc:353
virtual bool skipZoneScan() const
Returns true if channel is skipped in zone scan.
Definition opengd77base_codeplug.cc:504
virtual Frequency txFrequency() const
Returns the TX frequency of the channel.
Definition opengd77base_codeplug.cc:146
virtual void setColorCode(unsigned cc)
Sets thecolor code.
Definition opengd77base_codeplug.cc:373
virtual ~ChannelElement()
Destructor.
Definition opengd77base_codeplug.cc:89
virtual unsigned int txContactIndex() const
Returns the TX contact index.
Definition opengd77base_codeplug.cc:405
virtual void setAPRSIndex(unsigned int index)
Sets the APRS system index.
Definition opengd77base_codeplug.cc:389
virtual bool encode(const Channel *c, Context &ctx, const ErrorStack &err=ErrorStack())
Initializes this codeplug channel from the given generic configuration.
Definition opengd77base_codeplug.cc:652
virtual void setFixedPosition(const QGeoCoordinate &coordinate)
Sets the fixed position for this channel.
Definition opengd77base_codeplug.cc:246
virtual Channel * decode(Context &ctx, const ErrorStack &err=ErrorStack()) const
Constructs a generic Channel object from the codeplug channel.
Definition opengd77base_codeplug.cc:552
virtual void setGroupListIndex(unsigned index)
Sets the group-list index.
Definition opengd77base_codeplug.cc:358
virtual void setRXFrequency(const Frequency &freq)
Sets the RX frequency of the channel.
Definition opengd77base_codeplug.cc:140
virtual void setTimeSlot(DMRChannel::TimeSlot ts)
Sets the time slot of the channel.
Definition opengd77base_codeplug.cc:471
virtual OpenGD77ChannelExtension::TalkerAlias aliasTimeSlot2() const
Returns the alias transmitted on time slot 2.
Definition opengd77base_codeplug.cc:444
virtual void enableVOX(bool enable)
Enables/disables VOX.
Definition opengd77base_codeplug.cc:517
virtual Channel::Power power() const
Returns the power setting of the channel.
Definition opengd77base_codeplug.cc:172
virtual bool hasGroupList() const
Returns true if a group list is set.
Definition opengd77base_codeplug.cc:348
virtual bool isSimplex() const
Returns true if the channel is set to simplex.
Definition opengd77base_codeplug.cc:292
virtual SquelchMode squelchMode() const
Returns the squelch mode.
Definition opengd77base_codeplug.cc:523
virtual void clearAPRSIndex()
Resets the APRS system index.
Definition opengd77base_codeplug.cc:394
virtual void enablePowerSave(bool enable)
Enables/disables power-save.
Definition opengd77base_codeplug.cc:308
virtual void setTransmitTimeout(const Interval &interval)
Sets a transmit timeout.
Definition opengd77base_codeplug.cc:217
virtual void setRXTone(const SelectiveCall &code)
Sets the RX subtone.
Definition opengd77base_codeplug.cc:276
virtual void enableBeep(bool enable)
Enables/disables "the beep".
Definition opengd77base_codeplug.cc:319
virtual void setPower(Channel::Power pwr)
Sets the power setting of the channel.
Definition opengd77base_codeplug.cc:193
virtual bool link(Channel *c, Context &ctx, const ErrorStack &err=ErrorStack()) const
Links a previously constructed channel to the rest of the configuration.
Definition opengd77base_codeplug.cc:611
virtual void enableSkipScan(bool enable)
Enables/disables skipping in scan.
Definition opengd77base_codeplug.cc:499
virtual void setSquelch(SquelchMode mode, unsigned int level)
Set the squelch level and mode.
Definition opengd77base_codeplug.cc:539
virtual bool hasTXContact() const
Returns true, if the TX contact is set.
Definition opengd77base_codeplug.cc:400
virtual Mode mode() const
Returns the channel mode.
Definition opengd77base_codeplug.cc:157
virtual bool hasAPRSIndex() const
Returns true, if the APRS system index is set.
Definition opengd77base_codeplug.cc:379
Encodes the settings element for all OpenGD77 codeplugs.
Definition opengd77base_codeplug.hh:398
virtual Frequency vhfMinFrequency() const
Returns the VHF minimum frequency.
Definition opengd77base_codeplug.cc:903
virtual void setUHFMaxFrequency(const Frequency &f)
Sets the UHF maximum frequency.
Definition opengd77base_codeplug.cc:897
virtual bool encode(const Context &ctx, const ErrorStack &err=ErrorStack())
Encodes the settings.
Definition opengd77base_codeplug.cc:947
virtual bool decode(const Context &ctx, const ErrorStack &err=ErrorStack())
Decodes the settings.
Definition opengd77base_codeplug.cc:961
virtual void setVHFMinFrequency(const Frequency &f)
Sets the VHF minimum frequency.
Definition opengd77base_codeplug.cc:908
virtual Frequency uhfMinFrequency() const
Returns the UHF minimum frequency.
Definition opengd77base_codeplug.cc:882
virtual void setVHFMaxFrequency(const Frequency &f)
Sets the VHF maximum frequency.
Definition opengd77base_codeplug.cc:919
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:875
static constexpr unsigned int size()
Returns the size of the element.
Definition opengd77base_codeplug.hh:408
virtual unsigned int radioId() const
Returns the DMR ID.
Definition opengd77base_codeplug.cc:936
virtual void setCall(const QString &call)
Sets the radio callsign.
Definition opengd77base_codeplug.cc:930
virtual void setRadioId(unsigned int id)
Sets the DMR ID.
Definition opengd77base_codeplug.cc:941
virtual Frequency vhfMaxFrequency() const
Returns the VHF maximum frequency.
Definition opengd77base_codeplug.cc:914
virtual Frequency uhfMaxFrequency() const
Returns the UHF maximum frequency.
Definition opengd77base_codeplug.cc:892
virtual void setUHFMinFrequency(const Frequency &f)
Sets the UHF minimum frequency.
Definition opengd77base_codeplug.cc:887
virtual QString call() const
Returns the radio callsign.
Definition opengd77base_codeplug.cc:925
Encodes a group list bank for all OpenGD77 codeplugs.
Definition opengd77base_codeplug.hh:1114
void clear()
Clears the group list bank.
Definition opengd77base_codeplug.cc:2144
virtual void clearGroupList(unsigned int i)
Clears the i-th group list.
Definition opengd77base_codeplug.cc:2171
virtual void setGroupListContactCount(unsigned int i, unsigned int count)
Sets the number of contacts in the given group list.
Definition opengd77base_codeplug.cc:2161
static constexpr unsigned int size()
Returns the size of the element.
Definition opengd77base_codeplug.hh:1124
virtual bool link(Context &ctx, const ErrorStack &err=ErrorStack())
Links all group lists.
Definition opengd77base_codeplug.cc:2215
virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack())
Encodes all group lists.
Definition opengd77base_codeplug.cc:2178
virtual bool hasGroupList(unsigned int i) const
Returns true, if the i-th group list is encoded.
Definition opengd77base_codeplug.cc:2151
virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack())
Decodes all group lists.
Definition opengd77base_codeplug.cc:2197
virtual unsigned int groupListContactCount(unsigned int i) const
Returns the number of contacts in the given group list.
Definition opengd77base_codeplug.cc:2156
virtual GroupListElement groupList(unsigned int i) const
Returns the i-th group list.
Definition opengd77base_codeplug.cc:2166
Encodes a group list for all OpenGD77 codeplugs.
Definition opengd77base_codeplug.hh:1055
virtual bool link(RXGroupList *lst, Context &ctx, const ErrorStack &err=ErrorStack()) const
Links the group list element.
Definition opengd77base_codeplug.cc:2109
void clear()
Clears the group list.
Definition opengd77base_codeplug.cc:2042
virtual QString name() const
Returns the name of the group list.
Definition opengd77base_codeplug.cc:2049
virtual void setContactIndex(unsigned int i, unsigned int contactIdx)
Sets the i-th contact index.
Definition opengd77base_codeplug.cc:2070
virtual void setName(const QString &name)
Sets the name of the group list.
Definition opengd77base_codeplug.cc:2054
virtual bool hasContactIndex(unsigned int i) const
Returns true, if the i-th contact is set.
Definition opengd77base_codeplug.cc:2060
virtual RXGroupList * decode(Context &ctx, const ErrorStack &err=ErrorStack()) const
Decodes group list element.
Definition opengd77base_codeplug.cc:2102
virtual bool encode(RXGroupList *lst, Context &ctx, const ErrorStack &err=ErrorStack())
Encodes group list element.
Definition opengd77base_codeplug.cc:2081
virtual void clearContactIndex(unsigned int i)
Clears the i-th contact index.
Definition opengd77base_codeplug.cc:2075
virtual unsigned int contactIndex(unsigned int i) const
Returns the i-th contact index.
Definition opengd77base_codeplug.cc:2065
static constexpr unsigned int size()
Returns the size of the element.
Definition opengd77base_codeplug.hh:1065
Implements the satellite config bank.
Definition opengd77base_codeplug.hh:1286
SatelliteElement satellite(unsigned int idx)
Returns the i-th satellite.
Definition opengd77base_codeplug.cc:2479
bool encode(SatelliteDatabase *db, const ErrorStack &err=ErrorStack())
Encodes the given satellite database.
Definition opengd77base_codeplug.cc:2484
static constexpr unsigned int size()
The size of the element.
Definition opengd77base_codeplug.hh:1296
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:2471
Encodes a satellite for the OpenGD77 devices.
Definition opengd77base_codeplug.hh:1169
void writeDigit(const Offset::Bit &offset, uint8_t digit)
Writes a single digit at the given offset.
Definition opengd77base_codeplug.cc:2254
void writeFixedPoint(const Offset::Bit &offset, double value, bool sign, unsigned int dec, unsigned int frac)
Writes a fixed point value as a BCD number.
Definition opengd77base_codeplug.cc:2315
virtual void setName(const QString &name)
Sets the name of the element.
Definition opengd77base_codeplug.cc:2330
virtual void setPerigee(double arg)
Sets argument of perigee.
Definition opengd77base_codeplug.cc:2361
void setAPRSPath(const QString &path)
Sets the APRS path.
Definition opengd77base_codeplug.cc:2416
void setFMDownlink(const Frequency &f)
Sets the downlink frequency.
Definition opengd77base_codeplug.cc:2382
virtual void setMeanMotionDerivative(double dmm)
Sets the first derivative of mean motion.
Definition opengd77base_codeplug.cc:2341
virtual void setEccentricity(double ecc)
Sets eccentricity.
Definition opengd77base_codeplug.cc:2356
void setFMUplink(const Frequency &f)
Sets the uplink frequency.
Definition opengd77base_codeplug.cc:2387
virtual void setRevolutionNumber(unsigned int num)
Sets the revolution number at epoch.
Definition opengd77base_codeplug.cc:2376
virtual void setEpoch(const ::OrbitalElement::Epoch &epoch)
Sets the epoch.
Definition opengd77base_codeplug.cc:2335
virtual void setInclination(double incl)
Sets the inclination.
Definition opengd77base_codeplug.cc:2346
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:2248
virtual void setAscension(double asc)
Right ascension of the ascending node.
Definition opengd77base_codeplug.cc:2351
void setCTCSS(const SelectiveCall &call)
Sets the CTCSS tone.
Definition opengd77base_codeplug.cc:2392
void setAPRSDownlink(const Frequency &f)
Sets the APRS downlink frequency.
Definition opengd77base_codeplug.cc:2399
void writeFractional(const Offset::Bit &offset, double value, bool sign, unsigned int frac)
Writes a fixed point value as a BCD number.
Definition opengd77base_codeplug.cc:2289
void setBeacon(const Frequency &f)
Sets the beacon frequency.
Definition opengd77base_codeplug.cc:2410
virtual void setMeanMotion(double mm)
Sets the first derivative of mean motion.
Definition opengd77base_codeplug.cc:2371
virtual bool encode(const Satellite &sat, const ErrorStack &err=ErrorStack())
Encodes a satellite.
Definition opengd77base_codeplug.cc:2422
virtual void setMeanAnomaly(double ma)
Set the mean anomaly.
Definition opengd77base_codeplug.cc:2366
void writeInteger(const Offset::Bit &offset, int value, bool sign, unsigned dec)
Write a fixed digit integer value.
Definition opengd77base_codeplug.cc:2267
void setAPRSUplink(const Frequency &f)
Sets the APRS uplink frequency.
Definition opengd77base_codeplug.cc:2404
static constexpr unsigned int size()
The size of the element.
Definition opengd77base_codeplug.hh:1179
VFO Channel representation within the binary codeplug.
Definition opengd77base_codeplug.hh:335
virtual double txOffset() const
Returns the transmit frequency offset.
Definition opengd77base_codeplug.cc:848
virtual double stepSize() const
Returns the tuning step-size in kHz.
Definition opengd77base_codeplug.cc:805
virtual OffsetMode offsetMode() const
Returns the transmit frequency offset mode.
Definition opengd77base_codeplug.cc:840
void setName(const QString &name)
The VFO channel has no name.
Definition opengd77base_codeplug.cc:799
virtual void setOffsetMode(OffsetMode mode)
Sets the transmit frequency offset mode.
Definition opengd77base_codeplug.cc:844
virtual void setStepSize(double kHz)
Sets the tuning step-size in kHz.
Definition opengd77base_codeplug.cc:820
QString name() const
The VFO channel has no name.
Definition opengd77base_codeplug.cc:795
void clear()
Resets the channel.
Definition opengd77base_codeplug.cc:787
StepSize
Possible tuning step sizes.
Definition opengd77base_codeplug.hh:345
virtual void setTXOffset(double f)
Sets the transmit frequency offset in MHz.
Definition opengd77base_codeplug.cc:852
OffsetMode
Possible offset frequency modes.
Definition opengd77base_codeplug.hh:338
@ Positive
Transmit offset frequency is positive (TX above RX).
@ Off
Disables transmit frequency offset.
@ Negative
Transmit offset frequency is negative (TX below RX).
Implements the base class for all zone banks of OpenGD77 codeplugs.
Definition opengd77base_codeplug.hh:879
virtual void enable(unsigned idx, bool enabled)
Enable/disable a zone in the bank.
Definition opengd77base_codeplug.cc:1746
ZoneElement zone(unsigned int n)
Returns the n-th zone.
Definition opengd77base_codeplug.cc:1753
virtual bool link(Context &ctx, const ErrorStack &err=ErrorStack())
Links all zones.
Definition opengd77base_codeplug.cc:1798
~ZoneBankElement()
Destructor.
Definition opengd77base_codeplug.cc:1731
virtual bool isEnabled(unsigned idx) const
Returns true if the zone is enabled.
Definition opengd77base_codeplug.cc:1741
static constexpr unsigned int size()
The size of the zone element.
Definition opengd77base_codeplug.hh:891
virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack())
Decodes all zones.
Definition opengd77base_codeplug.cc:1778
virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack())
Encodes all zones.
Definition opengd77base_codeplug.cc:1759
void clear()
Resets the bank.
Definition opengd77base_codeplug.cc:1736
Represents a zone within OpenGD77 codeplugs.
Definition opengd77base_codeplug.hh:816
bool isValid() const
Returns true if the zone is valid.
Definition opengd77base_codeplug.cc:1623
virtual bool encode(const Zone *zone, Context &ctx, const ErrorStack &err=ErrorStack())
Resets this codeplug zone representation from the given generic Zone object.
Definition opengd77base_codeplug.cc:1696
void clear()
Resets the zone.
Definition opengd77base_codeplug.cc:1618
static constexpr unsigned int size()
The size of the zone element.
Definition opengd77base_codeplug.hh:827
virtual QString name() const
Returns the name of the zone.
Definition opengd77base_codeplug.cc:1628
virtual Zone * decode(const Context &ctx, const ErrorStack &err=ErrorStack()) const
Constructs a generic Zone object from this codeplug zone.
Definition opengd77base_codeplug.cc:1665
virtual bool hasMember(unsigned n) const
Returns true if a member is stored at the given index.
Definition opengd77base_codeplug.cc:1638
virtual unsigned member(unsigned n) const
Returns the n-th member index.
Definition opengd77base_codeplug.cc:1645
virtual void setMember(unsigned n, unsigned idx)
Sets the n-th member index.
Definition opengd77base_codeplug.cc:1652
virtual void clearMember(unsigned n)
Clears the n-th member index.
Definition opengd77base_codeplug.cc:1659
virtual void setName(const QString &name)
Sets the name of the zone.
Definition opengd77base_codeplug.cc:1632
virtual bool link(Zone *zone, Context &ctx, const ErrorStack &err=ErrorStack()) const
Links a previously constructed Zone object to the rest of the configuration.
Definition opengd77base_codeplug.cc:1676
Base codeplug for all OpenGD77 based firmware variants.
Definition opengd77base_codeplug.hh:16
virtual void clearZones()=0
Clears all zones.
ImageType
Possible image types.
Definition opengd77base_codeplug.hh:21
virtual void clearVFOSettings()=0
Clears the VFO settings.
virtual bool encodeGeneralSettings(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())=0
Updates the general settings from the given configuration.
virtual bool createZones(Context &ctx, const ErrorStack &err=ErrorStack())=0
Adds zones to the configuration.
bool decode(Config *config, const ErrorStack &err=ErrorStack())
Decodes a binary codeplug to the given abstract configuration config.
Definition opengd77base_codeplug.cc:2740
virtual bool encodeBootSettings(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())=0
Encodes boot settings.
virtual bool encodeContacts(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())=0
Encodes all digital contacts in the configuration into the codeplug.
static uint16_t encodeSelectiveCall(const SelectiveCall &call)
Encodes a selective call (tx/rx tone).
Definition opengd77base_codeplug.cc:31
virtual bool encodeDTMFContacts(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())=0
Encodes all DTMF contacts.
virtual bool decodeAPRSSettings(Context &ctx, const ErrorStack &err=ErrorStack())=0
Decodes the APRS settings.
virtual void clearContacts()=0
Clears all contacts in the codeplug.
virtual bool decodeElements(Context &ctx, const ErrorStack &err=ErrorStack())
Decodes the binary codeplug and stores its content in the given generic configuration using the given...
Definition opengd77base_codeplug.cc:2766
virtual bool encodeElements(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())
Encodes the given generic configuration as a binary codeplug using the given context.
Definition opengd77base_codeplug.cc:2687
virtual bool createChannels(Context &ctx, const ErrorStack &err=ErrorStack())=0
Adds all defined channels to the configuration.
virtual bool createDTMFContacts(Context &ctx, const ErrorStack &err=ErrorStack())=0
Adds all DTMF contacts to the configuration.
virtual bool linkAPRSSettings(Context &ctx, const ErrorStack &err=ErrorStack())=0
Links the APRS settings.
virtual bool linkZones(Context &ctx, const ErrorStack &err=ErrorStack())=0
Links all zones within the configuration.
virtual bool decodeDTMFSettings(Context &ctx, const ErrorStack &err=ErrorStack())=0
Decodes the DTMF settings.
virtual bool encodeGroupLists(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())=0
Encodes all group lists.
virtual bool linkChannels(Context &ctx, const ErrorStack &err=ErrorStack())=0
Links all channels.
virtual void clearDTMFSettings()=0
Clears the DTMF settings.
virtual bool createContacts(Context &ctx, const ErrorStack &err=ErrorStack())=0
Adds a digital contact to the configuration for each one in the codeplug.
bool encode(Config *config, const Flags &flags=Flags(), const ErrorStack &err=ErrorStack())
Encodes a given abstract configuration (config) to the device specific binary code-plug.
Definition opengd77base_codeplug.cc:2668
virtual void clearGeneralSettings()=0
Clears the general settings in the codeplug.
virtual void clearGroupLists()=0
Clears all group lists.
virtual void clearAPRSSettings()=0
Clears the APRS settings.
virtual bool encodeAPRSSettings(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())=0
Encodes APRS settings.
virtual bool decodeBootSettings(Context &ctx, const ErrorStack &err=ErrorStack())=0
Decodes the boot settings.
virtual bool encodeChannels(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())=0
Encode all channels.
static SelectiveCall decodeSelectiveCall(uint16_t code)
Decodes a selective call (tx/rx tone).
Definition opengd77base_codeplug.cc:53
virtual void clearBootSettings()=0
Clear boot settings.
virtual bool encodeDTMFSettings(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())=0
Encodes DTMF settings.
static double decodeAngle(uint32_t code)
Decodes an angle used to store locations.
Definition opengd77base_codeplug.cc:23
virtual bool decodeGeneralSettings(Context &ctx, const ErrorStack &err=ErrorStack())=0
Updates the given configuration from the general settings.
Config * preprocess(Config *config, const ErrorStack &err=ErrorStack()) const
Returns a prepared configuration for this particular radio.
Definition opengd77base_codeplug.cc:2649
static uint32_t encodeAngle(double degee)
Encodes an angle used to store locations.
Definition opengd77base_codeplug.cc:15
virtual bool linkGroupLists(Context &ctx, const ErrorStack &err=ErrorStack())=0
Links all group lists.
virtual bool encodeZones(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack())=0
Encodes zones.
virtual void clearDTMFContacts()=0
Clears all DTMF contacts in the codeplug.
bool postprocess(Config *config, const ErrorStack &err=ErrorStack()) const
Returns a post-processed configuration of the decoded config.
Definition opengd77base_codeplug.cc:2750
virtual void clear()
Clears and resets the complete codeplug to some default values.
Definition opengd77base_codeplug.cc:2588
virtual void clearChannels()=0
Clear all channels.
bool index(Config *config, Context &ctx, const ErrorStack &err=ErrorStack()) const
Indexes all elements of the codeplug.
Definition opengd77base_codeplug.cc:2610
virtual bool createGroupLists(Context &ctx, const ErrorStack &err=ErrorStack())=0
Creates all group lists.
Generic representation of a RX group list.
Definition rxgrouplist.hh:14
A table holding all known satellites.
Definition satellitedatabase.hh:108
Extends the OrbitalElement to include transponder information for a satellite.
Definition satellitedatabase.hh:18
Represents a zone within the generic configuration.
Definition zone.hh:15
Helper type to encode frequencies without any rounding error.
Definition frequency.hh:107
Some limits for the element.
Definition opengd77base_codeplug.hh:1366
static constexpr unsigned int magicStringLength()
Size of magic string.
Definition opengd77base_codeplug.hh:1368
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:1373
Some limits for the settings.
Definition opengd77base_codeplug.hh:796
static constexpr unsigned int lineLength()
The total number of contacts.
Definition opengd77base_codeplug.hh:798
Some limits for the channel bank.
Definition opengd77base_codeplug.hh:314
static constexpr unsigned int channelCount()
The maximum number of channels.
Definition opengd77base_codeplug.hh:316
Some internal offset within the element.
Definition opengd77base_codeplug.hh:321
Some limits for this element.
Definition opengd77base_codeplug.hh:234
static constexpr unsigned int nameLength()
The maximum length of the name.
Definition opengd77base_codeplug.hh:236
Some internal offsets within the channel element.
Definition opengd77base_codeplug.hh:241
Some limits.
Definition opengd77base_codeplug.hh:447
static constexpr unsigned int callLength()
The maximum call length.
Definition opengd77base_codeplug.hh:449
Some internal offset within the element.
Definition opengd77base_codeplug.hh:454
Some limits for the element.
Definition opengd77base_codeplug.hh:1149
static constexpr unsigned int groupListCount()
Maximum number of group lists.
Definition opengd77base_codeplug.hh:1151
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:1156
Some limits for the element.
Definition opengd77base_codeplug.hh:1093
static constexpr unsigned int contactCount()
Maximum number of contacts.
Definition opengd77base_codeplug.hh:1097
static constexpr unsigned int nameLength()
Maximum name length.
Definition opengd77base_codeplug.hh:1095
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:1102
Some limits for the satellite config.
Definition opengd77base_codeplug.hh:1307
static constexpr unsigned int satellites()
The maximum number of satellites.
Definition opengd77base_codeplug.hh:1309
Some internal offsets.
Definition opengd77base_codeplug.hh:1314
Some limits for the zone bank.
Definition opengd77base_codeplug.hh:1250
static constexpr unsigned int nameLength()
The maximum name length.
Definition opengd77base_codeplug.hh:1252
static constexpr unsigned int pathLength()
Maximum length of the APRS path.
Definition opengd77base_codeplug.hh:1254
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:1259
Some limits for the zone bank.
Definition opengd77base_codeplug.hh:915
static constexpr unsigned int zoneCount()
The maximum number of zones in this bank.
Definition opengd77base_codeplug.hh:917
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:922
Some limits for zone elements.
Definition opengd77base_codeplug.hh:858
static constexpr unsigned int nameLength()
The maximum length of the zone name.
Definition opengd77base_codeplug.hh:860
static constexpr unsigned int memberCount()
The maximum number of members.
Definition opengd77base_codeplug.hh:862
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:867
Encodes a selective call.
Definition signaling.hh:13