libdrmconf 0.15.1
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#include "melody.hh"
11
12#include <QGeoCoordinate>
13
17{
18 Q_OBJECT
19
20public:
22 enum ImageType { EEPROM = 0, FLASH = 1 };
23
24public:
26 static uint32_t encodeAngle(double degee);
28 static double decodeAngle(uint32_t code);
29
31 static uint16_t encodeSelectiveCall(const SelectiveCall &call);
33 static SelectiveCall decodeSelectiveCall(uint16_t code);
34
35public:
38 {
39 public:
41 enum Mode {
44 };
45
47 enum class Alias {
48 None = 0, APRS = 1, Text = 2, Both = 3
49 };
50
52 enum class SquelchMode {
53 Global, Open, Normal, Closed
54 };
55
56 protected:
58 ChannelElement(uint8_t *ptr, size_t size);
59
60 public:
62 explicit ChannelElement(uint8_t *ptr);
64 virtual ~ChannelElement();
65
67 static constexpr unsigned int size() { return 0x0038; }
68
70 virtual void clear();
71
73 virtual QString name() const;
75 virtual void setName(const QString &n);
76
78 virtual Frequency rxFrequency() const;
80 virtual void setRXFrequency(const Frequency &freq);
82 virtual Frequency txFrequency() const;
84 virtual void setTXFrequency(const Frequency &freq);
85
87 virtual Mode mode() const;
89 virtual void setMode(Mode mode);
90
92 virtual bool globalPower() const;
94 virtual Channel::Power power() const;
96 virtual void setPower(Channel::Power pwr);
98 virtual void clearPower();
99
102 virtual Interval transmitTimeout() const;
105 virtual void setTransmitTimeout(const Interval &interval);
106
108 virtual bool fixedPositionEnabled() const;
110 virtual QGeoCoordinate fixedPosition() const;
112 virtual void setFixedPosition(const QGeoCoordinate &coordinate);
114 virtual void enableFixedPosition(bool enable);
115
117 virtual SelectiveCall rxTone() const;
119 virtual void setRXTone(const SelectiveCall &code);
121 virtual SelectiveCall txTone() const;
123 virtual void setTXTone(const SelectiveCall &code);
124
126 virtual bool isSimplex() const;
128 virtual void enableSimplex(bool enable);
129
131 virtual bool powerSave() const;
133 virtual void enablePowerSave(bool enable);
134
136 virtual bool beep() const;
138 virtual void enableBeep(bool enable);
139
141 virtual bool hasDMRId() const;
143 virtual unsigned int dmrId() const;
145 virtual void setDMRId(unsigned int id);
147 virtual void clearDMRId();
148
150 virtual bool hasGroupList() const;
152 virtual unsigned groupListIndex() const;
154 virtual void setGroupListIndex(unsigned index);
156 virtual void clearGroupListIndex();
157
159 virtual unsigned colorCode() const;
161 virtual void setColorCode(unsigned cc);
162
164 virtual bool hasAPRSIndex() const;
166 virtual unsigned int aprsIndex() const;
168 virtual void setAPRSIndex(unsigned int index);
170 virtual void clearAPRSIndex();
171
173 virtual bool hasTXContact() const;
175 virtual unsigned int txContactIndex() const;
177 virtual void setTXContactIndex(unsigned int index);
179 virtual void clearTXContact();
180
182 virtual OpenGD77ChannelExtension::TalkerAlias aliasTimeSlot1() const;
184 virtual void setAliasTimeSlot1(OpenGD77ChannelExtension::TalkerAlias alias);
186 virtual OpenGD77ChannelExtension::TalkerAlias aliasTimeSlot2() const;
188 virtual void setAliasTimeSlot2(OpenGD77ChannelExtension::TalkerAlias alias);
189
191 virtual DMRChannel::TimeSlot timeSlot() const;
193 virtual void setTimeSlot(DMRChannel::TimeSlot ts);
194
196 virtual FMChannel::Bandwidth bandwidth() const;
198 virtual void setBandwidth(FMChannel::Bandwidth bw);
199
201 virtual bool rxOnly() const;
203 virtual void enableRXOnly(bool enable);
204
206 virtual bool skipScan() const;
208 virtual void enableSkipScan(bool enable);
210 virtual bool skipZoneScan() const;
212 virtual void enableSkipZoneScan(bool enable);
213
215 virtual bool vox() const;
217 virtual void enableVOX(bool enable);
218
220 virtual SquelchMode squelchMode() const;
222 virtual unsigned int squelchLevel() const;
224 virtual void setSquelch(SquelchMode mode, unsigned int level);
225
227 virtual Channel *decode(Context &ctx, const ErrorStack &err=ErrorStack()) const;
229 virtual bool link(Channel *c, Context &ctx, const ErrorStack &err=ErrorStack()) const;
231 virtual bool encode(const Channel *c, Context &ctx, const ErrorStack &err=ErrorStack());
232
233 public:
235 struct Limit {
237 static constexpr unsigned int nameLength() { return 16; }
238 };
239
240 protected:
242 struct Offset: public Element::Offset {
244 static constexpr unsigned int name() { return 0x0000; }
245 static constexpr unsigned int rxFrequency() { return 0x0010; }
246 static constexpr unsigned int txFrequency() { return 0x0014; }
247 static constexpr unsigned int mode() { return 0x0018; }
248 static constexpr unsigned int power() { return 0x0019; }
249 static constexpr unsigned int latitude0() { return 0x001a; }
250 static constexpr unsigned int txTimeout() { return 0x001b; }
251 static constexpr unsigned int latitude1() { return 0x001c; }
252 static constexpr unsigned int latitude2() { return 0x001d; }
253 static constexpr unsigned int longitude0() { return 0x001e; }
254 static constexpr unsigned int longitude1() { return 0x001f; }
255 static constexpr unsigned int rxTone() { return 0x0020; }
256 static constexpr unsigned int txTone() { return 0x0022; }
257 static constexpr unsigned int longitude2() { return 0x0024; }
258 static constexpr Bit simplex() { return {0x0026, 2}; }
259 static constexpr Bit useFixedLocation() { return {0x0026, 3}; }
260 static constexpr Bit disablePowerSave() { return {0x0026, 5}; }
261 static constexpr Bit disableBeep() { return {0x0026, 6}; }
262 static constexpr Bit overrideDMRID() { return {0x0026, 7}; }
263 static constexpr unsigned int dmrId() { return 0x0027; }
264 static constexpr unsigned int groupList() { return 0x002b; }
265 static constexpr unsigned int colorCode() { return 0x002c; }
266 static constexpr unsigned int aprsIndex() { return 0x002d; }
267 static constexpr unsigned int txContact() { return 0x002e; }
268 static constexpr Bit aliasTimeSlot2() { return { 0x030, 2}; }
269 static constexpr Bit aliasTimeSlot1() { return { 0x030, 0}; }
270 static constexpr Bit timeSlot() { return {0x0031, 6}; }
271 static constexpr Bit bandwidth() { return {0x0033, 1}; }
272 static constexpr Bit enableMonitor() { return {0x0033, 3}; }
273 static constexpr Bit rxOnly() { return {0x0033, 2}; }
274 static constexpr Bit skipScan() { return {0x0033, 4}; }
275 static constexpr Bit skipZoneScan() { return {0x0033, 5}; }
276 static constexpr Bit vox() { return {0x0033, 6}; }
277 static constexpr unsigned int squelch() { return 0x0037; }
279 };
280 };
281
282
288 {
289 protected:
291 ChannelBankElement(uint8_t *ptr, unsigned size);
292
293 public:
295 explicit ChannelBankElement(uint8_t *ptr);
297 virtual ~ChannelBankElement();
298
300 static constexpr unsigned int size() { return 0x1c10; }
301
303 void clear();
304
306 virtual bool isEnabled(unsigned idx) const ;
308 virtual void enable(unsigned idx, bool enabled);
310 virtual uint8_t *get(unsigned idx) const;
312 ChannelElement channel(unsigned int n);
313
314 public:
316 struct Limit {
318 static constexpr unsigned int channelCount() { return 128; }
319 };
320
321 protected:
323 struct Offset {
325 static constexpr unsigned int bitmask() { return 0x0000; }
326 static constexpr unsigned int channels() { return 0x0010; }
328 };
329 };
330
331
337 {
338 public:
340 enum class OffsetMode {
341 Off = 0,
344 };
345
357
358 protected:
360 VFOChannelElement(uint8_t *ptr, unsigned size);
361
362 public:
364 explicit VFOChannelElement(uint8_t *ptr);
365
366 void clear();
367
369 QString name() const;
371 void setName(const QString &name);
372
374 virtual double stepSize() const;
376 virtual void setStepSize(double kHz);
377
379 virtual OffsetMode offsetMode() const;
381 virtual double txOffset() const;
383 virtual void setTXOffset(double f);
385 virtual void setOffsetMode(OffsetMode mode);
386
387 protected:
389 struct Offset: public ChannelElement::Offset {
390 static constexpr Bit stepSize() { return {0x0036, 4} ; }
391 static constexpr Bit offsetMode() { return {0x0036, 2} ; }
392 static constexpr unsigned int txOffset() { return 0x0034; }
393 };
395 };
396
397
400 {
401 protected:
403 GeneralSettingsElement(uint8_t *ptr, size_t size);
404
405 public:
407 GeneralSettingsElement(uint8_t *ptr);
408
410 static constexpr unsigned int size() { return 0x0090; }
411
412 void clear();
413
415 virtual Frequency uhfMinFrequency() const;
417 virtual void setUHFMinFrequency(const Frequency &f);
419 virtual Frequency uhfMaxFrequency() const;
421 virtual void setUHFMaxFrequency(const Frequency &f);
422
424 virtual Frequency vhfMinFrequency() const;
426 virtual void setVHFMinFrequency(const Frequency &f);
428 virtual Frequency vhfMaxFrequency() const;
430 virtual void setVHFMaxFrequency(const Frequency &f);
431
433 virtual QString call() const;
435 virtual void setCall(const QString &call);
436
438 virtual unsigned int radioId() const;
440 virtual void setRadioId(unsigned int id);
441
443 virtual bool encode(const Context &ctx, const ErrorStack &err = ErrorStack());
445 virtual bool decode(const Context &ctx, const ErrorStack &err = ErrorStack());
446
447 public:
449 struct Limit: public Element::Limit {
451 static constexpr unsigned int callLength() { return 8; }
452 };
453
454 protected:
456 struct Offset: public Element::Offset {
458 static constexpr unsigned int uhfMinFrequency() { return 0x0000; }
459 static constexpr unsigned int uhfMaxFrequency() { return 0x0002; }
460 static constexpr unsigned int vhfMinFrequency() { return 0x0004; }
461 static constexpr unsigned int vhfMaxFrequency() { return 0x0006; }
462 static constexpr unsigned int call() { return 0x0060; }
463 static constexpr unsigned int dmrId() { return 0x0068; }
465 };
466 };
467
468
471 {
472 public:
474 enum class BaudRate {
475 Baud300 = 1, Baud1200 = 0
476 };
477
479 enum class PositionPrecision {
480 Max = 0,
481 Mask1_8sec = 1,
482 Mask3_6sec = 2,
483 Mask18sec = 3,
484 Mask36sec = 4,
485 Mask3min = 5,
486 Mask6min = 6,
487 Mask30min = 7
488 };
489
490 public:
492 explicit APRSSettingsElement(uint8_t *ptr);
493
494 protected:
496 APRSSettingsElement(uint8_t *ptr, size_t size);
497
498 public:
500 static constexpr unsigned int size() { return 0x40; }
501
503 void clear();
504
506 virtual bool isValid() const;
507
509 virtual QString name() const;
511 virtual void setName(const QString &name);
512
514 virtual unsigned int sourceSSID() const;
516 virtual void setSourceSSID(unsigned int ssid);
517
519 virtual bool fixedPositionEnabled() const;
521 virtual QGeoCoordinate fixedPosition() const;
523 virtual void setFixedPosition(const QGeoCoordinate &coor);
525 virtual void enableFixedPosition(bool enable);
526
528 virtual PositionPrecision positionPrecision() const;
530 virtual void setPositionPrecision(PositionPrecision prec);
531
533 virtual bool transmitQSY() const;
535 virtual void enableTransmitQSY(bool enable);
536
538 virtual bool hasVia1() const;
540 virtual QString via1Call() const;
542 virtual unsigned int via1SSID() const;
544 virtual void setVia1(const QString &call, unsigned int ssid);
546 virtual void clearVia1();
547
549 virtual bool hasVia2() const;
551 virtual QString via2Call() const;
553 virtual unsigned int via2SSID() const;
555 virtual void setVia2(const QString &call, unsigned int ssid);
557 virtual void clearVia2();
558
560 virtual FMAPRSSystem::Icon icon() const;
562 virtual void setIcon(FMAPRSSystem::Icon icon);
563
565 virtual QString comment() const;
567 virtual void setComment(const QString &text);
568
570 virtual BaudRate baudRate() const;
572 virtual void setBaudRate(BaudRate rate);
573
574 Frequency fmFrequency() const;
575 void setFMFrequency(Frequency f);
576
578 virtual bool encode(const FMAPRSSystem *system, const Context &ctx, const ErrorStack &err=ErrorStack());
580 virtual FMAPRSSystem *decode(const Context &ctx, const ErrorStack &err=ErrorStack()) const;
582 virtual bool link(FMAPRSSystem *system, const Context &ctx, const ErrorStack &err=ErrorStack());
583
584 public:
586 struct Limit: public Element::Limit {
588 static constexpr unsigned int nameLength() { return 8; }
590 static constexpr unsigned int commentLength() { return 23; }
591 };
592
593 protected:
595 struct Offset: public Element::Offset
596 {
598 static constexpr unsigned int name() { return 0x0000; }
599 static constexpr unsigned int sourceSSID() { return 0x0008; }
600 static constexpr unsigned int latitude() { return 0x0009; }
601 static constexpr unsigned int longitude() { return 0x000c; }
602 static constexpr unsigned int via1Call() { return 0x000f; }
603 static constexpr unsigned int via1SSID() { return 0x0015; }
604 static constexpr unsigned int via2Call() { return 0x0016; }
605 static constexpr unsigned int via2SSID() { return 0x001c; }
606 static constexpr unsigned int iconTable() { return 0x001d; }
607 static constexpr unsigned int iconIndex() { return 0x001e; }
608 static constexpr unsigned int comment() { return 0x001f; }
609 static constexpr unsigned int fmFrequency() { return 0x0037; }
610 static constexpr Bit positionPrecision() { return { 0x003d, 4}; }
611 static constexpr Bit transmitQSY() { return { 0x003d, 2}; }
612 static constexpr Bit useFixedPosition() { return { 0x003d, 1}; }
613 static constexpr Bit baudRate() { return { 0x003d, 0}; }
614 static constexpr unsigned int unknownBytes() { return 0x003e; }
616 };
617 };
618
619
622 {
623 public:
625 explicit APRSSettingsBankElement(uint8_t *ptr);
626
627 protected:
629 APRSSettingsBankElement(uint8_t *ptr, size_t size);
630
631 public:
633 static constexpr unsigned int size() { return 0x40; }
634
636 void clear();
637
639 APRSSettingsElement system(unsigned int idx) const;
640
642 virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack());
644 virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack());
646 virtual bool link(Context &ctx, const ErrorStack &err=ErrorStack());
647
648 public:
650 struct Limit: public Element::Limit {
652 static constexpr unsigned int systems() { return 8; }
653 };
654
655 public:
657 struct Offset: public Element::Offset {
658 static constexpr unsigned int systems() { return 0x0000; }
659 static constexpr unsigned int betweenSystems() { return APRSSettingsElement::size(); }
660 };
662 };
663
664
668 {
669 protected:
671 DTMFContactElement(uint8_t *ptr, size_t size);
672
673 public:
675 explicit DTMFContactElement(uint8_t *ptr);
676
678 static constexpr unsigned int size() { return 0x0020; }
679
680 void clear();
681 bool isValid() const;
682
684 virtual QString name() const;
686 virtual void setName(const QString &name);
687
689 virtual QString number() const;
691 virtual void setNumber(const QString &number);
692
694 virtual bool encode(const DTMFContact *contact, const Context &ctx, const ErrorStack &err=ErrorStack());
696 virtual DTMFContact *decode(const Context &ctx, const ErrorStack &err=ErrorStack());
697
698 public:
700 struct Limit: public Element::Limit {
702 static constexpr unsigned int nameLength() { return 16; }
704 static constexpr unsigned int numberLength() { return 16; }
705 };
706
707 protected:
709 struct Offset: public Element::Offset {
710 static constexpr unsigned int name() { return 0x0000; }
711 static constexpr unsigned int number() { return 0x0010; }
712 };
714 };
715
716
719 {
720 protected:
722 DTMFContactBankElement(uint8_t *ptr, size_t size);
723
724 public:
726 DTMFContactBankElement(uint8_t *ptr);
727
729 static constexpr unsigned int size() { return Limit::contacts()*DTMFContactElement::size(); }
730
731 void clear();
732
734 DTMFContactElement contact(unsigned int n) const;
735
737 virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack());
739 virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack());
740
741 public:
743 struct Limit: public Element::Limit {
745 static constexpr unsigned int contacts() { return 64; }
746 };
747
748 public:
750 struct Offset: public Element::Offset {
751 static constexpr unsigned int contacts() { return 0x0000; }
752 static constexpr unsigned int betweenContacts() { return DTMFContactElement::size(); }
753 };
755 };
756
757
760 {
761 protected:
763 BootSettingsElement(uint8_t *ptr, unsigned size);
764
765 public:
767 explicit BootSettingsElement(uint8_t *ptr);
769 virtual ~BootSettingsElement();
770
772 void clear();
773
775 virtual bool bootText() const;
777 virtual void enableBootText(bool enable);
778
780 virtual bool bootPasswordEnabled() const;
782 virtual unsigned bootPassword() const;
784 virtual void setBootPassword(unsigned passwd);
786 virtual void clearBootPassword();
787
789 virtual QString line1() const;
791 virtual void setLine1(const QString &text);
793 virtual QString line2() const;
795 virtual void setLine2(const QString &text);
796
798 virtual bool encode(const Context &ctx, const ErrorStack &err = ErrorStack());
800 virtual bool decode(Context &ctx, const ErrorStack &err = ErrorStack());
801
802 public:
804 struct Limit: public Element::Limit {
806 static constexpr unsigned int lineLength() { return 16; }
807 };
808
809 public:
811 struct Offset: public Element::Offset {
812 static constexpr unsigned int bootText() { return 0x0000; }
813 static constexpr unsigned int bootPasswdEnable() { return 0x0001; }
814 static constexpr unsigned int bootPasswd() { return 0x000c; }
815 static constexpr unsigned int line1() { return 0x0028; }
816 static constexpr unsigned int line2() { return 0x0038; }
817 };
819 };
820
821
823 class ZoneElement: public Element
824 {
825 protected:
827 ZoneElement(uint8_t *ptr, unsigned size);
828
829 public:
831 explicit ZoneElement(uint8_t *ptr);
832 virtual ~ZoneElement();
833
835 static constexpr unsigned int size() { return 0x00b0; }
836
838 void clear();
840 bool isValid() const;
841
843 virtual QString name() const;
845 virtual void setName(const QString &name);
846
848 virtual bool hasMember(unsigned n) const;
850 virtual unsigned member(unsigned n) const;
852 virtual void setMember(unsigned n, unsigned idx);
854 virtual void clearMember(unsigned n);
855
857 virtual bool encode(const Zone *zone, Context &ctx, const ErrorStack &err=ErrorStack());
859 virtual Zone *decode(const Context &ctx, const ErrorStack &err=ErrorStack()) const;
862 virtual bool link(Zone *zone, Context &ctx, const ErrorStack &err=ErrorStack()) const;
863
864 public:
866 struct Limit: public Element::Limit {
868 static constexpr unsigned int nameLength() { return 16; }
870 static constexpr unsigned int memberCount() { return 80; }
871 };
872
873 protected:
875 struct Offset: public Element::Offset {
877 static constexpr unsigned int name() { return 0x0000; }
878 static constexpr unsigned int channels() { return 0x0010; }
879 static constexpr unsigned int betweenChannels() { return 0x0002; }
881 };
882 };
883
884
887 {
888 protected:
890 ZoneBankElement(uint8_t *ptr, unsigned size);
891
892 public:
894 explicit ZoneBankElement(uint8_t *ptr);
897
899 static constexpr unsigned int size() {
900 return 0x0020 + Limit::zoneCount()*ZoneElement::size();
901 }
902
904 void clear();
905
907 virtual bool isEnabled(unsigned idx) const ;
909 virtual void enable(unsigned idx, bool enabled);
910
912 ZoneElement zone(unsigned int n);
913
915 virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack());
917 virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack());
919 virtual bool link(Context &ctx, const ErrorStack &err=ErrorStack());
920
921 public:
923 struct Limit: public Element::Limit {
925 static constexpr unsigned int zoneCount() { return 68; }
926 };
927
928 protected:
930 struct Offset: public Element::Offset {
932 static constexpr unsigned int bitmap() { return 0x0000; }
933 static constexpr unsigned int zones() { return 0x0020; }
934 static constexpr unsigned int betweenZones() { return ZoneElement::size(); }
936 };
937 };
938
939
942 {
943 public:
946 enum class TimeSlotOverride {
947 None = 0x01,
948 TS1 = 0x00,
949 TS2 = 0x02
950 };
951
952 protected:
954 ContactElement(uint8_t *ptr, unsigned size);
955
956 public:
958 explicit ContactElement(uint8_t *ptr);
960 virtual ~ContactElement();
961
963 static constexpr unsigned int size() { return 0x0018; }
964
966 void clear();
967
969 bool isValid() const;
970
972 virtual QString name() const;
974 virtual void setName(const QString name);
975
977 virtual unsigned number() const;
979 virtual void setNumber(unsigned id);
980
982 virtual DMRContact::Type type() const;
984 virtual void setType(DMRContact::Type type);
985
987 virtual TimeSlotOverride timeSlotOverride() const;
989 virtual void setTimeSlotOverride(TimeSlotOverride ts);
990
992 virtual DMRContact *decode(Context &ctx, const ErrorStack &err=ErrorStack()) const;
994 virtual bool encode(const DMRContact *obj, Context &ctx, const ErrorStack &err=ErrorStack());
995
996 public:
998 struct Limit {
1000 static constexpr unsigned int nameLength() { return 16; }
1001 };
1002
1003 protected:
1005 struct Offset {
1007 static constexpr unsigned int name() { return 0x0000; }
1008 static constexpr unsigned int number() { return 0x0010; }
1009 static constexpr unsigned int type() { return 0x0014; }
1010 static constexpr unsigned int timeSlotOverride() { return 0x0017; }
1012 };
1013 };
1014
1015
1018 {
1019 protected:
1021 ContactBankElement(uint8_t *ptr, size_t size);
1022
1023 public:
1025 ContactBankElement(uint8_t *ptr);
1026
1028 static constexpr unsigned int size() {
1030 }
1031
1033 void clear();
1034
1036 ContactElement contact(unsigned int idx) const;
1037
1039 virtual bool encode(Context &ctx, const ErrorStack &err = ErrorStack());
1041 virtual bool decode(Context &ctx, const ErrorStack &err = ErrorStack());
1042
1043 public:
1045 struct Limit {
1047 static constexpr unsigned int contactCount() { return 1024; }
1048 };
1049
1050 protected:
1052 struct Offset {
1054 static constexpr unsigned int contacts() { return 0x0000; }
1055 static constexpr unsigned int betweenContacts() { return ContactElement::size(); }
1056 // @endcond
1057 };
1058 };
1059
1060
1063 {
1064 protected:
1066 GroupListElement(uint8_t *ptr, size_t size);
1067
1068 public:
1070 GroupListElement(uint8_t *ptr);
1071
1073 static constexpr unsigned int size() { return 0x0050; }
1074
1076 void clear();
1077
1079 virtual QString name() const;
1081 virtual void setName(const QString &name);
1082
1084 virtual bool hasContactIndex(unsigned int i) const;
1086 virtual unsigned int contactIndex(unsigned int i) const;
1088 virtual void setContactIndex(unsigned int i, unsigned int contactIdx);
1090 virtual void clearContactIndex(unsigned int i);
1091
1093 virtual bool encode(RXGroupList *lst, Context &ctx, const ErrorStack &err=ErrorStack());
1095 virtual RXGroupList *decode(Context &ctx, const ErrorStack &err=ErrorStack()) const;
1097 virtual bool link(RXGroupList *lst, Context &ctx, const ErrorStack &err=ErrorStack()) const;
1098
1099 public:
1101 struct Limit {
1103 static constexpr unsigned int nameLength() { return 15; }
1105 static constexpr unsigned int contactCount() { return 32; }
1106 };
1107
1108 protected:
1110 struct Offset {
1112 static constexpr unsigned int name() { return 0x0000; }
1113 static constexpr unsigned int contacts() { return 0x0010; }
1114 static constexpr unsigned int betweenContacts() { return 0x0002; }
1115 // @endcond
1116 };
1117 };
1118
1119
1122 {
1123 protected:
1125 GroupListBankElement(uint8_t *ptr, size_t size);
1126
1127 public:
1129 GroupListBankElement(uint8_t *ptr);
1130
1132 static constexpr unsigned int size() { return 0x1840; }
1133
1135 void clear();
1136
1138 virtual bool hasGroupList(unsigned int i) const;
1140 virtual unsigned int groupListContactCount(unsigned int i) const;
1142 virtual void setGroupListContactCount(unsigned int i, unsigned int count);
1144 virtual GroupListElement groupList(unsigned int i) const;
1146 virtual void clearGroupList(unsigned int i);
1147
1149 virtual bool encode(Context &ctx, const ErrorStack &err = ErrorStack());
1151 virtual bool decode(Context &ctx, const ErrorStack &err = ErrorStack());
1153 virtual bool link(Context &ctx, const ErrorStack &err = ErrorStack());
1154
1155 public:
1157 struct Limit {
1159 static constexpr unsigned int groupListCount() { return 76; }
1160 };
1161
1162 protected:
1164 struct Offset {
1166 static constexpr unsigned int length() { return 0x0000; }
1167 static constexpr unsigned int groupLists() { return 0x0080; }
1168 static constexpr unsigned int betweenGroupLists() { return GroupListElement::size(); }
1169 // @endcond
1170 };
1171 };
1172
1173
1177 {
1178 protected:
1180 SatelliteElement(uint8_t *ptr, size_t size);
1181
1182 public:
1184 SatelliteElement(uint8_t *ptr);
1185
1187 static constexpr unsigned int size() { return 0x0064; }
1188
1189 void clear();
1190
1192 virtual void setName(const QString &name);
1193
1195 virtual void setEpoch(const ::OrbitalElement::Epoch &epoch);
1197 virtual void setMeanMotion(double mm);
1199 virtual void setMeanMotionDerivative(double dmm);
1201 virtual void setInclination(double incl);
1203 virtual void setAscension(double asc);
1205 virtual void setEccentricity(double ecc);
1207 virtual void setPerigee(double arg);
1209 virtual void setMeanAnomaly(double ma);
1211 virtual void setRevolutionNumber(unsigned int num);
1212
1214 void setFMDownlink(const Frequency &f);
1216 void setFMUplink(const Frequency &f);
1218 void setCTCSS(const SelectiveCall &call);
1220 void setAPRSDownlink(const Frequency &f);
1222 void setAPRSUplink(const Frequency &f);
1223
1225 void setBeacon(const Frequency &f);
1226
1228 void setAPRSPath(const QString &path);
1229
1231 virtual bool encode(const Satellite &sat, const ErrorStack &err = ErrorStack());
1232
1233 protected:
1242 void writeFixedPoint(const Offset::Bit &offset, double value, bool sign, unsigned int dec, unsigned int frac);
1250 void writeFractional(const Offset::Bit &offset, double value, bool sign, unsigned int frac);
1252 void writeInteger(const Offset::Bit &offset, int value, bool sign, unsigned dec);
1254 void writeDigit(const Offset::Bit &offset, uint8_t digit);
1255
1256 public:
1258 struct Limit: public Element::Limit {
1260 static constexpr unsigned int nameLength() { return 8; }
1262 static constexpr unsigned int pathLength() { return 24; }
1263 };
1264
1265 protected:
1267 struct Offset: public Element::Offset {
1269 static constexpr unsigned int name() { return 0x0000; }
1270 static constexpr Bit epochYear() { return {0x0008, 4}; }
1271 static constexpr Bit epochJulienDay() { return {0x0009, 4}; }
1272 static constexpr Bit meanMotionDerivative() { return {0x000f, 4}; }
1273 static constexpr Bit inclination() { return {0x0014, 4}; }
1274 static constexpr Bit ascension() { return {0x0018, 4}; }
1275 static constexpr Bit eccentricity() { return {0x001c, 4}; }
1276 static constexpr Bit perigee() { return {0x001f, 0}; }
1277 static constexpr Bit meanAnomaly() { return {0x0023, 0}; }
1278 static constexpr Bit meanMotion() { return {0x0027, 0}; }
1279 static constexpr Bit revolutionNumber() { return {0x002d, 4}; }
1280 static constexpr unsigned int fmDownlink() { return 0x0030; }
1281 static constexpr unsigned int fmUplink() { return 0x0034; }
1282 static constexpr unsigned int ctcss() { return 0x0038; }
1283 static constexpr unsigned int aprsDownlink() { return 0x003c; }
1284 static constexpr unsigned int aprsUplink() { return 0x0040; }
1285 static constexpr unsigned int beacon() { return 0x0044; }
1286 static constexpr unsigned int aprsPath() { return 0x004c; }
1288 };
1289 };
1290
1291
1294 {
1295 protected:
1297 SatelliteBankElement(uint8_t *ptr, size_t size);
1298
1299 public:
1301 SatelliteBankElement(uint8_t *ptr);
1302
1304 static constexpr unsigned int size() { return 0x09e0; }
1306 static constexpr unsigned int magic() { return 0x0003; }
1307
1308 void clear();
1309
1311 SatelliteElement satellite(unsigned int idx);
1313 bool encode(SatelliteDatabase *db, const ErrorStack &err=ErrorStack());
1314
1315 public:
1317 struct Limit {
1319 static constexpr unsigned int satellites() { return 25; }
1320 };
1321
1322 protected:
1324 struct Offset {
1326 static constexpr unsigned int blockId() { return 0x0000; }
1327 static constexpr unsigned int segmentSize() { return 0x0004; }
1328 static constexpr unsigned int satellites() { return 0x0008; }
1329 static constexpr unsigned int betweenSatellites() { return SatelliteElement::size(); }
1331 };
1332 };
1333
1334
1335 class NoteElement: public Element
1336 {
1337 public:
1338 explicit NoteElement(uint8_t *ptr);
1339
1341 static constexpr unsigned int size() { return 0x0002; }
1342
1343 void clear() override;
1344 bool isValid() const override;
1345
1347 bool isPause() const;
1349 double frequency() const;
1351 void setFrequency(double pitch);
1353 void setPause();
1354
1356 unsigned int duration() const;
1358 void setDuration(unsigned int ms);
1359
1360 protected:
1362 struct Offset: Element::Offset {
1364 static constexpr unsigned int pitch() { return 0x0000; }
1365 static constexpr unsigned int duration() { return 0x0001; }
1367 };
1368
1369 static constexpr double _lut[] = {
1370 0110.00, 0116.54, 0123.47,
1371 0130.81, 0138.59, 0146.83, 0155.56, 0164.81, 0174.61, 0185.00, 0196.00, 0207.65, 0220.00, 0233.08, 0246.94,
1372 0261.62, 0277.18, 0293.66, 0311.13, 0329.63, 0349.23, 0369.99, 0392.00, 0415.30, 0440.00, 0466.16, 0493.88,
1373 0523.25, 0554.37, 0587.33, 0622.25, 0659.25, 0698.46, 0739.99, 0783.99, 0830.61, 0880.00, 0932.33, 0987.77,
1374 1046.50, 1108.73, 1174.66, 1244.51, 1318.51, 1396.91
1375 };
1376 };
1377
1380 {
1381 public:
1383 BootMelodyElement(uint8_t *ptr);
1384
1386 static constexpr unsigned int size() { return 0x0208; }
1388 static constexpr unsigned int magic() { return 0x0002; }
1389
1390 void clear();
1391
1393 virtual bool encode(Context &ctx, const Melody *melody, const ErrorStack &err=ErrorStack());
1395 virtual bool decode(Context &ctx, Melody *melody, const ErrorStack &err=ErrorStack()) const;
1396
1397 public:
1399 struct Limit {
1401 static constexpr unsigned int notes() { return 256; }
1402 };
1403
1404 protected:
1406 struct Offset {
1408 static constexpr unsigned int blockId() { return 0x0000; }
1409 static constexpr unsigned int segmentSize() { return 0x0004; }
1410 static constexpr unsigned int notes() { return 0x0008; }
1411 static constexpr unsigned int betweenNotes() { return NoteElement::size(); }
1413 };
1414 };
1415
1416
1421 {
1422 public:
1423 enum Settings {
1424 BootImage = 1,
1425 BootMelody = 2,
1426 SatelliteOrbitals = 3,
1427 LightTheme = 4,
1428 DarkTheme = 5
1429 };
1430
1431 protected:
1433 AdditionalSettingsElement(uint8_t *ptr, size_t size);
1434
1435 public:
1437 AdditionalSettingsElement(uint8_t *ptr);
1438
1440 static constexpr unsigned int size() { return 0x11a0; }
1441
1442 bool isValid() const;
1443 void clear();
1444
1446 virtual QString magic() const;
1448 virtual unsigned int version() const;
1449
1451 virtual bool hasSettings(Settings set) const;
1453 virtual SatelliteBankElement satellites() const;
1455 virtual BootMelodyElement bootMelody() const;
1456
1457 public:
1459 struct Limit {
1461 static constexpr unsigned int magicStringLength() { return 8; }
1462 };
1463
1464 protected:
1466 struct Offset {
1468 static constexpr unsigned int magicString() { return 0x0000; }
1469 static constexpr unsigned int versionNumber() { return 0x0008; }
1470 static constexpr unsigned int blocks() { return 0x000c; }
1471 // @endcond
1472 };
1473 };
1474
1475
1476protected:
1478 explicit OpenGD77BaseCodeplug(QObject *parent = nullptr);
1479
1480public:
1482 virtual void clear();
1483
1484 bool index(Config *config, Context &ctx, const ErrorStack &err=ErrorStack()) const;
1485
1486 bool decode(Config *config, const ErrorStack &err=ErrorStack());
1487 bool postprocess(Config *config, const ErrorStack &err=ErrorStack()) const;
1488
1489 Config *preprocess(Config *config, const ErrorStack &err=ErrorStack()) const;
1490 bool encode(Config *config, const Flags &flags = Flags(), const ErrorStack &err=ErrorStack());
1491
1492public:
1495 virtual bool decodeElements(Context &ctx, const ErrorStack &err=ErrorStack());
1497 virtual bool encodeElements(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack());
1498
1500 virtual void clearGeneralSettings() = 0;
1502 virtual bool encodeGeneralSettings(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1504 virtual bool decodeGeneralSettings(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1505
1507 virtual void clearDTMFSettings() = 0;
1509 virtual bool encodeDTMFSettings(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1511 virtual bool decodeDTMFSettings(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1512
1514 virtual void clearAPRSSettings() = 0;
1516 virtual bool encodeAPRSSettings(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1518 virtual bool decodeAPRSSettings(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1520 virtual bool linkAPRSSettings(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1521
1523 virtual void clearDTMFContacts() = 0;
1525 virtual bool encodeDTMFContacts(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1527 virtual bool createDTMFContacts(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1528
1530 virtual void clearChannels() = 0;
1532 virtual bool encodeChannels(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1534 virtual bool createChannels(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1536 virtual bool linkChannels(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1537
1539 virtual void clearBootSettings() = 0;
1541 virtual bool encodeBootSettings(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1543 virtual bool decodeBootSettings(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1544
1546 virtual void clearVFOSettings() = 0;
1547
1549 virtual void clearZones() = 0;
1551 virtual bool encodeZones(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1553 virtual bool createZones(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1555 virtual bool linkZones(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1556
1558 virtual void clearContacts() = 0;
1560 virtual bool encodeContacts(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1562 virtual bool createContacts(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1563
1565 virtual void clearGroupLists() = 0;
1567 virtual bool encodeGroupLists(const Flags &flags, Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1569 virtual bool createGroupLists(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1571 virtual bool linkGroupLists(Context &ctx, const ErrorStack &err=ErrorStack()) = 0;
1572};
1573
1574#endif // OPENGD77BASE_CODEPLUG_HH
The base class of all channels (analog and digital) of a codeplug configuration.
Definition channel.hh:38
Power
Specifies the prefix for every ID assigned to every channel during serialization.
Definition channel.hh:65
Base class for all codeplug contexts.
Definition codeplug.hh:331
Represents the abstract base class of all codeplug elements.
Definition codeplug.hh:65
Element(uint8_t *ptr, size_t size)
Hidden constructor.
Definition codeplug.cc:56
Certain flags passed to CodePlug::encode to control the transfer and encoding of the codeplug.
Definition codeplug.hh:24
Codeplug(QObject *parent=nullptr)
Hidden default constructor.
Definition codeplug.cc:872
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:448
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
Represents an APRS system within the generic config.
Definition gpssystem.hh:137
Icon
All implemented APRS icons.
Definition gpssystem.hh:169
Bandwidth
Possible bandwidth of an analog channel.
Definition channel.hh:288
Represents a time interval.
Definition interval.hh:11
A config item that encodes a melody.
Definition melody.hh:20
virtual bool link(Context &ctx, const ErrorStack &err=ErrorStack())
Links all FM APRS systems.
Definition opengd77base_codeplug.cc:1337
void clear()
Clears the bank.
Definition opengd77base_codeplug.cc:1289
APRSSettingsElement system(unsigned int idx) const
Returns the n-th APRS system.
Definition opengd77base_codeplug.cc:1296
static constexpr unsigned int size()
The size of the channel bank.
Definition opengd77base_codeplug.hh:633
virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack())
Encodes all FM APRS systems.
Definition opengd77base_codeplug.cc:1302
virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack())
Decodes all FM APRS systems.
Definition opengd77base_codeplug.cc:1320
APRSSettingsBankElement(uint8_t *ptr)
Constructor from pointer.
Definition opengd77base_codeplug.cc:1281
APRS system for OpenGD77 devices.
Definition opengd77base_codeplug.hh:471
virtual bool isValid() const
Returns true, if the system is valid.
Definition opengd77base_codeplug.cc:1000
virtual bool encode(const FMAPRSSystem *system, const Context &ctx, const ErrorStack &err=ErrorStack())
Encodes the APRS settings.
Definition opengd77base_codeplug.cc:1167
BaudRate
Possible APRS baud rates.
Definition opengd77base_codeplug.hh:474
virtual QGeoCoordinate fixedPosition() const
Returns the fixed position.
Definition opengd77base_codeplug.cc:1033
virtual FMAPRSSystem::Icon icon() const
Returns the icon.
Definition opengd77base_codeplug.cc:1128
virtual bool link(FMAPRSSystem *system, const Context &ctx, const ErrorStack &err=ErrorStack())
Links the ARPS settings.
Definition opengd77base_codeplug.cc:1242
virtual void clearVia2()
Clears the second via node.
Definition opengd77base_codeplug.cc:1122
virtual void setName(const QString &name)
Sets the name of the system.
Definition opengd77base_codeplug.cc:1011
virtual void setPositionPrecision(PositionPrecision prec)
Sets the position reporting precision in degrees.
Definition opengd77base_codeplug.cc:1057
APRSSettingsElement(uint8_t *ptr)
Constructor from pointer.
Definition opengd77base_codeplug.cc:979
virtual QString comment() const
Returns the comment text.
Definition opengd77base_codeplug.cc:1138
virtual bool hasVia1() const
Returns true, if the first via node is set.
Definition opengd77base_codeplug.cc:1074
virtual void setIcon(FMAPRSSystem::Icon icon)
Sets the icon.
Definition opengd77base_codeplug.cc:1132
PositionPrecision
Possible position precisions.
Definition opengd77base_codeplug.hh:479
virtual void setVia2(const QString &call, unsigned int ssid)
Sets the second via node.
Definition opengd77base_codeplug.cc:1116
virtual void setComment(const QString &text)
Sets the comment text.
Definition opengd77base_codeplug.cc:1142
virtual BaudRate baudRate() const
Returns the baud-rate.
Definition opengd77base_codeplug.cc:1147
virtual unsigned int sourceSSID() const
Returns the source SSID.
Definition opengd77base_codeplug.cc:1017
virtual PositionPrecision positionPrecision() const
Returns the position reporting precision.
Definition opengd77base_codeplug.cc:1052
virtual FMAPRSSystem * decode(const Context &ctx, const ErrorStack &err=ErrorStack()) const
Decodes some APRS settings.
Definition opengd77base_codeplug.cc:1211
virtual bool hasVia2() const
Returns true, if the second via node is set.
Definition opengd77base_codeplug.cc:1101
virtual unsigned int via1SSID() const
Returns the first via node ssid.
Definition opengd77base_codeplug.cc:1084
void clear()
Clears the bank.
Definition opengd77base_codeplug.cc:987
virtual bool transmitQSY() const
Returns true if QSY text is added to the APRS message.
Definition opengd77base_codeplug.cc:1063
virtual void setSourceSSID(unsigned int ssid)
Sets the source SSID.
Definition opengd77base_codeplug.cc:1022
static constexpr unsigned int size()
The size of the channel bank.
Definition opengd77base_codeplug.hh:500
virtual void enableFixedPosition(bool enable)
Resets the fixed position.
Definition opengd77base_codeplug.cc:1047
virtual void setBaudRate(BaudRate rate)
Sets the baud rate.
Definition opengd77base_codeplug.cc:1151
virtual unsigned int via2SSID() const
Returns the second via node ssid.
Definition opengd77base_codeplug.cc:1111
virtual bool fixedPositionEnabled() const
Returns true, if a fixed position is send.
Definition opengd77base_codeplug.cc:1028
virtual void setFixedPosition(const QGeoCoordinate &coor)
Sets the fixed position.
Definition opengd77base_codeplug.cc:1040
virtual QString via1Call() const
Returns the first via node call.
Definition opengd77base_codeplug.cc:1079
virtual void clearVia1()
Clears the first via node.
Definition opengd77base_codeplug.cc:1095
virtual QString name() const
Returns the name of the system.
Definition opengd77base_codeplug.cc:1006
virtual QString via2Call() const
Returns the second via node call.
Definition opengd77base_codeplug.cc:1106
virtual void enableTransmitQSY(bool enable)
Enables adding QSY text to the APRS message.
Definition opengd77base_codeplug.cc:1068
virtual void setVia1(const QString &call, unsigned int ssid)
Sets the first via node.
Definition opengd77base_codeplug.cc:1089
virtual unsigned int version() const
Returns the version number.
Definition opengd77base_codeplug.cc:2665
bool isValid() const
Returns true if the pointer is not null.
Definition opengd77base_codeplug.cc:2648
virtual BootMelodyElement bootMelody() const
Returns boot melody settings, if present.
Definition opengd77base_codeplug.cc:2709
virtual SatelliteBankElement satellites() const
Returns statellite settings bank, if present.
Definition opengd77base_codeplug.cc:2688
AdditionalSettingsElement(uint8_t *ptr, size_t size)
Hidden constructor.
Definition opengd77base_codeplug.cc:2635
virtual bool hasSettings(Settings set) const
Returns true, if the given settings is stored.
Definition opengd77base_codeplug.cc:2670
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:2653
static constexpr unsigned int size()
Returns the size of the element.
Definition opengd77base_codeplug.hh:1440
virtual QString magic() const
Returns the magic string.
Definition opengd77base_codeplug.cc:2660
Encodes the boot melody.
Definition opengd77base_codeplug.hh:1380
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:2585
virtual bool encode(Context &ctx, const Melody *melody, const ErrorStack &err=ErrorStack())
Encodes the given melody.
Definition opengd77base_codeplug.cc:2593
static constexpr unsigned int size()
The size of the element.
Definition opengd77base_codeplug.hh:1386
virtual bool decode(Context &ctx, Melody *melody, const ErrorStack &err=ErrorStack()) const
Decodes the boot melody.
Definition opengd77base_codeplug.cc:2613
BootMelodyElement(uint8_t *ptr)
Constructor.
Definition opengd77base_codeplug.cc:2577
static constexpr unsigned int magic()
The magic number of the element.
Definition opengd77base_codeplug.hh:1388
virtual ~BootSettingsElement()
Destructor.
Definition opengd77base_codeplug.cc:1523
virtual void setLine1(const QString &text)
Sets the first line.
Definition opengd77base_codeplug.cc:1574
virtual QString line2() const
Returns the Second line.
Definition opengd77base_codeplug.cc:1579
BootSettingsElement(uint8_t *ptr, unsigned size)
Hidden constructor.
Definition opengd77base_codeplug.cc:1511
virtual QString line1() const
Returns the first line.
Definition opengd77base_codeplug.cc:1570
virtual void enableBootText(bool enable)
Enables/disables boot text.
Definition opengd77base_codeplug.cc:1542
virtual bool encode(const Context &ctx, const ErrorStack &err=ErrorStack())
Encodes boot text settings from configuration.
Definition opengd77base_codeplug.cc:1589
virtual unsigned bootPassword() const
Returns the boot password (6 digit).
Definition opengd77base_codeplug.cc:1553
virtual bool bootPasswordEnabled() const
Returns true if the boot password is enabled.
Definition opengd77base_codeplug.cc:1548
virtual void setLine2(const QString &text)
Sets the second line.
Definition opengd77base_codeplug.cc:1583
virtual void clearBootPassword()
Clear boot password.
Definition opengd77base_codeplug.cc:1564
virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack())
Updates the configuration with the boot text settings.
Definition opengd77base_codeplug.cc:1597
virtual bool bootText() const
Returns true if the text is shown on boot, other wise an image is shown.
Definition opengd77base_codeplug.cc:1537
virtual void setBootPassword(unsigned passwd)
Sets the boot password (6 digit).
Definition opengd77base_codeplug.cc:1558
void clear()
Resets the settings.
Definition opengd77base_codeplug.cc:1528
virtual ~ChannelBankElement()
Destructor.
Definition opengd77base_codeplug.cc:736
virtual uint8_t * get(unsigned idx) const
Returns a pointer to the channel at the given index.
Definition opengd77base_codeplug.cc:757
virtual bool isEnabled(unsigned idx) const
Returns true if the channel is enabled.
Definition opengd77base_codeplug.cc:746
ChannelBankElement(uint8_t *ptr, unsigned size)
Hidden constructor.
Definition opengd77base_codeplug.cc:724
ChannelElement channel(unsigned int n)
Returns the n-th channel.
Definition opengd77base_codeplug.cc:762
void clear()
Clears the bank.
Definition opengd77base_codeplug.cc:741
static constexpr unsigned int size()
The size of the channel bank.
Definition opengd77base_codeplug.hh:300
virtual void enable(unsigned idx, bool enabled)
Enable/disable a channel in the bank.
Definition opengd77base_codeplug.cc:751
Implements the base for all OpenGD77 channel encodings.
Definition opengd77base_codeplug.hh:38
virtual unsigned int dmrId() const
Returns the DMR ID for this channel.
Definition opengd77base_codeplug.cc:329
Alias
Alias to transmit.
Definition opengd77base_codeplug.hh:47
virtual void enableSimplex(bool enable)
Sets the channel to simplex.
Definition opengd77base_codeplug.cc:296
virtual void setBandwidth(FMChannel::Bandwidth bw)
Sets the bandwidth.
Definition opengd77base_codeplug.cc:480
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
ChannelElement(uint8_t *ptr, size_t size)
Constructs a channel from the given memory.
Definition opengd77base_codeplug.cc:77
virtual bool beep() const
Returns true, if the "beep" is enabled.
Definition opengd77base_codeplug.cc:313
virtual DMRChannel::TimeSlot timeSlot() const
Returns the time slot of the channel.
Definition opengd77base_codeplug.cc:466
virtual void enableRXOnly(bool enable)
Enables/disables RX only.
Definition opengd77base_codeplug.cc:489
static constexpr unsigned int size()
The size of the channel.
Definition opengd77base_codeplug.hh:67
virtual OpenGD77ChannelExtension::TalkerAlias aliasTimeSlot1() const
Returns the alias transmitted on time slot 1.
Definition opengd77base_codeplug.cc:420
virtual void setTXTone(const SelectiveCall &code)
Sets the TX subtone.
Definition opengd77base_codeplug.cc:285
virtual bool hasDMRId() const
Returns true if the global DMR ID is overridden.
Definition opengd77base_codeplug.cc:324
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:455
virtual Interval transmitTimeout() const
Returns the transmit timeout.
Definition opengd77base_codeplug.cc:210
virtual bool fixedPositionEnabled() const
Returns true, if a fixed position is set for the channel.
Definition opengd77base_codeplug.cc:229
virtual void clearGroupListIndex()
Clears the group list index.
Definition opengd77base_codeplug.cc:362
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:532
virtual void setDMRId(unsigned int id)
Sets the DMR ID for this channel.
Definition opengd77base_codeplug.cc:334
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:476
virtual void enableSkipZoneScan(bool enable)
Enables/disables skipping in zone scan.
Definition opengd77base_codeplug.cc:507
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:383
virtual bool powerSave() const
Returns true, if the power-save feature is enabled.
Definition opengd77base_codeplug.cc:302
SquelchMode
Possible squelch modes.
Definition opengd77base_codeplug.hh:52
virtual void clearTXContact()
Clears the TX contact index.
Definition opengd77base_codeplug.cc:414
Mode
Possible channel types.
Definition opengd77base_codeplug.hh:41
@ MODE_ANALOG
Analog channel, aka FM.
Definition opengd77base_codeplug.hh:42
@ MODE_DIGITAL
Digital channel, aka DMR.
Definition opengd77base_codeplug.hh:43
virtual void setTXContactIndex(unsigned int index)
Sets the TX contact index.
Definition opengd77base_codeplug.cc:409
virtual bool vox() const
Returns true if VOX is enabled.
Definition opengd77base_codeplug.cc:512
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:368
virtual SelectiveCall txTone() const
Returns the TX subtone.
Definition opengd77base_codeplug.cc:280
virtual SelectiveCall rxTone() const
Returns the RX subtone.
Definition opengd77base_codeplug.cc:270
virtual void setAliasTimeSlot1(OpenGD77ChannelExtension::TalkerAlias alias)
Sets the alias transmitted on time slot 1.
Definition opengd77base_codeplug.cc:432
virtual bool skipScan() const
Returns true if channel is skipped in a scan.
Definition opengd77base_codeplug.cc:494
virtual void clearDMRId()
Resets the DMR ID for this channel to the global one.
Definition opengd77base_codeplug.cc:340
virtual bool rxOnly() const
Returns true if RX only is enabled.
Definition opengd77base_codeplug.cc:485
virtual Frequency rxFrequency() const
Returns the RX frequency of the channel.
Definition opengd77base_codeplug.cc:135
virtual void enableFixedPosition(bool enable)
Resets the fixed position.
Definition opengd77base_codeplug.cc:264
virtual unsigned groupListIndex() const
Returns the group-list index.
Definition opengd77base_codeplug.cc:352
virtual bool skipZoneScan() const
Returns true if channel is skipped in zone scan.
Definition opengd77base_codeplug.cc:503
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:372
virtual ~ChannelElement()
Destructor.
Definition opengd77base_codeplug.cc:89
virtual unsigned int txContactIndex() const
Returns the TX contact index.
Definition opengd77base_codeplug.cc:404
virtual void setAPRSIndex(unsigned int index)
Sets the APRS system index.
Definition opengd77base_codeplug.cc:388
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:649
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:551
virtual void setGroupListIndex(unsigned index)
Sets the group-list index.
Definition opengd77base_codeplug.cc:357
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:470
virtual OpenGD77ChannelExtension::TalkerAlias aliasTimeSlot2() const
Returns the alias transmitted on time slot 2.
Definition opengd77base_codeplug.cc:443
virtual void enableVOX(bool enable)
Enables/disables VOX.
Definition opengd77base_codeplug.cc:516
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:347
virtual bool isSimplex() const
Returns true if the channel is set to simplex.
Definition opengd77base_codeplug.cc:291
virtual SquelchMode squelchMode() const
Returns the squelch mode.
Definition opengd77base_codeplug.cc:522
virtual void clearAPRSIndex()
Resets the APRS system index.
Definition opengd77base_codeplug.cc:393
virtual void enablePowerSave(bool enable)
Enables/disables power-save.
Definition opengd77base_codeplug.cc:307
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:275
virtual void enableBeep(bool enable)
Enables/disables "the beep".
Definition opengd77base_codeplug.cc:318
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:608
virtual void enableSkipScan(bool enable)
Enables/disables skipping in scan.
Definition opengd77base_codeplug.cc:498
virtual void setSquelch(SquelchMode mode, unsigned int level)
Set the squelch level and mode.
Definition opengd77base_codeplug.cc:538
virtual bool hasTXContact() const
Returns true, if the TX contact is set.
Definition opengd77base_codeplug.cc:399
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:378
static constexpr unsigned int size()
The size of the element.
Definition opengd77base_codeplug.hh:1028
ContactBankElement(uint8_t *ptr, size_t size)
Hidden constructor.
Definition opengd77base_codeplug.cc:1971
virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack())
Decodes all DMR contacts.
Definition opengd77base_codeplug.cc:2016
void clear()
Resets the contact.
Definition opengd77base_codeplug.cc:1985
virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack())
Encodes all DMR contacts.
Definition opengd77base_codeplug.cc:1998
ContactElement contact(unsigned int idx) const
Returns the i-th contact element.
Definition opengd77base_codeplug.cc:1992
Implements digital contacts in OpenGD77 codeplugs.
Definition opengd77base_codeplug.hh:942
static constexpr unsigned int size()
The size of the contact element.
Definition opengd77base_codeplug.hh:963
virtual void setName(const QString name)
Sets the name of the contact.
Definition opengd77base_codeplug.cc:1865
void clear()
Resets the contact.
Definition opengd77base_codeplug.cc:1845
virtual void setNumber(unsigned id)
Sets the DMR number of the contact.
Definition opengd77base_codeplug.cc:1876
virtual DMRContact::Type type() const
Returns the call type.
Definition opengd77base_codeplug.cc:1882
virtual void setTimeSlotOverride(TimeSlotOverride ts)
Sets the time slot override.
Definition opengd77base_codeplug.cc:1907
virtual bool encode(const DMRContact *obj, Context &ctx, const ErrorStack &err=ErrorStack())
Resets this codeplug contact from the given DigitalContact.
Definition opengd77base_codeplug.cc:1942
virtual unsigned number() const
Returns the DMR number of the contact.
Definition opengd77base_codeplug.cc:1871
virtual ~ContactElement()
Destructor.
Definition opengd77base_codeplug.cc:1839
bool isValid() const
Returns true if the contact is valid.
Definition opengd77base_codeplug.cc:1854
virtual void setType(DMRContact::Type type)
Sets the call type.
Definition opengd77base_codeplug.cc:1893
ContactElement(uint8_t *ptr, unsigned size)
Hidden constructor.
Definition opengd77base_codeplug.cc:1827
virtual TimeSlotOverride timeSlotOverride() const
Returns the time slot override of the contact.
Definition opengd77base_codeplug.cc:1903
TimeSlotOverride
Possible values for the time-slot override option.
Definition opengd77base_codeplug.hh:946
@ TS2
Force time-slot to TS2.
Definition opengd77base_codeplug.hh:949
@ None
Do not override time-slot of channel.
Definition opengd77base_codeplug.hh:947
@ TS1
Force time-slot to TS1.
Definition opengd77base_codeplug.hh:948
virtual QString name() const
Returns the name of the contact.
Definition opengd77base_codeplug.cc:1860
virtual DMRContact * decode(Context &ctx, const ErrorStack &err=ErrorStack()) const
Constructs a DigitalContact instance from this codeplug contact.
Definition opengd77base_codeplug.cc:1913
virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack())
Decodes all DTMF contacts.
Definition opengd77base_codeplug.cc:1490
DTMFContactBankElement(uint8_t *ptr, size_t size)
Hidden constructor.
Definition opengd77base_codeplug.cc:1446
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:1460
DTMFContactElement contact(unsigned int n) const
Returns the n-th DTMF contact.
Definition opengd77base_codeplug.cc:1467
virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack())
Encodes all DTMF contacts.
Definition opengd77base_codeplug.cc:1473
static constexpr unsigned int size()
Returns the size of the element.
Definition opengd77base_codeplug.hh:729
DTMF contact element.
Definition opengd77base_codeplug.hh:668
bool isValid() const
Returns true if the pointer is not null.
Definition opengd77base_codeplug.cc:1373
static constexpr unsigned int size()
Returns the size of the element.
Definition opengd77base_codeplug.hh:678
virtual QString number() const
Returns the DTMF number.
Definition opengd77base_codeplug.cc:1397
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:1379
DTMFContactElement(uint8_t *ptr, size_t size)
Hidden constructor.
Definition opengd77base_codeplug.cc:1359
virtual void setNumber(const QString &number)
Sets the DTMF number.
Definition opengd77base_codeplug.cc:1407
virtual void setName(const QString &name)
Sets the name.
Definition opengd77base_codeplug.cc:1391
virtual bool encode(const DTMFContact *contact, const Context &ctx, const ErrorStack &err=ErrorStack())
Encodes a number.
Definition opengd77base_codeplug.cc:1418
virtual QString name() const
Returns the name.
Definition opengd77base_codeplug.cc:1386
virtual DTMFContact * decode(const Context &ctx, const ErrorStack &err=ErrorStack())
Decodes a number.
Definition opengd77base_codeplug.cc:1430
virtual Frequency vhfMinFrequency() const
Returns the VHF minimum frequency.
Definition opengd77base_codeplug.cc:900
virtual void setUHFMaxFrequency(const Frequency &f)
Sets the UHF maximum frequency.
Definition opengd77base_codeplug.cc:894
virtual bool encode(const Context &ctx, const ErrorStack &err=ErrorStack())
Encodes the settings.
Definition opengd77base_codeplug.cc:944
virtual bool decode(const Context &ctx, const ErrorStack &err=ErrorStack())
Decodes the settings.
Definition opengd77base_codeplug.cc:958
virtual void setVHFMinFrequency(const Frequency &f)
Sets the VHF minimum frequency.
Definition opengd77base_codeplug.cc:905
virtual Frequency uhfMinFrequency() const
Returns the UHF minimum frequency.
Definition opengd77base_codeplug.cc:879
virtual void setVHFMaxFrequency(const Frequency &f)
Sets the VHF maximum frequency.
Definition opengd77base_codeplug.cc:916
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:872
static constexpr unsigned int size()
Returns the size of the element.
Definition opengd77base_codeplug.hh:410
virtual unsigned int radioId() const
Returns the DMR ID.
Definition opengd77base_codeplug.cc:933
virtual void setCall(const QString &call)
Sets the radio callsign.
Definition opengd77base_codeplug.cc:927
virtual void setRadioId(unsigned int id)
Sets the DMR ID.
Definition opengd77base_codeplug.cc:938
virtual Frequency vhfMaxFrequency() const
Returns the VHF maximum frequency.
Definition opengd77base_codeplug.cc:911
GeneralSettingsElement(uint8_t *ptr, size_t size)
Hidden constructor.
Definition opengd77base_codeplug.cc:858
virtual Frequency uhfMaxFrequency() const
Returns the UHF maximum frequency.
Definition opengd77base_codeplug.cc:889
virtual void setUHFMinFrequency(const Frequency &f)
Sets the UHF minimum frequency.
Definition opengd77base_codeplug.cc:884
virtual QString call() const
Returns the radio callsign.
Definition opengd77base_codeplug.cc:922
void clear()
Clears the group list bank.
Definition opengd77base_codeplug.cc:2152
virtual void clearGroupList(unsigned int i)
Clears the i-th group list.
Definition opengd77base_codeplug.cc:2179
virtual void setGroupListContactCount(unsigned int i, unsigned int count)
Sets the number of contacts in the given group list.
Definition opengd77base_codeplug.cc:2169
GroupListBankElement(uint8_t *ptr, size_t size)
Hidden constructor.
Definition opengd77base_codeplug.cc:2138
static constexpr unsigned int size()
Returns the size of the element.
Definition opengd77base_codeplug.hh:1132
virtual bool link(Context &ctx, const ErrorStack &err=ErrorStack())
Links all group lists.
Definition opengd77base_codeplug.cc:2223
virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack())
Encodes all group lists.
Definition opengd77base_codeplug.cc:2186
virtual bool hasGroupList(unsigned int i) const
Returns true, if the i-th group list is encoded.
Definition opengd77base_codeplug.cc:2159
virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack())
Decodes all group lists.
Definition opengd77base_codeplug.cc:2205
virtual unsigned int groupListContactCount(unsigned int i) const
Returns the number of contacts in the given group list.
Definition opengd77base_codeplug.cc:2164
virtual GroupListElement groupList(unsigned int i) const
Returns the i-th group list.
Definition opengd77base_codeplug.cc:2174
Encodes a group list for all OpenGD77 codeplugs.
Definition opengd77base_codeplug.hh:1063
virtual bool link(RXGroupList *lst, Context &ctx, const ErrorStack &err=ErrorStack()) const
Links the group list element.
Definition opengd77base_codeplug.cc:2117
void clear()
Clears the group list.
Definition opengd77base_codeplug.cc:2050
virtual QString name() const
Returns the name of the group list.
Definition opengd77base_codeplug.cc:2057
virtual void setContactIndex(unsigned int i, unsigned int contactIdx)
Sets the i-th contact index.
Definition opengd77base_codeplug.cc:2078
GroupListElement(uint8_t *ptr, size_t size)
Hidden constructor.
Definition opengd77base_codeplug.cc:2036
virtual void setName(const QString &name)
Sets the name of the group list.
Definition opengd77base_codeplug.cc:2062
virtual bool hasContactIndex(unsigned int i) const
Returns true, if the i-th contact is set.
Definition opengd77base_codeplug.cc:2068
virtual RXGroupList * decode(Context &ctx, const ErrorStack &err=ErrorStack()) const
Decodes group list element.
Definition opengd77base_codeplug.cc:2110
virtual bool encode(RXGroupList *lst, Context &ctx, const ErrorStack &err=ErrorStack())
Encodes group list element.
Definition opengd77base_codeplug.cc:2089
virtual void clearContactIndex(unsigned int i)
Clears the i-th contact index.
Definition opengd77base_codeplug.cc:2083
virtual unsigned int contactIndex(unsigned int i) const
Returns the i-th contact index.
Definition opengd77base_codeplug.cc:2073
static constexpr unsigned int size()
Returns the size of the element.
Definition opengd77base_codeplug.hh:1073
void setPause()
Set note as pause.
Definition opengd77base_codeplug.cc:2556
bool isValid() const override
Returns true if the pointer is not null.
Definition opengd77base_codeplug.cc:2527
static constexpr unsigned int size()
Size of the element.
Definition opengd77base_codeplug.hh:1341
unsigned int duration() const
Returns the duration in ms.
Definition opengd77base_codeplug.cc:2562
double frequency() const
Returns the pitch in Hz.
Definition opengd77base_codeplug.cc:2538
void setDuration(unsigned int ms)
Sets the interval.
Definition opengd77base_codeplug.cc:2567
void clear() override
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:2522
void setFrequency(double pitch)
Sets the pitch in Hz.
Definition opengd77base_codeplug.cc:2545
bool isPause() const
Retunrs true if the note is a pause.
Definition opengd77base_codeplug.cc:2533
Implements the satellite config bank.
Definition opengd77base_codeplug.hh:1294
SatelliteElement satellite(unsigned int idx)
Returns the i-th satellite.
Definition opengd77base_codeplug.cc:2487
static constexpr unsigned int magic()
The magic number of the element.
Definition opengd77base_codeplug.hh:1306
bool encode(SatelliteDatabase *db, const ErrorStack &err=ErrorStack())
Encodes the given satellite database.
Definition opengd77base_codeplug.cc:2492
static constexpr unsigned int size()
The size of the element.
Definition opengd77base_codeplug.hh:1304
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:2479
SatelliteBankElement(uint8_t *ptr, size_t size)
Hidden constructor.
Definition opengd77base_codeplug.cc:2465
Encodes a satellite for the OpenGD77 devices.
Definition opengd77base_codeplug.hh:1177
void writeDigit(const Offset::Bit &offset, uint8_t digit)
Writes a single digit at the given offset.
Definition opengd77base_codeplug.cc:2262
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:2323
virtual void setName(const QString &name)
Sets the name of the element.
Definition opengd77base_codeplug.cc:2338
virtual void setPerigee(double arg)
Sets argument of perigee.
Definition opengd77base_codeplug.cc:2369
void setAPRSPath(const QString &path)
Sets the APRS path.
Definition opengd77base_codeplug.cc:2424
void setFMDownlink(const Frequency &f)
Sets the downlink frequency.
Definition opengd77base_codeplug.cc:2390
virtual void setMeanMotionDerivative(double dmm)
Sets the first derivative of mean motion.
Definition opengd77base_codeplug.cc:2349
virtual void setEccentricity(double ecc)
Sets eccentricity.
Definition opengd77base_codeplug.cc:2364
void setFMUplink(const Frequency &f)
Sets the uplink frequency.
Definition opengd77base_codeplug.cc:2395
virtual void setRevolutionNumber(unsigned int num)
Sets the revolution number at epoch.
Definition opengd77base_codeplug.cc:2384
virtual void setEpoch(const ::OrbitalElement::Epoch &epoch)
Sets the epoch.
Definition opengd77base_codeplug.cc:2343
virtual void setInclination(double incl)
Sets the inclination.
Definition opengd77base_codeplug.cc:2354
SatelliteElement(uint8_t *ptr, size_t size)
Hidden constructor.
Definition opengd77base_codeplug.cc:2242
void clear()
Abstract method to reset the element within the codeplug.
Definition opengd77base_codeplug.cc:2256
virtual void setAscension(double asc)
Right ascension of the ascending node.
Definition opengd77base_codeplug.cc:2359
void setCTCSS(const SelectiveCall &call)
Sets the CTCSS tone.
Definition opengd77base_codeplug.cc:2400
void setAPRSDownlink(const Frequency &f)
Sets the APRS downlink frequency.
Definition opengd77base_codeplug.cc:2407
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:2297
void setBeacon(const Frequency &f)
Sets the beacon frequency.
Definition opengd77base_codeplug.cc:2418
virtual void setMeanMotion(double mm)
Sets the first derivative of mean motion.
Definition opengd77base_codeplug.cc:2379
virtual bool encode(const Satellite &sat, const ErrorStack &err=ErrorStack())
Encodes a satellite.
Definition opengd77base_codeplug.cc:2430
virtual void setMeanAnomaly(double ma)
Set the mean anomaly.
Definition opengd77base_codeplug.cc:2374
void writeInteger(const Offset::Bit &offset, int value, bool sign, unsigned dec)
Write a fixed digit integer value.
Definition opengd77base_codeplug.cc:2275
void setAPRSUplink(const Frequency &f)
Sets the APRS uplink frequency.
Definition opengd77base_codeplug.cc:2412
static constexpr unsigned int size()
The size of the element.
Definition opengd77base_codeplug.hh:1187
virtual double txOffset() const
Returns the transmit frequency offset.
Definition opengd77base_codeplug.cc:845
virtual double stepSize() const
Returns the tuning step-size in kHz.
Definition opengd77base_codeplug.cc:802
virtual OffsetMode offsetMode() const
Returns the transmit frequency offset mode.
Definition opengd77base_codeplug.cc:837
void setName(const QString &name)
The VFO channel has no name.
Definition opengd77base_codeplug.cc:796
virtual void setOffsetMode(OffsetMode mode)
Sets the transmit frequency offset mode.
Definition opengd77base_codeplug.cc:841
virtual void setStepSize(double kHz)
Sets the tuning step-size in kHz.
Definition opengd77base_codeplug.cc:817
QString name() const
The VFO channel has no name.
Definition opengd77base_codeplug.cc:792
void clear()
Resets the channel.
Definition opengd77base_codeplug.cc:784
VFOChannelElement(uint8_t *ptr, unsigned size)
Hidden constructor.
Definition opengd77base_codeplug.cc:771
StepSize
Possible tuning step sizes.
Definition opengd77base_codeplug.hh:347
@ SS5kHz
5kHz
Definition opengd77base_codeplug.hh:349
@ SS12_5kHz
12.5kHz
Definition opengd77base_codeplug.hh:352
@ SS10kHz
10kHz
Definition opengd77base_codeplug.hh:351
@ SS30kHz
30kHz
Definition opengd77base_codeplug.hh:354
@ SS2_5kHz
2.5kHz
Definition opengd77base_codeplug.hh:348
@ SS20kHz
20kHz
Definition opengd77base_codeplug.hh:353
@ SS6_25kHz
6.25kHz
Definition opengd77base_codeplug.hh:350
@ SS50kHz
50kHz
Definition opengd77base_codeplug.hh:355
virtual void setTXOffset(double f)
Sets the transmit frequency offset in MHz.
Definition opengd77base_codeplug.cc:849
OffsetMode
Possible offset frequency modes.
Definition opengd77base_codeplug.hh:340
@ Positive
Transmit offset frequency is positive (TX above RX).
Definition opengd77base_codeplug.hh:342
@ Off
Disables transmit frequency offset.
Definition opengd77base_codeplug.hh:341
@ Negative
Transmit offset frequency is negative (TX below RX).
Definition opengd77base_codeplug.hh:343
virtual void enable(unsigned idx, bool enabled)
Enable/disable a zone in the bank.
Definition opengd77base_codeplug.cc:1754
ZoneBankElement(uint8_t *ptr, unsigned size)
Hidden constructor.
Definition opengd77base_codeplug.cc:1727
ZoneElement zone(unsigned int n)
Returns the n-th zone.
Definition opengd77base_codeplug.cc:1761
virtual bool link(Context &ctx, const ErrorStack &err=ErrorStack())
Links all zones.
Definition opengd77base_codeplug.cc:1806
~ZoneBankElement()
Destructor.
Definition opengd77base_codeplug.cc:1739
virtual bool isEnabled(unsigned idx) const
Returns true if the zone is enabled.
Definition opengd77base_codeplug.cc:1749
static constexpr unsigned int size()
The size of the zone element.
Definition opengd77base_codeplug.hh:899
virtual bool decode(Context &ctx, const ErrorStack &err=ErrorStack())
Decodes all zones.
Definition opengd77base_codeplug.cc:1786
virtual bool encode(Context &ctx, const ErrorStack &err=ErrorStack())
Encodes all zones.
Definition opengd77base_codeplug.cc:1767
void clear()
Resets the bank.
Definition opengd77base_codeplug.cc:1744
Represents a zone within OpenGD77 codeplugs.
Definition opengd77base_codeplug.hh:824
bool isValid() const
Returns true if the zone is valid.
Definition opengd77base_codeplug.cc:1631
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:1704
void clear()
Resets the zone.
Definition opengd77base_codeplug.cc:1626
static constexpr unsigned int size()
The size of the zone element.
Definition opengd77base_codeplug.hh:835
virtual QString name() const
Returns the name of the zone.
Definition opengd77base_codeplug.cc:1636
virtual Zone * decode(const Context &ctx, const ErrorStack &err=ErrorStack()) const
Constructs a generic Zone object from this codeplug zone.
Definition opengd77base_codeplug.cc:1673
ZoneElement(uint8_t *ptr, unsigned size)
Hidden constructor.
Definition opengd77base_codeplug.cc:1609
virtual bool hasMember(unsigned n) const
Returns true if a member is stored at the given index.
Definition opengd77base_codeplug.cc:1646
virtual unsigned member(unsigned n) const
Returns the n-th member index.
Definition opengd77base_codeplug.cc:1653
virtual void setMember(unsigned n, unsigned idx)
Sets the n-th member index.
Definition opengd77base_codeplug.cc:1660
virtual void clearMember(unsigned n)
Clears the n-th member index.
Definition opengd77base_codeplug.cc:1667
virtual void setName(const QString &name)
Sets the name of the zone.
Definition opengd77base_codeplug.cc:1640
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:1684
virtual void clearZones()=0
Clears all zones.
ImageType
Possible image types.
Definition opengd77base_codeplug.hh:22
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:2904
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.
OpenGD77BaseCodeplug(QObject *parent=nullptr)
Default hidden constructor.
Definition opengd77base_codeplug.cc:2733
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:2930
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:2851
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:2832
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:2805
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:2914
virtual void clear()
Clears and resets the complete codeplug to some default values.
Definition opengd77base_codeplug.cc:2741
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:2763
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:650
static constexpr unsigned int systems()
The total number of APRS systems.
Definition opengd77base_codeplug.hh:652
Some limits.
Definition opengd77base_codeplug.hh:586
static constexpr unsigned int commentLength()
The maximum comment length in chars.
Definition opengd77base_codeplug.hh:590
static constexpr unsigned int nameLength()
The maximum name length in chars.
Definition opengd77base_codeplug.hh:588
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:596
Some limits for the element.
Definition opengd77base_codeplug.hh:1459
static constexpr unsigned int magicStringLength()
Size of magic string.
Definition opengd77base_codeplug.hh:1461
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:1466
Some limits for the melody config.
Definition opengd77base_codeplug.hh:1399
static constexpr unsigned int notes()
The maximum number of notes/pauses.
Definition opengd77base_codeplug.hh:1401
Some internal offsets.
Definition opengd77base_codeplug.hh:1406
Some limits for the settings.
Definition opengd77base_codeplug.hh:804
static constexpr unsigned int lineLength()
The total number of contacts.
Definition opengd77base_codeplug.hh:806
Some limits for the channel bank.
Definition opengd77base_codeplug.hh:316
static constexpr unsigned int channelCount()
The maximum number of channels.
Definition opengd77base_codeplug.hh:318
Some internal offset within the element.
Definition opengd77base_codeplug.hh:323
Some limits for this element.
Definition opengd77base_codeplug.hh:235
static constexpr unsigned int nameLength()
The maximum length of the name.
Definition opengd77base_codeplug.hh:237
Some internal offsets within the channel element.
Definition opengd77base_codeplug.hh:242
Some limits for the element.
Definition opengd77base_codeplug.hh:1045
static constexpr unsigned int contactCount()
Maximum number of contacts.
Definition opengd77base_codeplug.hh:1047
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:1052
Some limits for the contact.
Definition opengd77base_codeplug.hh:998
static constexpr unsigned int nameLength()
Maximum name length.
Definition opengd77base_codeplug.hh:1000
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:1005
Some limits for the bank.
Definition opengd77base_codeplug.hh:743
static constexpr unsigned int contacts()
The total number of contacts.
Definition opengd77base_codeplug.hh:745
Some limits.
Definition opengd77base_codeplug.hh:700
static constexpr unsigned int numberLength()
The maximum length of the number.
Definition opengd77base_codeplug.hh:704
static constexpr unsigned int nameLength()
The maximum name length.
Definition opengd77base_codeplug.hh:702
Some limits.
Definition opengd77base_codeplug.hh:449
static constexpr unsigned int callLength()
The maximum call length.
Definition opengd77base_codeplug.hh:451
Some internal offset within the element.
Definition opengd77base_codeplug.hh:456
Some limits for the element.
Definition opengd77base_codeplug.hh:1157
static constexpr unsigned int groupListCount()
Maximum number of group lists.
Definition opengd77base_codeplug.hh:1159
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:1164
Some limits for the element.
Definition opengd77base_codeplug.hh:1101
static constexpr unsigned int contactCount()
Maximum number of contacts.
Definition opengd77base_codeplug.hh:1105
static constexpr unsigned int nameLength()
Maximum name length.
Definition opengd77base_codeplug.hh:1103
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:1110
Internal offsets.
Definition opengd77base_codeplug.hh:1362
Some limits for the satellite config.
Definition opengd77base_codeplug.hh:1317
static constexpr unsigned int satellites()
The maximum number of satellites.
Definition opengd77base_codeplug.hh:1319
Some internal offsets.
Definition opengd77base_codeplug.hh:1324
Some limits for the zone bank.
Definition opengd77base_codeplug.hh:1258
static constexpr unsigned int nameLength()
The maximum name length.
Definition opengd77base_codeplug.hh:1260
static constexpr unsigned int pathLength()
Maximum length of the APRS path.
Definition opengd77base_codeplug.hh:1262
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:1267
Some limits for the zone bank.
Definition opengd77base_codeplug.hh:923
static constexpr unsigned int zoneCount()
The maximum number of zones in this bank.
Definition opengd77base_codeplug.hh:925
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:930
Some limits for zone elements.
Definition opengd77base_codeplug.hh:866
static constexpr unsigned int nameLength()
The maximum length of the zone name.
Definition opengd77base_codeplug.hh:868
static constexpr unsigned int memberCount()
The maximum number of members.
Definition opengd77base_codeplug.hh:870
Some internal offsets within the element.
Definition opengd77base_codeplug.hh:875
Encodes a selective call.
Definition signaling.hh:13