26class FGCom :
public SGSubsystem,
27 public SGPropertyChangeListener
39 void update(
double dt)
override;
48 SGPropertyNode_ptr _ptt_node;
49 SGPropertyNode_ptr _selected_comm_node;
50 SGPropertyNode_ptr _commFrequencyNode;
51 SGPropertyNode_ptr _commVolumeNode;
52 SGPropertyNode_ptr _test_node;
53 SGPropertyNode_ptr _text_node;
54 SGPropertyNode_ptr _server_node;
55 SGPropertyNode_ptr _enabled_node;
56 SGPropertyNode_ptr _version_node;
57 SGPropertyNode_ptr _micBoost_node;
58 SGPropertyNode_ptr _callsign_node;
59 SGPropertyNode_ptr _register_node;
60 SGPropertyNode_ptr _username_node;
61 SGPropertyNode_ptr _password_node;
62 SGPropertyNode_ptr _micLevel_node;
63 SGPropertyNode_ptr _silenceThd_node;
64 SGPropertyNode_ptr _speakerLevel_node;
65 SGPropertyNode_ptr _deviceID_node[4];
66 SGPropertyNode_ptr _deviceName_node[4];
67 SGPropertyNode_ptr _deviceInput_node[4];
68 SGPropertyNode_ptr _deviceOutput_node[4];
69 SGPropertyNode_ptr _selectedInput_node;
70 SGPropertyNode_ptr _selectedOutput_node;
71 SGPropertyNode_ptr _showMessages_node;
72 SGPropertyNode_ptr _mpTransmitFrequencyNode;
73 SGPropertyNode_ptr _mpTransmitPowerNode;
75 double _maxRange = 0.0;
76 double _minRange = 0.0;
77 double _currentCommFrequency = 0.0;
78 double _currentCallFrequency = 0.0;
79 bool _register =
true;
80 bool _enabled =
false;
81 bool _initialized =
false;
83 int _currentCallIdent = -1;
85 int _listener_active = 0;
87 std::string _callsign;
88 std::string _username;
89 std::string _password;
90 SGTimeStamp _processingTimer;
93 std::string computePhoneNumber(
const double& freq,
const std::string& icao)
const;
94 std::string getAirportCode(
const double& freq);
96 void setupCommFrequency(
int channel = -1);
97 double getCurrentFrequencyKhz()
const;
98 double getCurrentCommVolume()
const;
99 bool isInRange(
const double& freq)
const;
102 void connectToCommFrequency();
103 void testMode(
bool testMode);