X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCockpit%2Fradiostack.hxx;h=c2031790322f9a2ffc9de23e89dbbd0fe9c6368d;hb=29275ce1ecf9c4ea302aacca8c5ae5d4d3319a17;hp=ee46ee5245660a6ecb175954a4c2b54bbef62c4a;hpb=39f4bea43e26d724692b4ae6919b2bb7df74e847;p=flightgear.git diff --git a/src/Cockpit/radiostack.hxx b/src/Cockpit/radiostack.hxx index ee46ee524..c20317903 100644 --- a/src/Cockpit/radiostack.hxx +++ b/src/Cockpit/radiostack.hxx @@ -25,88 +25,212 @@ #define _FG_RADIOSTACK_HXX +#include
+#include
+ #include +#include +#include + + -class FGRadioStack { +class FGRadioStack : public FGSubsystem +{ + + SGValue * latitudeVal; + SGValue * longitudeVal; + SGValue * altitudeVal; bool need_update; + bool nav1_valid; bool nav1_inrange; + bool nav1_has_dme; + bool nav1_has_gs; bool nav1_loc; double nav1_freq; + double nav1_alt_freq; double nav1_radial; - double nav1_lon; - double nav1_lat; + double nav1_sel_radial; + double nav1_loclon; + double nav1_loclat; + double nav1_x; + double nav1_y; + double nav1_z; + double nav1_loc_dist; + double nav1_gslon; + double nav1_gslat; + double nav1_gs_x; + double nav1_gs_y; + double nav1_gs_z; + double nav1_gs_dist; + double nav1_dmelon; + double nav1_dmelat; + double nav1_dme_x; + double nav1_dme_y; + double nav1_dme_z; + double nav1_dme_dist; double nav1_elev; - double nav1_dist; + double nav1_effective_range; double nav1_heading; double nav1_target_gs; + double nav1_magvar; + bool nav2_valid; bool nav2_inrange; + bool nav2_has_dme; + bool nav2_has_gs; bool nav2_loc; double nav2_freq; + double nav2_alt_freq; double nav2_radial; - double nav2_lon; - double nav2_lat; + double nav2_sel_radial; + double nav2_loclon; + double nav2_loclat; + double nav2_x; + double nav2_y; + double nav2_z; + double nav2_loc_dist; + double nav2_gslon; + double nav2_gslat; + double nav2_gs_x; + double nav2_gs_y; + double nav2_gs_z; + double nav2_gs_dist; + double nav2_dmelon; + double nav2_dmelat; + double nav2_dme_x; + double nav2_dme_y; + double nav2_dme_z; + double nav2_dme_dist; double nav2_elev; - double nav2_dist; + double nav2_effective_range; double nav2_heading; double nav2_target_gs; + double nav2_magvar; + bool adf_valid; bool adf_inrange; double adf_freq; + double adf_alt_freq; + double adf_rotation; double adf_lon; double adf_lat; double adf_elev; + double adf_effective_range; + double adf_dist; double adf_heading; + double adf_x; + double adf_y; + double adf_z; public: FGRadioStack(); ~FGRadioStack(); + void init (); + void bind (); + void unbind (); + void update (); + // Update nav/adf radios based on current postition - void update( double lon, double lat, double elev ); + void search (); + // NAV1 Setters inline void set_nav1_freq( double freq ) { nav1_freq = freq; need_update = true; } - inline void set_nav1_radial( double radial ) { - nav1_radial = radial; need_update = true; + inline void set_nav1_alt_freq( double freq ) { nav1_alt_freq = freq; } + inline void set_nav1_sel_radial( double radial ) { + nav1_sel_radial = radial; need_update = true; } + // NAV2 Setters inline void set_nav2_freq( double freq ) { nav2_freq = freq; need_update = true; } - - inline void set_nav2_radial( double radial ) { - nav2_radial = radial; need_update = true; + inline void set_nav2_alt_freq( double freq ) { nav2_alt_freq = freq; } + inline void set_nav2_sel_radial( double radial ) { + nav2_sel_radial = radial; need_update = true; } + // ADF Setters inline void set_adf_freq( double freq ) { adf_freq = freq; need_update = true; } + inline void set_adf_alt_freq( double freq ) { adf_alt_freq = freq; } + inline void set_adf_rotation( double rot ) { adf_rotation = rot; } + + + // NAV1 Accessors + inline double get_nav1_freq () const { return nav1_freq; } + inline double get_nav1_alt_freq () const { return nav1_alt_freq; } + inline double get_nav1_sel_radial() const { return nav1_sel_radial; } + + // NAV2 Accessors + inline double get_nav2_freq () const { return nav2_freq; } + inline double get_nav2_alt_freq () const { return nav2_alt_freq; } + inline double get_nav2_sel_radial() const { return nav2_sel_radial; } + // ADF Accessors + inline double get_adf_freq () const { return adf_freq; } + inline double get_adf_alt_freq () const { return adf_alt_freq; } + inline double get_adf_rotation () const { return adf_rotation; } + + // Calculated values. inline bool get_nav1_inrange() const { return nav1_inrange; } + bool get_nav1_to_flag () const; + bool get_nav1_from_flag () const; + inline bool get_nav1_has_dme() const { return nav1_has_dme; } + inline bool get_nav1_dme_inrange () const { + return nav1_inrange && nav1_has_dme; + } + inline bool get_nav1_has_gs() const { return nav1_has_gs; } inline bool get_nav1_loc() const { return nav1_loc; } - inline double get_nav1_radial() const { return nav1_radial; } - inline double get_nav1_lon() const { return nav1_lon; } - inline double get_nav1_lat() const { return nav1_lat; } + inline double get_nav1_loclon() const { return nav1_loclon; } + inline double get_nav1_loclat() const { return nav1_loclat; } + inline double get_nav1_loc_dist() const { return nav1_loc_dist; } + inline double get_nav1_gslon() const { return nav1_gslon; } + inline double get_nav1_gslat() const { return nav1_gslat; } + inline double get_nav1_gs_dist() const { return nav1_gs_dist; } + inline double get_nav1_dmelon() const { return nav1_dmelon; } + inline double get_nav1_dmelat() const { return nav1_dmelat; } + inline double get_nav1_dme_dist() const { return nav1_dme_dist; } inline double get_nav1_elev() const { return nav1_elev; } - inline double get_nav1_dist() const { return nav1_dist; } inline double get_nav1_heading() const { return nav1_heading; } + inline double get_nav1_radial() const { return nav1_radial; } inline double get_nav1_target_gs() const { return nav1_target_gs; } + inline double get_nav1_magvar() const { return nav1_magvar; } + double get_nav1_heading_needle_deflection() const; + double get_nav1_gs_needle_deflection() const; inline bool get_nav2_inrange() const { return nav2_inrange; } + bool get_nav2_to_flag () const; + bool get_nav2_from_flag () const; + inline bool get_nav2_has_dme() const { return nav2_has_dme; } + inline bool get_nav2_dme_inrange () const { + return nav2_inrange && nav2_has_dme; + } + inline bool get_nav2_has_gs() const { return nav2_has_gs; } inline bool get_nav2_loc() const { return nav2_loc; } - inline double get_nav2_radial() const { return nav2_radial; } - inline double get_nav2_lon() const { return nav2_lon; } - inline double get_nav2_lat() const { return nav2_lat; } + inline double get_nav2_loclon() const { return nav2_loclon; } + inline double get_nav2_loclat() const { return nav2_loclat; } + inline double get_nav2_loc_dist() const { return nav2_loc_dist; } + inline double get_nav2_gslon() const { return nav2_gslon; } + inline double get_nav2_gslat() const { return nav2_gslat; } + inline double get_nav2_gs_dist() const { return nav2_gs_dist; } + inline double get_nav2_dmelon() const { return nav2_dmelon; } + inline double get_nav2_dmelat() const { return nav2_dmelat; } + inline double get_nav2_dme_dist() const { return nav2_dme_dist; } inline double get_nav2_elev() const { return nav2_elev; } - inline double get_nav2_dist() const { return nav2_dist; } inline double get_nav2_heading() const { return nav2_heading; } + inline double get_nav2_radial() const { return nav2_radial; } inline double get_nav2_target_gs() const { return nav2_target_gs; } + inline double get_nav2_magvar() const { return nav2_magvar; } + double get_nav2_heading_needle_deflection() const; + double get_nav2_gs_needle_deflection() const; inline bool get_adf_inrange() const { return adf_inrange; } inline double get_adf_lon() const { return adf_lon; } @@ -117,5 +241,4 @@ public: extern FGRadioStack *current_radiostack; - #endif // _FG_RADIOSTACK_HXX