swift
navsystem.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_NAVSYSTEM_H
7 #define SWIFT_MISC_AVIATION_NAVSYSTEM_H
8 
10 #include "misc/swiftmiscexport.h"
11 
12 namespace swift::misc::aviation
13 {
16  public CModulator<CNavSystem>,
17  public mixin::MetaType<CNavSystem>,
18  public mixin::JsonOperators<CNavSystem>,
19  public mixin::Index<CNavSystem>
20  {
21  public:
24 
27 
28 
29  CNavSystem() = default;
30 
32  CNavSystem(const QString &name, const swift::misc::physical_quantities::CFrequency &activeFrequency,
33  const swift::misc::physical_quantities::CFrequency &standbyFrequency)
34  : CModulator(name, activeFrequency, standbyFrequency)
35  {}
36 
38  void setFrequencyActiveMHz(double frequencyMHz)
39  {
42  this->setFrequencyActive(f);
43  }
44 
46  void setFrequencyStandbyMHz(double frequencyMHz)
47  {
50  this->setFrequencyStandby(f);
51  }
52 
55  {
57  return fr >= 108.0 && fr <= 117.95;
58  }
59 
62  {
64  return fr >= 960.0 && fr <= 1215.0; // valid TACAN frequency
65  }
66 
69  {
70  return isValidCivilNavigationFrequency(f) || isValidMilitaryNavigationFrequency(f);
71  }
72 
74  static CNavSystem getNav1System(double activeFrequencyMHz, double standbyFrequencyMHz = -1)
75  {
80  standbyFrequencyMHz < 0 ? activeFrequencyMHz : standbyFrequencyMHz,
82  }
83 
86  const swift::misc::physical_quantities::CFrequency &standbyFrequency = {
88  {
89  return CNavSystem(CModulator::NameNav1(), activeFrequency,
90  standbyFrequency.isNull() ? activeFrequency : standbyFrequency);
91  }
92 
94  static CNavSystem getNav2System(double activeFrequencyMHz, double standbyFrequencyMHz = -1)
95  {
100  standbyFrequencyMHz < 0 ? activeFrequencyMHz : standbyFrequencyMHz,
102  }
103 
106  const swift::misc::physical_quantities::CFrequency &standbyFrequency = {
108  {
109  return CNavSystem(CModulator::NameNav2(), activeFrequency,
110  standbyFrequency.isNull() ? activeFrequency : standbyFrequency);
111  }
112 
113  private:
115  CNavSystem const *derived() const { return static_cast<CNavSystem const *>(this); }
116 
118  CNavSystem *derived() { return static_cast<CNavSystem *>(this); }
119  };
120 } // namespace swift::misc::aviation
121 
122 Q_DECLARE_METATYPE(swift::misc::aviation::CNavSystem)
123 
124 #endif // SWIFT_MISC_AVIATION_NAVSYSTEM_H
Base class for COM, NAV, Squawk units.
Definition: modulator.h:17
static const QString & NameNav2()
NAV2.
Definition: modulator.cpp:240
static const QString & NameNav1()
NAV1.
Definition: modulator.cpp:233
NAV system (radio navigation)
Definition: navsystem.h:20
static CNavSystem getNav2System(const swift::misc::physical_quantities::CFrequency &activeFrequency, const swift::misc::physical_quantities::CFrequency &standbyFrequency={ 0, swift::misc::physical_quantities::CFrequencyUnit::nullUnit() })
NAV2 unit.
Definition: navsystem.h:105
static bool isValidMilitaryNavigationFrequency(const swift::misc::physical_quantities::CFrequency &f)
Valid military aviation frequency?
Definition: navsystem.h:61
void setFrequencyStandbyMHz(double frequencyMHz)
Set standby frequency.
Definition: navsystem.h:46
static CNavSystem getNav1System(double activeFrequencyMHz, double standbyFrequencyMHz=-1)
NAV1 unit.
Definition: navsystem.h:74
static CNavSystem getNav1System(const swift::misc::physical_quantities::CFrequency &activeFrequency, const swift::misc::physical_quantities::CFrequency &standbyFrequency={ 0, swift::misc::physical_quantities::CFrequencyUnit::nullUnit() })
NAV1 unit.
Definition: navsystem.h:85
static bool isValidCivilNavigationFrequency(const swift::misc::physical_quantities::CFrequency &f)
Valid civil aviation frequency?
Definition: navsystem.h:54
static CNavSystem getNav2System(double activeFrequencyMHz, double standbyFrequencyMHz=-1)
NAV2 unit.
Definition: navsystem.h:94
void setFrequencyActiveMHz(double frequencyMHz)
Set active frequency.
Definition: navsystem.h:38
static bool isValidNavigationFrequency(const swift::misc::physical_quantities::CFrequency &f)
Valid aviation frequency (military/civil)
Definition: navsystem.h:68
static double round(double value, int digits)
Utility round method.
Definition: mathutils.cpp:18
CRTP class template from which a derived class can inherit property indexing functions.
Definition: mixinindex.h:40
CRTP class template which will generate marshalling operators for a derived class with its own marsha...
Definition: mixinjson.h:37
CRTP class template from which a derived class can inherit common methods dealing with the metatype o...
Definition: mixinmetatype.h:29
static CFrequencyUnit nullUnit()
Null unit.
Definition: units.h:364
static CFrequencyUnit MHz()
Megahertz.
Definition: units.h:388
double valueRounded(MU unit, int digits=-1) const
Rounded value in given unit.
#define SWIFT_MISC_DECLARE_USING_MIXIN_INDEX(DERIVED)
When a derived class and a base class both inherit from mixin::Index, the derived class uses this mac...
Definition: mixinindex.h:151
#define SWIFT_MISC_DECLARE_USING_MIXIN_METATYPE(DERIVED)
When a derived class and a base class both inherit from mixin::MetaType, the derived class uses this ...
#define SWIFT_MISC_EXPORT
Export a class or function from the library.