swift
modulator.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_AVIATION_MODULATORUNIT_H
7 #define SWIFT_MISC_AVIATION_MODULATORUNIT_H
8 
9 #include "misc/pq/frequency.h"
10 #include "misc/propertyindexref.h"
11 
12 namespace swift::misc::aviation
13 {
15  template <class AVIO>
16  class CModulator : public CValueObject<CModulator<AVIO>>
17  {
18  public:
21  {
22  IndexActiveFrequency = CPropertyIndexRef::GlobalIndexCModulator,
23  IndexStandbyFrequency,
24  IndexReceiveVolume,
25  IndexTransmitVolume,
26  IndexEnabledTransmit,
27  IndexEnabledReceive
28  };
29 
31  void toggleActiveStandby();
32 
35 
38 
40  int getVolumeReceive() const;
41 
43  int getVolumeTransmit() const;
44 
46  void setVolumeReceive(int volume);
47 
49  void setVolumeTransmit(int volume);
50 
52  QString getName() const;
53 
55  bool isTransmitEnabled() const;
56 
58  bool isReceiveEnabled() const;
59 
61  void setTransmitEnabled(bool enable);
62 
64  void setReceiveEnabled(bool enable);
65 
67  QVariant propertyByIndex(swift::misc::CPropertyIndexRef index) const;
68 
70  void setPropertyByIndex(swift::misc::CPropertyIndexRef index, const QVariant &variant);
71 
73  int comparePropertyByIndex(swift::misc::CPropertyIndexRef index, const AVIO &compareValue) const;
74 
76  QString convertToQString(bool i18n = false) const;
77 
78  protected:
80  CModulator();
81 
83  CModulator(const QString &name, const swift::misc::physical_quantities::CFrequency &activeFrequency,
84  const swift::misc::physical_quantities::CFrequency &standbyFrequency);
85 
88 
91 
93  void setFrequencyActiveKHz(double frequencyKHz);
94 
96  void setFrequencyStandbyKHz(double frequencyKHz);
97 
99  static const QString &NameCom1();
100 
102  static const QString &NameCom2();
103 
105  static const QString &NameCom3();
106 
108  static const QString &NameNav1();
109 
111  static const QString &NameNav2();
112 
114  static const QString &NameNav3();
115 
116  private:
117  QString m_name;
118  physical_quantities::CFrequency m_frequencyActive;
119  physical_quantities::CFrequency m_frequencyStandby;
120  int m_volumeTransmit = 100;
121  int m_volumeReceive = 100;
122  bool m_transmitEnabled = true;
123  bool m_receiveEnabled = true;
124 
126  AVIO const *derived() const { return static_cast<AVIO const *>(this); }
127 
129  AVIO *derived() { return static_cast<AVIO *>(this); }
130 
131  SWIFT_METACLASS(
132  CModulator,
133  SWIFT_METAMEMBER(name),
134  SWIFT_METAMEMBER(frequencyActive),
135  SWIFT_METAMEMBER(frequencyStandby),
136  SWIFT_METAMEMBER(volumeTransmit),
137  SWIFT_METAMEMBER(volumeReceive),
138  SWIFT_METAMEMBER(transmitEnabled),
139  SWIFT_METAMEMBER(receiveEnabled));
140  };
141 
143  class CComSystem;
144  class CNavSystem;
145 
146  extern template class SWIFT_MISC_EXPORT_DECLARE_TEMPLATE CModulator<CComSystem>;
147  extern template class SWIFT_MISC_EXPORT_DECLARE_TEMPLATE CModulator<CNavSystem>;
149 
150 } // namespace swift::misc::aviation
151 
152 #endif // SWIFT_MISC_AVIATION_MODULATORUNIT_H
Non-owning reference to a CPropertyIndex with a subset of its features.
Mix of the most commonly used mixin classes.
Definition: valueobject.h:114
Base class for COM, NAV, Squawk units.
Definition: modulator.h:17
bool isTransmitEnabled() const
Enabled?
Definition: modulator.cpp:82
static const QString & NameNav2()
NAV2.
Definition: modulator.cpp:240
QVariant propertyByIndex(swift::misc::CPropertyIndexRef index) const
Property by index.
Definition: modulator.cpp:112
void setVolumeReceive(int volume)
Output volume 0.100.
Definition: modulator.cpp:66
void setFrequencyStandbyKHz(double frequencyKHz)
Set standby frequency.
Definition: modulator.cpp:205
static const QString & NameCom3()
COM3.
Definition: modulator.cpp:226
void setPropertyByIndex(swift::misc::CPropertyIndexRef index, const QVariant &variant)
Set property by index.
Definition: modulator.cpp:129
QString getName() const
Name.
Definition: modulator.cpp:106
int getVolumeTransmit() const
Input volume 0..100.
Definition: modulator.cpp:60
void setTransmitEnabled(bool enable)
Enabled?
Definition: modulator.cpp:94
swift::misc::physical_quantities::CFrequency getFrequencyStandby() const
Standby frequency.
Definition: modulator.cpp:36
int getVolumeReceive() const
Output volume 0..100.
Definition: modulator.cpp:54
static const QString & NameNav3()
NAV3.
Definition: modulator.cpp:247
static const QString & NameCom1()
COM1.
Definition: modulator.cpp:212
void setVolumeTransmit(int volume)
Input volume 0..100.
Definition: modulator.cpp:74
static const QString & NameNav1()
NAV1.
Definition: modulator.cpp:233
bool isReceiveEnabled() const
Enabled?
Definition: modulator.cpp:88
void setFrequencyStandby(const swift::misc::physical_quantities::CFrequency &frequency)
Set standby frequency.
Definition: modulator.cpp:48
QString convertToQString(bool i18n=false) const
Cast as QString.
Definition: modulator.cpp:189
swift::misc::physical_quantities::CFrequency getFrequencyActive() const
Active frequency.
Definition: modulator.cpp:30
int comparePropertyByIndex(swift::misc::CPropertyIndexRef index, const AVIO &compareValue) const
Compare by property index.
Definition: modulator.cpp:150
void toggleActiveStandby()
Toggle active and standby frequencies.
Definition: modulator.cpp:22
CModulator()
Default constructor.
Definition: modulator.cpp:174
void setFrequencyActive(const swift::misc::physical_quantities::CFrequency &frequency)
Set active frequency.
Definition: modulator.cpp:42
void setReceiveEnabled(bool enable)
Enabled?
Definition: modulator.cpp:100
static const QString & NameCom2()
COM2.
Definition: modulator.cpp:219
void setFrequencyActiveKHz(double frequencyKHz)
Set active frequency.
Definition: modulator.cpp:198
#define SWIFT_METAMEMBER(MEMBER,...)
Macro to define an element within a metaclass.
Definition: metaclass.h:73
#define SWIFT_MISC_EXPORT_DECLARE_TEMPLATE
Export explicit template declaration.