X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCockpit%2Fradiostack.hxx;h=4d2255214ce2a800763f92621795d1432d8c6a54;hb=c0b4531d04215f76f9cf65afbdaed6b7c0b32634;hp=e0bda36c602f2c8892dd75a0e37d365f6fa2454c;hpb=99c54d976aa6d992b650ea935fd923f327628de3;p=flightgear.git diff --git a/src/Cockpit/radiostack.hxx b/src/Cockpit/radiostack.hxx index e0bda36c6..4d2255214 100644 --- a/src/Cockpit/radiostack.hxx +++ b/src/Cockpit/radiostack.hxx @@ -25,135 +25,33 @@ #define _FG_RADIOSTACK_HXX -#include
#include
#include - +#include #include +#include #include #include +#include #include +#include "dme.hxx" +#include "kr_87.hxx" // ADF +#include "kt_70.hxx" // Transponder +#include "marker_beacon.hxx" +#include "navcom.hxx" -class FGRadioStack : public FGSubsystem -{ - FGMorse morse; - - SGInterpTable *term_tbl; - SGInterpTable *low_tbl; - SGInterpTable *high_tbl; - - SGValue * latitudeVal; - SGValue * longitudeVal; - SGValue * altitudeVal; - - bool need_update; - string nav1_ident; - string nav1_trans_ident; - 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_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_range; - double nav1_effective_range; - double nav1_heading; - double nav1_target_gs; - double nav1_magvar; - double nav1_vol_btn; - bool nav1_ident_btn; - - string nav2_ident; - string nav2_trans_ident; - 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_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_range; - double nav2_effective_range; - double nav2_heading; - double nav2_target_gs; - double nav2_magvar; - double nav2_vol_btn; - bool nav2_ident_btn; - - string adf_ident; - string adf_trans_ident; - 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_range; - double adf_effective_range; - double adf_dist; - double adf_heading; - double adf_x; - double adf_y; - double adf_z; - double adf_vol_btn; - bool adf_ident_btn; - - // model standard VOR/DME/TACAN service volumes as per AIM 1-1-8 - double adjustNavRange( double stationElev, double aircraftElev, - double nominalRange ); - - // model standard ILS service volumes as per AIM 1-1-9 - double adjustILSRange( double stationElev, double aircraftElev, - double offsetDegrees, double distance ); +class FGRadioStack : public SGSubsystem +{ + FGDME dme; + FGKR_87 adf; // King KR 87 Digital ADF model + FGKT_70 xponder; // Bendix/King KT 70 Panel-Mounted Transponder + FGMarkerBeacon beacon; + FGNavCom navcom1; + FGNavCom navcom2; public: @@ -163,133 +61,14 @@ public: void init (); void bind (); void unbind (); - void update (); + void update (double dt); // Update nav/adf radios based on current postition void search (); - // NAV1 Setters - inline void set_nav1_freq( double freq ) { - nav1_freq = freq; 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; - } - inline void set_nav1_vol_btn( double val ) { - if ( val < 0.0 ) val = 0.0; - if ( val > 1.0 ) val = 1.0; - nav1_vol_btn = val; - } - inline void set_nav1_ident_btn( bool val ) { nav1_ident_btn = val; } - - // NAV2 Setters - inline void set_nav2_freq( double freq ) { - nav2_freq = freq; 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; - } - inline void set_nav2_vol_btn( double val ) { - if ( val < 0.0 ) val = 0.0; - if ( val > 1.0 ) val = 1.0; - nav2_vol_btn = val; - } - inline void set_nav2_ident_btn( bool val ) { nav2_ident_btn = val; } - - // 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; } - inline void set_adf_vol_btn( double val ) { - if ( val < 0.0 ) val = 0.0; - if ( val > 1.0 ) val = 1.0; - adf_vol_btn = val; - } - inline void set_adf_ident_btn( bool val ) { adf_ident_btn = val; } - - - // 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_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_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 double get_nav1_vol_btn() const { return nav1_vol_btn; } - inline bool get_nav1_ident_btn() const { return nav1_ident_btn; } - - 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_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_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 double get_nav2_vol_btn() const { return nav2_vol_btn; } - inline bool get_nav2_ident_btn() const { return nav2_ident_btn; } - - inline bool get_adf_inrange() const { return adf_inrange; } - inline double get_adf_lon() const { return adf_lon; } - inline double get_adf_lat() const { return adf_lat; } - inline double get_adf_heading() const { return adf_heading; } - inline double get_adf_vol_btn() const { return adf_vol_btn; } - inline bool get_adf_ident_btn() const { return adf_ident_btn; } + inline FGDME *get_dme() { return &dme; } + inline FGNavCom *get_navcom1() { return &navcom1; } + inline FGNavCom *get_navcom2() { return &navcom2; } };