X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCockpit%2Fradiostack.hxx;h=4d2255214ce2a800763f92621795d1432d8c6a54;hb=c0b4531d04215f76f9cf65afbdaed6b7c0b32634;hp=dc4472564514d8c248d34f3eaf515786ebdbde3d;hpb=66650e4148a2fcd98a3f004613266fd499a3ee13;p=flightgear.git diff --git a/src/Cockpit/radiostack.hxx b/src/Cockpit/radiostack.hxx index dc4472564..4d2255214 100644 --- a/src/Cockpit/radiostack.hxx +++ b/src/Cockpit/radiostack.hxx @@ -25,198 +25,53 @@ #define _FG_RADIOSTACK_HXX +#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 { - - 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_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_effective_range; - double nav1_heading; - double nav1_target_gs; - int nav1_offset; - - 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_effective_range; - double nav2_heading; - double nav2_target_gs; - int nav2_offset; - - 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; +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: FGRadioStack(); ~FGRadioStack(); - // Update nav/adf radios based on current postition - void search( double lon, double lat, double elev ); + void init (); + void bind (); + void unbind (); + void update (double dt); // Update nav/adf radios based on current postition - void update( double lon, double lat, double elev ); - - // 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; - } - - // 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; - } - - // 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; } - inline bool get_nav1_has_dme() const { return 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 bool get_nav2_inrange() const { return nav2_inrange; } - inline bool get_nav2_has_dme() const { return 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 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; } + void search (); + + inline FGDME *get_dme() { return &dme; } + inline FGNavCom *get_navcom1() { return &navcom1; } + inline FGNavCom *get_navcom2() { return &navcom2; } }; extern FGRadioStack *current_radiostack; - -// periodic radio station search wrapper -void fgRadioSearch( void ); - - #endif // _FG_RADIOSTACK_HXX