FlightGear next
heading_indicator_dg.hxx
Go to the documentation of this file.
1/*
2 * SPDX-FileName: heading_indicator_dg.hxx
3 * SPDX-FileComment: a Directional Gyro (DG) compass.
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 * SPDX-FileContributor: Written by Vivian Meazza, started 2005.
6 * SPDX-FileContributor: Enhanced by Benedikt Hallinger, 2023
7 */
8
9#pragma once
10
11
13
14#include "gyro.hxx"
15
16
69{
70public:
71 HeadingIndicatorDG ( SGPropertyNode *node );
73 virtual ~HeadingIndicatorDG ();
74
75 // Subsystem API.
76 void init() override;
77 void reinit() override;
78 void update(double dt) override;
79
80 // Subsystem identification.
81 static const char* staticSubsystemClassId() { return "heading-indicator-dg"; };
82
83private:
84 Gyro _gyro;
85 double _last_heading_deg, _last_indicated_heading_dg;
86
87 std::string _powerSupplyPath;
88 std::string _suctionPath;
89 std::string _gnodePath;
90 std::string _heading_in_nodePath;
91 std::string _yaw_rate_nodePath;
92 bool _vacuumDriven = false;
93
94 SGPropertyNode_ptr _limits_node;
95 double _minVacuum = 4.0; // inHg
96 SGPropertyNode_ptr _minVacuum_node;
97
98 double _gyro_lag, _gyro_spin_up, _gyro_spin_down;
99 double _minSpin, _yaw_error_factor, _g_error_factor,
100 _yaw_limit_rate, _last_g, _g_filtertime, _g_limit_lower, _g_limit_upper, _g_limit_tumble;
101 SGPropertyNode_ptr _minSpin_node, _yaw_error_factor_node, _g_error_factor_node,
102 _yaw_limit_rate_node, _g_limit_lower_node, _g_limit_upper_node;
103
104 SGPropertyNode_ptr _offset_node;
105 SGPropertyNode_ptr _heading_in_node;
106 SGPropertyNode_ptr _serviceable_node;
107 SGPropertyNode_ptr _heading_out_node;
108 SGPropertyNode_ptr _drift_ph_out_node;
109 SGPropertyNode_ptr _transp_wander_out_node;
110 SGPropertyNode_ptr _we_speed_node;
111 SGPropertyNode_ptr _lat_nut_node;
112 SGPropertyNode_ptr _caged_node;
113 SGPropertyNode_ptr _tumble_node, _tumble_flag_node, _g_limit_tumble_node;
114 SGPropertyNode_ptr _electrical_node;
115 SGPropertyNode_ptr _error_node;
116 SGPropertyNode_ptr _nav1_error_node;
117 SGPropertyNode_ptr _align_node;
118 SGPropertyNode_ptr _yaw_rate_node;
119 SGPropertyNode_ptr _heading_bug_error_node;
120 SGPropertyNode_ptr _g_node, _g_filtertime_node;
121 SGPropertyNode_ptr _spin_node, _gyro_spin_up_node, _gyro_spin_down_node;
122 SGPropertyNode_ptr _suction_node;
123};
Simple model of a spinning gyro.
Definition gyro.hxx:12
void update(double dt) override
HeadingIndicatorDG(SGPropertyNode *node)
static const char * staticSubsystemClassId()