X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCockpit%2Fnavcom.hxx;h=698a50391beb13833919517762447d06f362e90f;hb=c0b4531d04215f76f9cf65afbdaed6b7c0b32634;hp=0f1eb0667c43c26053d7eb10440fffb94b3c4dbb;hpb=f6607cac9083eb3336623c1beb2cf7b44d8e8b0d;p=flightgear.git diff --git a/src/Cockpit/navcom.hxx b/src/Cockpit/navcom.hxx index 0f1eb0667..698a50391 100644 --- a/src/Cockpit/navcom.hxx +++ b/src/Cockpit/navcom.hxx @@ -25,11 +25,10 @@ #define _FG_NAVCOM_HXX -#include
#include
#include - +#include #include #include @@ -37,7 +36,7 @@ #include #include -class FGNavCom : public FGSubsystem +class FGNavCom : public SGSubsystem { FGMorse morse; @@ -48,6 +47,9 @@ class FGNavCom : public FGSubsystem SGPropertyNode *lon_node; SGPropertyNode *lat_node; SGPropertyNode *alt_node; + SGPropertyNode *bus_power; + SGPropertyNode *com_serviceable, *nav_serviceable; + SGPropertyNode *cdi_serviceable, *gs_serviceable, *tofrom_serviceable; string last_nav_id; bool last_nav_vor; @@ -61,6 +63,7 @@ class FGNavCom : public FGSubsystem bool need_update; bool power_btn; + bool audio_btn; bool comm_valid; bool comm_inrange; @@ -85,8 +88,16 @@ class FGNavCom : public FGSubsystem bool nav_loc; double nav_freq; double nav_alt_freq; - double nav_radial; + double nav_heading; // true heading to nav station + double nav_radial; // current radial we are on (taking + // into consideration the vor station + // alignment which likely doesn't + // match the magnetic alignment + // exactly.) double nav_sel_radial; + double nav_target_radial; + double nav_target_radial_true; + double nav_target_auto_hdg; double nav_loclon; double nav_loclat; double nav_x; @@ -98,17 +109,21 @@ class FGNavCom : public FGSubsystem double nav_gs_x; double nav_gs_y; double nav_gs_z; + sgdVec3 gs_base_vec; double nav_gs_dist; + double nav_gs_dist_signed; + double nav_gs_rate_of_climb; SGTimeStamp prev_time; SGTimeStamp curr_time; double nav_elev; double nav_range; double nav_effective_range; - double nav_heading; double nav_target_gs; - double nav_magvar; + double nav_twist; double nav_vol_btn; bool nav_ident_btn; + double horiz_vel; + double last_x; // model standard VOR/DME/TACAN service volumes as per AIM 1-1-8 double adjustNavRange( double stationElev, double aircraftElev, @@ -138,10 +153,8 @@ public: } // NavCom Setters - inline void set_power_btn( bool val ) { - power_btn = val; - - } + inline void set_power_btn( bool val ) { power_btn = val; } + inline void set_audio_btn( bool val ) { audio_btn = val; } // COMM Setters inline void set_comm_freq( double freq ) { @@ -171,7 +184,11 @@ public: inline void set_nav_ident_btn( bool val ) { nav_ident_btn = val; } // NavCom Accessors + inline bool has_power() const { + return power_btn && (bus_power->getDoubleValue() > 1.0); + } inline bool get_power_btn() const { return power_btn; } + inline bool get_audio_btn() const { return audio_btn; } // COMM Accessors inline double get_comm_freq () const { return comm_freq; } @@ -181,6 +198,13 @@ public: inline double get_nav_freq () const { return nav_freq; } inline double get_nav_alt_freq () const { return nav_alt_freq; } inline double get_nav_sel_radial() const { return nav_sel_radial; } + inline double get_nav_target_radial() const { return nav_target_radial; } + inline double get_nav_target_radial_true() const { + return nav_target_radial_true; + } + inline double get_nav_target_auto_hdg() const { + return nav_target_auto_hdg; + } // Calculated values. inline bool get_comm_inrange() const { return comm_inrange; } @@ -202,15 +226,26 @@ public: inline double get_nav_gslon() const { return nav_gslon; } inline double get_nav_gslat() const { return nav_gslat; } inline double get_nav_gs_dist() const { return nav_gs_dist; } + inline double get_nav_gs_dist_signed() const { return nav_gs_dist_signed; } + inline double get_nav_gs_rate_of_climb() const { + return nav_gs_rate_of_climb; + } inline double get_nav_elev() const { return nav_elev; } - inline double get_nav_heading() const { return nav_heading; } - inline double get_nav_radial() const { return nav_radial; } + double get_nav_heading() const; + double get_nav_radial() const; + double get_nav_reciprocal_radial() const; inline double get_nav_target_gs() const { return nav_target_gs; } - inline double get_nav_magvar() const { return nav_magvar; } - double get_nav_heading_needle_deflection() const; - double get_nav_gs_needle_deflection() const; + inline double get_nav_twist() const { return nav_twist; } + double get_nav_cdi_deflection() const; + double get_nav_cdi_xtrack_error() const; + double get_nav_gs_deflection() const; inline double get_nav_vol_btn() const { return nav_vol_btn; } inline bool get_nav_ident_btn() const { return nav_ident_btn; } + inline const char * get_nav_id() const { return nav_id.c_str(); } + inline int get_nav_id_c1() const { return nav_id.c_str()[0]; } + inline int get_nav_id_c2() const { return nav_id.c_str()[1]; } + inline int get_nav_id_c3() const { return nav_id.c_str()[2]; } + inline int get_nav_id_c4() const { return nav_id.c_str()[3]; } };