libdrmconf 0.13.3
A library to program DMR radios.
Loading...
Searching...
No Matches
opengd77base_codeplug.hh
1#ifndef OPENGD77BASE_CODEPLUG_HH
2#define OPENGD77BASE_CODEPLUG_HH
3
4#include "channel.hh"
5#include "codeplug.hh"
6#include "gpssystem.hh"
7#include "contact.hh"
8#include "zone.hh"
9#include "satellitedatabase.hh"
10
11#include <QGeoCoordinate>
12
16{
17 Q_OBJECT
18
19public:
21 enum ImageType { EEPROM = 0, FLASH = 1 };
22
23public:
25 static uint32_t encodeAngle(double degee);
27 static double decodeAngle(uint32_t code);
28
30 static uint16_t encodeSelectiveCall(const SelectiveCall &call);
32 static SelectiveCall decodeSelectiveCall(uint16_t code);
33
34public:
37 {
38 public:
40 enum Mode {
42 MODE_DIGITAL = 1
43 };
44
46 enum class Alias {
47 None = 0, APRS = 1, Text = 2, Both = 3
48 };
49
51 enum class SquelchMode {
52 Global, Open, Normal, Closed
53 };
54
55 protected:
57 ChannelElement(uint8_t *ptr, size_t size);
58
59 public:
61 explicit ChannelElement(uint8_t *ptr);
63 virtual ~ChannelElement();
64
66 static constexpr unsigned int size() { return 0x0038; }
67
69 virtual void clear();
70
72 virtual QString name() const;
74 virtual void setName(const QString &n);
75
77 virtual Frequency rxFrequency() const;
79 virtual void setRXFrequency(const Frequency &freq);
81 virtual Frequency txFrequency() const;
83 virtual void setTXFrequency(const Frequency &freq);
84
86 virtual Mode mode() const;
88 virtual void setMode(Mode mode);
89
91 virtual bool globalPower() const;
93 virtual Channel::Power power() const;
95 virtual void setPower(Channel::Power pwr);
97 virtual void clearPower();
98
101 virtual Interval transmitTimeout() const;
104 virtual void setTransmitTimeout(const Interval &interval);
105
107 virtual bool hasFixedPosition() const;
109 virtual QGeoCoordinate fixedPosition() const;
111 virtual void setFixedPosition(const QGeoCoordinate &coordinate);
113 virtual void clearFixedPosition();
114
116 virtual SelectiveCall rxTone() const;
118 virtual void setRXTone(const SelectiveCall &code);
120 virtual SelectiveCall txTone() const;
122 virtual void setTXTone(const SelectiveCall &code);
123
125 virtual bool isSimplex() const;
127 virtual void enableSimplex(bool enable);
128
130 virtual bool powerSave() const;
132 virtual void enablePowerSave(bool enable);
133
135 virtual bool beep() const;
137 virtual void enableBeep(bool enable);
138
140 virtual bool hasDMRId() const;
142 virtual unsigned int dmrId() const;
144 virtual void setDMRId(unsigned int id);
146 virtual void clearDMRId();
147
149 virtual bool hasGroupList() const;
151 virtual unsigned groupListIndex() const;
153 virtual void setGroupListIndex(unsigned index);
155 virtual void clearGroupListIndex();
156
158 virtual unsigned colorCode() const;
160 virtual void setColorCode(unsigned cc);
161
163 virtual bool hasAPRSIndex() const;
165 virtual unsigned int aprsIndex() const;
167 virtual void setAPRSIndex(unsigned int index);
169 virtual void clearAPRSIndex();
170
172 virtual bool hasTXContact() const;
174 virtual unsigned int txContactIndex() const;
176 virtual void setTXContactIndex(unsigned int index);
178 virtual void clearTXContact();
179
188
190 virtual DMRChannel::TimeSlot timeSlot() const;
192 virtual void setTimeSlot(DMRChannel::TimeSlot ts);
193
195 virtual FMChannel::Bandwidth bandwidth() const;
197 virtual void setBandwidth(FMChannel::Bandwidth bw);
198
200 virtual bool rxOnly() const;
202 virtual void enableRXOnly(bool enable);
203
205 virtual bool skipScan() const;
207 virtual void enableSkipScan(bool enable);
209 virtual bool skipZoneScan() const;
211 virtual void enableSkipZoneScan(bool enable);
212
214 virtual bool vox() const;
216 virtual void enableVOX(bool enable);
217
219 virtual SquelchMode squelchMode() const;
221 virtual unsigned int squelchLevel() const;
223 virtual void setSquelch(SquelchMode mode, unsigned int level);
224
226 virtual Channel *decode(Context &ctx, const ErrorStack &err=ErrorStack()) const;
228 virtual bool link(Channel *c, Context &ctx, const ErrorStack &err=ErrorStack()) const;
230 virtual bool encode(const Channel *c, Context &ctx, const ErrorStack &err=ErrorStack());
231
232 public:
234 struct Limit {
236 static constexpr unsigned int nameLength() { return 16; }
237 };
238
239 protected:
241 struct Offset: public Element::Offset {
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; }
267 static constexpr Bit aliasTimeSlot2() { return { 0x030, 2}; }
268 static constexpr Bit aliasTimeSlot1() { return { 0x030, 0}; }
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; }
277 };
278 };
279
280
286 {
287 protected:
289 ChannelBankElement(uint8_t *ptr, unsigned size);
290
291 public:
293 explicit ChannelBankElement(uint8_t *ptr);
295 virtual ~ChannelBankElement();
296
298 static constexpr unsigned int size() { return 0x1c10; }
299
301 void clear();
302
304 virtual bool isEnabled(unsigned idx) const ;
306 virtual void enable(unsigned idx, bool enabled);
308 virtual uint8_t *get(unsigned idx) const;
310 ChannelElement channel(unsigned int n);
311
312 public:
314 struct Limit {
316 static constexpr unsigned int channelCount() { return 128; }
317 };
318
319 protected:
321 struct Offset {
323 static constexpr unsigned int bitmask() { return 0x0000; }
324 static constexpr unsigned int channels() { return 0x0010; }
326 };
327 };
328
329
335 {
336 public:
338 enum class OffsetMode {
339 Off = 0,
340 Positive = 1,
341 Negative = 2
342 };
343
345 enum class StepSize {
346 SS2_5kHz = 0,
347 SS5kHz = 1,
348 SS6_25kHz = 2,
349 SS10kHz = 3,
350 SS12_5kHz = 4,
351 SS20kHz = 5,
352 SS30kHz = 6,
353 SS50kHz = 7
354 };
355
356 protected:
358 VFOChannelElement(uint8_t *ptr, unsigned size);
359
360 public:
362 explicit VFOChannelElement(uint8_t *ptr);
363
364 void clear();
365
367 QString name() const;
369 void setName(const QString &name);
370
372 virtual double stepSize() const;
374 virtual void setStepSize(double kHz);
375
377 virtual OffsetMode offsetMode() const;
379 virtual double txOffset() const;
381 virtual void setTXOffset(double f);
383 virtual void setOffsetMode(OffsetMode mode);
384
385 protected:
387 struct Offset: public ChannelElement::Offset {
388 static constexpr Bit stepSize() { return {0x0036, 4} ; }
389 static constexpr Bit offsetMode() { return {0x0036, 2} ; }
390 static constexpr unsigned int txOffset() { return 0x0034; }
391 };
393 };
394
395
398 {
399 protected:
401 GeneralSettingsElement(uint8_t *ptr, size_t size);
402
403 public:
405 GeneralSettingsElement(uint8_t *ptr);
406
408 static constexpr unsigned int size() { return 0x0090; }
409
410 void clear();
411
413 virtual Frequency uhfMinFrequency() const;
415 virtual void setUHFMinFrequency(const Frequency &f);
417 virtual Frequency uhfMaxFrequency() const;
419 virtual void setUHFMaxFrequency(const Frequency &f);
420
422 virtual Frequency vhfMinFrequency() const;
424 virtual void setVHFMinFrequency(const Frequency &f);
426 virtual Frequency vhfMaxFrequency() const;
428 virtual void setVHFMaxFrequency(const Frequency &f);
429
431 virtual QString call() const;
433 virtual void setCall(const QString &call);
434
436 virtual unsigned int radioId() const;
438 virtual void setRadioId(unsigned int id);
439
441 virtual bool encode(const Context &ctx, const ErrorStack &err = ErrorStack());
443 virtual bool decode(const Context &ctx, const ErrorStack &err = ErrorStack());
444
445 public:
447 struct Limit: public Element::Limit {
449 static constexpr unsigned int callLength() { return 8; }
450 };
451
452 protected:
454 struct Offset: public Element::Offset {
456 static constexpr unsigned int uhfMinFrequency() { return 0x0000; }
457 static constexpr unsigned int uhfMaxFrequency() { return 0x0002; }
458 static constexpr unsigned int vhfMinFrequency() { return 0x0004; }
459 static constexpr unsigned int vhfMaxFrequency() { return 0x0006; }
460 static constexpr unsigned int call() { return 0x0060; }
461 static constexpr unsigned int dmrId() { return 0x0068; }
463 };
464 };
465
466
469 {
470 public:
472 enum class BaudRate {
473 Baud300 = 1, Baud1200 = 0
474 };
475
477 enum class PositionPrecision {
478 Max = 0,
479 Mask1_8sec = 1,
480 Mask3_6sec = 2,
481 Mask18sec = 3,
482 Mask36sec = 4,
483 Mask3min = 5,
484 Mask6min = 6,
485 Mask30min = 7
486 };
487
488 public:
490 explicit APRSSettingsElement(uint8_t *ptr);
491
492 protected:
494 APRSSettingsElement(uint8_t *ptr, size_t size);
495
496 public:
498 static constexpr unsigned int size() { return 0x40; }
499
501 void clear();
502
504 virtual bool isValid() const;
505
507 virtual QString name() const;
509 virtual void setName(const QString &name);
510
512 virtual unsigned int sourceSSID() const;
514 virtual void setSourceSSID(unsigned int ssid);
515
517 virtual bool hasFixedPosition() const;
519 virtual QGeoCoordinate fixedPosition() const;
521 virtual void setFixedPosition(const QGeoCoordinate &coor);
523 virtual void clearFixedPosition();
524
526 virtual PositionPrecision positionPrecision() const;
528 virtual void setPositionPrecision(PositionPrecision prec);
529
531 virtual bool hasVia1() const;
533 virtual QString via1Call() const;
535 virtual unsigned int via1SSID() const;
537 virtual void setVia1(const QString &call, unsigned int ssid);
539 virtual void clearVia1();
540
542 virtual bool hasVia2() const;
544 virtual QString via2Call() const;
546 virtual unsigned int via2SSID() const;
548 virtual void setVia2(const QString &call, unsigned int ssid);
550 virtual void clearVia2();
551
553 virtual APRSSystem::Icon icon() const;
555 virtual void setIcon(APRSSystem::Icon icon);
556
558 virtual QString comment() const;
560 virtual void setComment(const QString &text);
561
563 virtual BaudRate baudRate() const;
565 virtual void setBaudRate(BaudRate rate);
566
567 Frequency fmFrequency() const;
568 void setFMFrequency(Frequency f);
569
571 virtual bool encode(const APRSSystem *system, const Context &ctx, const ErrorStack &err=ErrorStack());
573 virtual APRSSystem *decode(const Context &ctx, const ErrorStack &err=ErrorStack()) const;
575 virtual bool link(APRSSystem *system, const Context &ctx, const ErrorStack &err=ErrorStack());
576
577 public:
579 struct Limit: public Element::Limit {
581 static constexpr unsigned int nameLength() { return 8; }
583 static constexpr unsigned int commentLength() { return 23; }
584 };
585
586 protected:
588 struct Offset: public Element::Offset
589 {
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; }
603 static constexpr Bit positionPrecision() { return { 0x003d, 4}; }
604 static constexpr Bit useFixedPosition() { return { 0x003d, 1}; }
605 static constexpr Bit baudRate() { return { 0x003d, 0}; }
606 static constexpr unsigned int unknownBytes() { return 0x003e; }
608 };
609 };
610
611
614 {
615 public:
617 explicit APRSSettingsBankElement(uint8_t *ptr);
618
619 protected:
621 APRSSettingsBankElement(uint8_t *ptr, size_t size);
622
623 public:
625 static constexpr unsigned int size() { return 0x40; }
626
628 void clear();
629
631 APRSSettingsElement system(unsigned int idx) const;
632
634 virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack());
636 virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack());
638 virtual bool link(Context &ctx, const ErrorStack &err=ErrorStack());
639
640 public:
642 struct Limit: public Element::Limit {
644 static constexpr unsigned int systems() { return 8; }
645 };
646
647 public:
649 struct Offset: public Element::Offset {
650 static constexpr unsigned int systems() { return 0x0000; }
651 static constexpr unsigned int betweenSystems() { return APRSSettingsElement::size(); }
652 };
654 };
655
656
660 {
661 protected:
663 DTMFContactElement(uint8_t *ptr, size_t size);
664
665 public:
667 explicit DTMFContactElement(uint8_t *ptr);
668
670 static constexpr unsigned int size() { return 0x0020; }
671
672 void clear();
673 bool isValid() const;
674
676 virtual QString name() const;
678 virtual void setName(const QString &name);
679
681 virtual QString number() const;
683 virtual void setNumber(const QString &number);
684
686 virtual bool encode(const DTMFContact *contact, const Context &ctx, const ErrorStack &err=ErrorStack());
688 virtual DTMFContact *decode(const Context &ctx, const ErrorStack &err=ErrorStack());
689
690 public:
692 struct Limit: public Element::Limit {
694 static constexpr unsigned int nameLength() { return 16; }
696 static constexpr unsigned int numberLength() { return 16; }
697 };
698
699 protected:
701 struct Offset: public Element::Offset {
702 static constexpr unsigned int name() { return 0x0000; }
703 static constexpr unsigned int number() { return 0x0010; }
704 };
706 };
707
708
711 {
712 protected:
714 DTMFContactBankElement(uint8_t *ptr, size_t size);
715
716 public:
718 DTMFContactBankElement(uint8_t *ptr);
719
721 static constexpr unsigned int size() { return Limit::contacts()*DTMFContactElement::size(); }
722
723 void clear();
724
726 DTMFContactElement contact(unsigned int n) const;
727
729 virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack());
731 virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack());
732
733 public:
735 struct Limit: public Element::Limit {
737 static constexpr unsigned int contacts() { return 64; }
738 };
739
740 public:
742 struct Offset: public Element::Offset {
743 static constexpr unsigned int contacts() { return 0x0000; }
744 static constexpr unsigned int betweenContacts() { return DTMFContactElement::size(); }
745 };
747 };
748
749
752 {
753 protected:
755 BootSettingsElement(uint8_t *ptr, unsigned size);
756
757 public:
759 explicit BootSettingsElement(uint8_t *ptr);
761 virtual ~BootSettingsElement();
762
764 void clear();
765
767 virtual bool bootText() const;
769 virtual void enableBootText(bool enable);
770
772 virtual bool bootPasswordEnabled() const;
774 virtual unsigned bootPassword() const;
776 virtual void setBootPassword(unsigned passwd);
778 virtual void clearBootPassword();
779
781 virtual QString line1() const;
783 virtual void setLine1(const QString &text);
785 virtual QString line2() const;
787 virtual void setLine2(const QString &text);
788
790 virtual bool encode(const Context &ctx, const ErrorStack &err = ErrorStack());
792 virtual bool decode(Context &ctx, const ErrorStack &err = ErrorStack());
793
794 public:
796 struct Limit: public Element::Limit {
798 static constexpr unsigned int lineLength() { return 16; }
799 };
800
801 public:
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; }
809 };
811 };
812
813
815 class ZoneElement: public Element
816 {
817 protected:
819 ZoneElement(uint8_t *ptr, unsigned size);
820
821 public:
823 explicit ZoneElement(uint8_t *ptr);
824 virtual ~ZoneElement();
825
827 static constexpr unsigned int size() { return 0x00b0; }
828
830 void clear();
832 bool isValid() const;
833
835 virtual QString name() const;
837 virtual void setName(const QString &name);
838
840 virtual bool hasMember(unsigned n) const;
842 virtual unsigned member(unsigned n) const;
844 virtual void setMember(unsigned n, unsigned idx);
846 virtual void clearMember(unsigned n);
847
849 virtual bool encode(const Zone *zone, Context &ctx, const ErrorStack &err=ErrorStack());
851 virtual Zone *decode(const Context &ctx, const ErrorStack &err=ErrorStack()) const;
854 virtual bool link(Zone *zone, Context &ctx, const ErrorStack &err=ErrorStack()) const;
855
856 public:
858 struct Limit: public Element::Limit {
860 static constexpr unsigned int nameLength() { return 16; }
862 static constexpr unsigned int memberCount() { return 80; }
863 };
864
865 protected:
867 struct Offset: public Element::Offset {
869 static constexpr unsigned int name() { return 0x0000; }
870 static constexpr unsigned int channels() { return 0x0010; }
871 static constexpr unsigned int betweenChannels() { return 0x0002; }
873 };
874 };
875
876
879 {
880 protected:
882 ZoneBankElement(uint8_t *ptr, unsigned size);
883
884 public:
886 explicit ZoneBankElement(uint8_t *ptr);
889
891 static constexpr unsigned int size() {
892 return 0x0020 + Limit::zoneCount()*ZoneElement::size();
893 }
894
896 void clear();
897
899 virtual bool isEnabled(unsigned idx) const ;
901 virtual void enable(unsigned idx, bool enabled);
902
904 ZoneElement zone(unsigned int n);
905
907 virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack());
909 virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack());
911 virtual bool link(Context &ctx, const ErrorStack &err=ErrorStack());
912
913 public:
915 struct Limit: public Element::Limit {
917 static constexpr unsigned int zoneCount() { return 68; }
918 };
919
920 protected:
922 struct Offset: public Element::Offset {
924 static constexpr unsigned int bitmap() { return 0x0000; }
925 static constexpr unsigned int zones() { return 0x0020; }
926 static constexpr unsigned int betweenZones() { return ZoneElement::size(); }
928 };
929 };
930
931
934 {
935 public:
938 enum class TimeSlotOverride {
939 None = 0x01,
940 TS1 = 0x00,
941 TS2 = 0x02
942 };
943
944 protected:
946 ContactElement(uint8_t *ptr, unsigned size);
947
948 public:
950 explicit ContactElement(uint8_t *ptr);
952 virtual ~ContactElement();
953
955 static constexpr unsigned int size() { return 0x0018; }
956
958 void clear();
959
961 bool isValid() const;
962
964 virtual QString name() const;
966 virtual void setName(const QString name);
967
969 virtual unsigned number() const;
971 virtual void setNumber(unsigned id);
972
974 virtual DMRContact::Type type() const;
976 virtual void setType(DMRContact::Type type);
977
979 virtual TimeSlotOverride timeSlotOverride() const;
981 virtual void setTimeSlotOverride(TimeSlotOverride ts);
982
984 virtual DMRContact *decode(Context &ctx, const ErrorStack &err=ErrorStack()) const;
986 virtual bool encode(const DMRContact *obj, Context &ctx, const ErrorStack &err=ErrorStack());
987
988 public:
990 struct Limit {
992 static constexpr unsigned int nameLength() { return 16; }
993 };
994
995 protected:
997 struct Offset {
999 static constexpr unsigned int name() { return 0x0000; }
1000 static constexpr unsigned int number() { return 0x0010; }
1001 static constexpr unsigned int type() { return 0x0014; }
1002 static constexpr unsigned int timeSlotOverride() { return 0x0017; }
1004 };
1005 };
1006
1007
1010 {
1011 protected:
1013 ContactBankElement(uint8_t *ptr, size_t size);
1014
1015 public:
1017 ContactBankElement(uint8_t *ptr);
1018
1020 static constexpr unsigned int size() {
1022 }
1023
1025 void clear();
1026
1028 ContactElement contact(unsigned int idx) const;
1029
1031 virtual bool encode(Context &ctx, const ErrorStack &err = ErrorStack());
1033 virtual bool decode(Context &ctx, const ErrorStack &err = ErrorStack());
1034
1035 public:
1037 struct Limit {
1039 static constexpr unsigned int contactCount() { return 1024; }
1040 };
1041
1042 protected:
1044 struct Offset {
1046 static constexpr unsigned int contacts() { return 0x0000; }
1047 static constexpr unsigned int betweenContacts() { return ContactElement::size(); }
1048 // @endcond
1049 };
1050 };
1051
1052
1055 {
1056 protected:
1058 GroupListElement(uint8_t *ptr, size_t size);
1059
1060 public:
1062 GroupListElement(uint8_t *ptr);
1063
1065 static constexpr unsigned int size() { return 0x0050; }
1066
1068 void clear();
1069
1071 virtual QString name() const;
1073 virtual void setName(const QString &name);
1074
1076 virtual bool hasContactIndex(unsigned int i) const;
1078 virtual unsigned int contactIndex(unsigned int i) const;
1080 virtual void setContactIndex(unsigned int i, unsigned int contactIdx);
1082 virtual void clearContactIndex(unsigned int i);
1083
1085 virtual bool encode(RXGroupList *lst, Context &ctx, const ErrorStack &err=ErrorStack());
1087 virtual RXGroupList *decode(Context &ctx, const ErrorStack &err=ErrorStack()) const;
1089 virtual bool link(RXGroupList *lst, Context &ctx, const ErrorStack &err=ErrorStack()) const;
1090
1091 public:
1093 struct Limit {
1095 static constexpr unsigned int nameLength() { return 15; }
1097 static constexpr unsigned int contactCount() { return 32; }
1098 };
1099
1100 protected:
1102 struct Offset {
1104 static constexpr unsigned int name() { return 0x0000; }
1105 static constexpr unsigned int contacts() { return 0x0010; }
1106 static constexpr unsigned int betweenContacts() { return 0x0002; }
1107 // @endcond
1108 };
1109 };
1110
1111
1114 {
1115 protected:
1117 GroupListBankElement(uint8_t *ptr, size_t size);
1118
1119 public:
1121 GroupListBankElement(uint8_t *ptr);
1122
1124 static constexpr unsigned int size() { return 0x1840; }
1125
1127 void clear();
1128
1130 virtual bool hasGroupList(unsigned int i) const;
1132 virtual unsigned int groupListContactCount(unsigned int i) const;
1134 virtual void setGroupListContactCount(unsigned int i, unsigned int count);
1136 virtual GroupListElement groupList(unsigned int i) const;
1138 virtual void clearGroupList(unsigned int i);
1139
1141 virtual bool encode(Context &ctx, const ErrorStack &err = ErrorStack());
1143 virtual bool decode(Context &ctx, const ErrorStack &err = ErrorStack());
1145 virtual bool link(Context &ctx, const ErrorStack &err = ErrorStack());
1146
1147 public:
1149 struct Limit {
1151 static constexpr unsigned int groupListCount() { return 76; }
1152 };
1153
1154 protected:
1156 struct Offset {
1158 static constexpr unsigned int length() { return 0x0000; }
1159 static constexpr unsigned int groupLists() { return 0x0080; }
1160 static constexpr unsigned int betweenGroupLists() { return GroupListElement::size(); }
1161 // @endcond
1162 };
1163 };
1164
1165
1169 {
1170 protected:
1172 SatelliteElement(uint8_t *ptr, size_t size);
1173
1174 public:
1176 SatelliteElement(uint8_t *ptr);
1177
1179 static constexpr unsigned int size() { return 0x0064; }
1180
1181 void clear();
1182
1184 virtual void setName(const QString &name);
1185
1187 virtual void setEpoch(const ::OrbitalElement::Epoch &epoch);
1189 virtual void setMeanMotion(double mm);
1191 virtual void setMeanMotionDerivative(double dmm);
1193 virtual void setInclination(double incl);
1195 virtual void setAscension(double asc);
1197 virtual void setEccentricity(double ecc);
1199 virtual void setPerigee(double arg);
1201 virtual void setMeanAnomaly(double ma);
1203 virtual void setRevolutionNumber(unsigned int num);
1204
1206 void setFMDownlink(const Frequency &f);
1208 void setFMUplink(const Frequency &f);
1210 void setCTCSS(const SelectiveCall &call);
1212 void setAPRSDownlink(const Frequency &f);
1214 void setAPRSUplink(const Frequency &f);
1215
1217 void setBeacon(const Frequency &f);
1218
1220 void setAPRSPath(const QString &path);
1221
1223 virtual bool encode(const Satellite &sat, const ErrorStack &err = ErrorStack());
1224
1225 protected:
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);
1247
1248 public:
1250 struct Limit: public Element::Limit {
1252 static constexpr unsigned int nameLength() { return 8; }
1254 static constexpr unsigned int pathLength() { return 24; }
1255 };
1256
1257 protected:
1259 struct Offset: public Element::Offset {
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; }
1280 };
1281 };
1282
1283
1286 {
1287 protected:
1289 SatelliteBankElement(uint8_t *ptr, size_t size);
1290
1291 public:
1293 SatelliteBankElement(uint8_t *ptr);
1294
1296 static constexpr unsigned int size() { return 0x09e0; }
1297
1298 void clear();
1299
1301 SatelliteElement satellite(unsigned int idx);
1303 bool encode(SatelliteDatabase *db, const ErrorStack &err=ErrorStack());
1304
1305 public:
1307 struct Limit {
1309 static constexpr unsigned int satellites() { return 25; }
1310 };
1311
1312 protected:
1314 struct Offset {
1316 static constexpr unsigned int blockId() { return 0x0000; }
1317 static constexpr unsigned int segmentSize() { return 0x0004; }
1318 static constexpr unsigned int satellites() { return 0x0008; }
1319 static constexpr unsigned int betweenSatellites() { return SatelliteElement::size(); }
1321 };
1322 };
1323
1324
1325
1330 {
1331 public:
1332 enum Settings {
1333 BootImage = 1,
1334 BootMelody = 2,
1335 SatelliteOrbitals = 3,
1336 LightTheme = 4,
1337 DarkTheme = 5
1338 };
1339
1340 protected:
1342 AdditionalSettingsElement(uint8_t *ptr, size_t size);
1343
1344 public:
1346 AdditionalSettingsElement(uint8_t *ptr);
1347
1349 static constexpr unsigned int size() { return 0x11a0; }
1350
1351 bool isValid() const;
1352 void clear();
1353
1355 virtual QString magic() const;
1357 virtual unsigned int version() const;
1358
1360 virtual bool hasSettings(Settings set) const;
1362 virtual SatelliteBankElement satellites() const;
1363
1364 public:
1366 struct Limit {
1368 static constexpr unsigned int magicStringLength() { return 8; }
1369 };
1370
1371 protected:
1373 struct Offset {
1375 static constexpr unsigned int magicString() { return 0x0000; }
1376 static constexpr unsigned int versionNumber() { return 0x0008; }
1377 static constexpr unsigned int blocks() { return 0x000c; }
1378 // @endcond
1379 };
1380 };
1381
1382
1383protected:
1385 explicit OpenGD77BaseCodeplug(QObject *parent = nullptr);
1386
1387public:
1389 virtual void clear();
1390
1391 bool index(Config *config, Context &ctx, const ErrorStack &err=ErrorStack()) const;
1392
1393 bool decode(Config *config, const ErrorStack &err=ErrorStack());
1394 bool postprocess(Config *config, const ErrorStack &err=ErrorStack()) const;
1395
1396 Config *preprocess(Config *config, const ErrorStack &err=ErrorStack()) const;
1397 bool encode(Config *config, const Flags &flags = Flags(), const ErrorStack &err=ErrorStack());
1398
1399public:
1402 virtual bool decodeElements(Context &ctx, const ErrorStack &err=ErrorStack());
1404 virtual bool encodeElements(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack());
1405
1407 virtual void clearGeneralSettings() = 0;
1409 virtual bool encodeGeneralSettings(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1411 virtual bool decodeGeneralSettings(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1412
1414 virtual void clearDTMFSettings() = 0;
1416 virtual bool encodeDTMFSettings(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1418 virtual bool decodeDTMFSettings(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1419
1421 virtual void clearAPRSSettings() = 0;
1423 virtual bool encodeAPRSSettings(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1425 virtual bool decodeAPRSSettings(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1427 virtual bool linkAPRSSettings(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1428
1430 virtual void clearDTMFContacts() = 0;
1432 virtual bool encodeDTMFContacts(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1434 virtual bool createDTMFContacts(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1435
1437 virtual void clearChannels() = 0;
1439 virtual bool encodeChannels(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1441 virtual bool createChannels(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1443 virtual bool linkChannels(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1444
1446 virtual void clearBootSettings() = 0;
1448 virtual bool encodeBootSettings(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1450 virtual bool decodeBootSettings(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1451
1453 virtual void clearVFOSettings() = 0;
1454
1456 virtual void clearZones() = 0;
1458 virtual bool encodeZones(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1460 virtual bool createZones(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1462 virtual bool linkZones(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1463
1465 virtual void clearContacts() = 0;
1467 virtual bool encodeContacts(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1469 virtual bool createContacts(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1470
1472 virtual void clearGroupLists() = 0;
1474 virtual bool encodeGroupLists(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1476 virtual bool createGroupLists(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1478 virtual bool linkGroupLists(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1479};
1480
1481#endif // OPENGD77BASE_CODEPLUG_HH
Represents an APRS system within the generic config.
Definition gpssystem.hh:134
Icon
All implemented APRS icons.
Definition gpssystem.hh:166
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
Represents a digital contact, that is a DMR number.
Definition contact.hh:141
Type
Possible call types for a contact.
Definition contact.hh:155
Represents an analog contact, that is a DTMF number.
Definition contact.hh:89
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
APRS System bank.
Definition opengd77base_codeplug.hh:614
virtual bool link(Context &ctx, const ErrorStack &err=ErrorStack())
Links all FM APRS systems.
Definition opengd77base_codeplug.cc:1329
void clear()
Clears the bank.
Definition opengd77base_codeplug.cc:1281
APRSSettingsElement system(unsigned int idx) const
Returns the n-th APRS system.
Definition opengd77base_codeplug.cc:1288
static constexpr unsigned int size()
The size of the channel bank.
Definition opengd77base_codeplug.hh:625
virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack())
Encodes all FM APRS systems.
Definition opengd77base_codeplug.cc:1294
virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack())
Decodes all FM APRS systems.
Definition opengd77base_codeplug.cc:1312
APRS system for OpenGD77 devices.
Definition opengd77base_codeplug.hh:469
virtual bool link(APRSSystem *system, const Context &ctx, const ErrorStack &err=ErrorStack())
Links the ARPS settings.
Definition opengd77base_codeplug.cc:1234
virtual bool isValid() const
Returns true, if the system is valid.
Definition opengd77base_codeplug.cc:1003
BaudRate
Possible APRS baud rates.
Definition opengd77base_codeplug.hh:472
virtual QGeoCoordinate fixedPosition() const
Returns the fixed position.
Definition opengd77base_codeplug.cc:1036
virtual void clearVia2()
Clears the second via node.
Definition opengd77base_codeplug.cc:1114
virtual void setName(const QString &name)
Sets the name of the system.
Definition opengd77base_codeplug.cc:1014
virtual APRSSystem::Icon icon() const
Returns the icon.
Definition opengd77base_codeplug.cc:1120
virtual void setPositionPrecision(PositionPrecision prec)
Sets the position reporting precision in degrees.
Definition opengd77base_codeplug.cc:1060
virtual bool encode(const APRSSystem *system, const Context &ctx, const ErrorStack &err=ErrorStack())
Encodes the APRS settings.
Definition opengd77base_codeplug.cc:1159
virtual QString comment() const
Returns the comment text.
Definition opengd77base_codeplug.cc:1130
virtual bool hasVia1() const
Returns true, if the first via node is set.
Definition opengd77base_codeplug.cc:1066
PositionPrecision
Possible position precisions.
Definition opengd77base_codeplug.hh:477
virtual void setVia2(const QString &call, unsigned int ssid)
Sets the second via node.
Definition opengd77base_codeplug.cc:1108
virtual void setComment(const QString &text)
Sets the comment text.
Definition opengd77base_codeplug.cc:1134
virtual BaudRate baudRate() const
Returns the baud-rate.
Definition opengd77base_codeplug.cc:1139
virtual unsigned int sourceSSID() const
Returns the source SSID.
Definition opengd77base_codeplug.cc:1020
virtual PositionPrecision positionPrecision() const
Returns the posiiton reporting precision.
Definition opengd77base_codeplug.cc:1055
virtual APRSSystem * decode(const Context &ctx, const ErrorStack &err=ErrorStack()) const
Decodes some APRS settings.
Definition opengd77base_codeplug.cc:1204
virtual bool hasVia2() const
Returns true, if the second via node is set.
Definition opengd77base_codeplug.cc:1093
virtual void setIcon(APRSSystem::Icon icon)
Sets the icon.
Definition opengd77base_codeplug.cc:1124
virtual unsigned int via1SSID() const
Returns the first via node ssid.
Definition opengd77base_codeplug.cc:1076
void clear()
Clears the bank.
Definition opengd77base_codeplug.cc:990
virtual void setSourceSSID(unsigned int ssid)
Sets the source SSID.
Definition opengd77base_codeplug.cc:1025
static constexpr unsigned int size()
The size of the channel bank.
Definition opengd77base_codeplug.hh:498
virtual void clearFixedPosition()
Resets the fixed position.
Definition opengd77base_codeplug.cc:1050
virtual void setBaudRate(BaudRate rate)
Sets the baud rate.
Definition opengd77base_codeplug.cc:1143
virtual unsigned int via2SSID() const
Returns the second via node ssid.
Definition opengd77base_codeplug.cc:1103
virtual void setFixedPosition(const QGeoCoordinate &coor)
Sets the fixed position.
Definition opengd77base_codeplug.cc:1043
virtual bool hasFixedPosition() const
Returns true, if a fixed position is send.
Definition opengd77base_codeplug.cc:1031
virtual QString via1Call() const
Returns the first via node call.
Definition opengd77base_codeplug.cc:1071
virtual void clearVia1()
Clears the first via node.
Definition opengd77base_codeplug.cc:1087
virtual QString name() const
Returns the name of the system.
Definition opengd77base_codeplug.cc:1009
virtual QString via2Call() const
Returns the second via node call.
Definition opengd77base_codeplug.cc:1098
virtual void setVia1(const QString &call, unsigned int ssid)
Sets the first via node.
Definition opengd77base_codeplug.cc:1081
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 contact bank.
Definition opengd77base_codeplug.hh:1010
static constexpr unsigned int size()
The size of the element.
Definition opengd77base_codeplug.hh:1020
virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack())
Decodes all DMR contacts.
Definition opengd77base_codeplug.cc:2008
void clear()
Resets the contact.
Definition opengd77base_codeplug.cc:1977
virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack())
Encodes all DMR contacts.
Definition opengd77base_codeplug.cc:1990
ContactElement contact(unsigned int idx) const
Returns the i-th contact element.
Definition opengd77base_codeplug.cc:1984
Implements digital contacts in OpenGD77 codeplugs.
Definition opengd77base_codeplug.hh:934
static constexpr unsigned int size()
The size of the contact element.
Definition opengd77base_codeplug.hh:955
virtual void setName(const QString name)
Sets the name of the contact.
Definition opengd77base_codeplug.cc:1857
void clear()
Resets the contact.
Definition opengd77base_codeplug.cc:1837
virtual void setNumber(unsigned id)
Sets the DMR number of the contact.
Definition opengd77base_codeplug.cc:1868
virtual DMRContact::Type type() const
Returns the call type.
Definition opengd77base_codeplug.cc:1874
virtual void setTimeSlotOverride(TimeSlotOverride ts)
Sets the time slot override.
Definition opengd77base_codeplug.cc:1899
virtual bool encode(const DMRContact *obj, Context &ctx, const ErrorStack &err=ErrorStack())
Resets this codeplug contact from the given DigitalContact.
Definition opengd77base_codeplug.cc:1934
virtual unsigned number() const
Returns the DMR number of the contact.
Definition opengd77base_codeplug.cc:1863
virtual ~ContactElement()
Destructor.
Definition opengd77base_codeplug.cc:1831
bool isValid() const
Returns true if the contact is valid.
Definition opengd77base_codeplug.cc:1846
virtual void setType(DMRContact::Type type)
Sets the call type.
Definition opengd77base_codeplug.cc:1885
virtual TimeSlotOverride timeSlotOverride() const
Returns the time slot override of the contact.
Definition opengd77base_codeplug.cc:1895
TimeSlotOverride
Possible values for the time-slot override option.
Definition opengd77base_codeplug.hh:938
@ None
Do not override time-slot of channel.
virtual QString name() const
Returns the name of the contact.
Definition opengd77base_codeplug.cc:1852
virtual DMRContact * decode(Context &ctx, const ErrorStack &err=ErrorStack()) const
Constructs a DigitalContact instance from this codeplug contact.
Definition opengd77base_codeplug.cc:1905
DTMF contact bank.
Definition opengd77base_codeplug.hh:711
virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack())
Decodes all DTMF contacts.
Definition opengd77base_codeplug.cc:1482
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:1452
DTMFContactElement contact(unsigned int n) const
Returns the n-th DTMF contact.
Definition opengd77base_codeplug.cc:1459
virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack())
Encodes all DTMF contacts.
Definition opengd77base_codeplug.cc:1465
static constexpr unsigned int size()
Returns the size of the element.
Definition opengd77base_codeplug.hh:721
DTMF contact element.
Definition opengd77base_codeplug.hh:660
bool isValid() const
Returns true if the pointer is not null.
Definition opengd77base_codeplug.cc:1365
static constexpr unsigned int size()
Returns the size of the element.
Definition opengd77base_codeplug.hh:670
virtual QString number() const
Returns the DTMF number.
Definition opengd77base_codeplug.cc:1389
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:1371
virtual void setNumber(const QString &number)
Sets the DTMF number.
Definition opengd77base_codeplug.cc:1399
virtual void setName(const QString &name)
Sets the name.
Definition opengd77base_codeplug.cc:1383
virtual bool encode(const DTMFContact *contact, const Context &ctx, const ErrorStack &err=ErrorStack())
Encodes a number.
Definition opengd77base_codeplug.cc:1410
virtual QString name() const
Returns the name.
Definition opengd77base_codeplug.cc:1378
virtual DTMFContact * decode(const Context &ctx, const ErrorStack &err=ErrorStack())
Decodes a number.
Definition opengd77base_codeplug.cc:1422
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 bank.
Definition opengd77base_codeplug.hh:642
static constexpr unsigned int systems()
The total number of APRS systems.
Definition opengd77base_codeplug.hh:644
Some limits.
Definition opengd77base_codeplug.hh:579
static constexpr unsigned int commentLength()
The maximum comment length in chars.
Definition opengd77base_codeplug.hh:583
static constexpr unsigned int nameLength()
The maximum name length in chars.
Definition opengd77base_codeplug.hh:581
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:589
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 for the element.
Definition opengd77base_codeplug.hh:1037
static constexpr unsigned int contactCount()
Maximum number of contacts.
Definition opengd77base_codeplug.hh:1039
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:1044
Some limits for the contact.
Definition opengd77base_codeplug.hh:990
static constexpr unsigned int nameLength()
Maximum name length.
Definition opengd77base_codeplug.hh:992
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:997
Some limits for the bank.
Definition opengd77base_codeplug.hh:735
static constexpr unsigned int contacts()
The total number of contacts.
Definition opengd77base_codeplug.hh:737
Some limits.
Definition opengd77base_codeplug.hh:692
static constexpr unsigned int numberLength()
The maximum length of the number.
Definition opengd77base_codeplug.hh:696
static constexpr unsigned int nameLength()
The maximum name length.
Definition opengd77base_codeplug.hh:694
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