]> git.mxchange.org Git - flightgear.git/commitdiff
Better handling of glide slope and in range flags when slaved to external
authorcurt <curt>
Thu, 9 Apr 2009 15:36:42 +0000 (15:36 +0000)
committerTim Moore <timoore@redhat.com>
Wed, 15 Apr 2009 21:19:30 +0000 (23:19 +0200)
GPS.

src/Instrumentation/navradio.cxx
src/Instrumentation/navradio.hxx
src/Network/AV400Sim.cxx

index 4553744d795b1a8ea001269c1a3444902a65177a..60fd4415561b0b47ee9997ffa5f1b484beaf0825 100644 (file)
@@ -89,6 +89,7 @@ FGNavRadio::FGNavRadio(SGPropertyNode *node) :
     gps_cdi_deflection_node(NULL),
     gps_to_flag_node(NULL),
     gps_from_flag_node(NULL),
+    gps_has_gs_node(NULL),
     last_nav_id(""),
     last_nav_vor(false),
     play_count(0),
@@ -201,6 +202,7 @@ FGNavRadio::init ()
     gps_cdi_deflection_node = fgGetNode("/instrumentation/gps/cdi-deflection", true);
     gps_to_flag_node = fgGetNode("/instrumentation/gps/to-flag", true);
     gps_from_flag_node = fgGetNode("/instrumentation/gps/from-flag", true);
+    gps_has_gs_node = fgGetNode("/instrumentation/gps/has-gs", true);
     
     std::ostringstream temp;
     temp << _name << "nav-ident" << _num;
@@ -314,8 +316,16 @@ FGNavRadio::update(double dt)
     bool nav_serviceable = nav_serviceable_node->getBoolValue();
     bool cdi_serviceable = cdi_serviceable_node->getBoolValue();
     bool tofrom_serviceable = tofrom_serviceable_node->getBoolValue();
-    bool inrange = inrange_node->getBoolValue();
-    bool has_gs = has_gs_node->getBoolValue();
+    bool inrange = false;
+    bool has_gs = false;
+    if ( nav_slaved_to_gps_node->getBoolValue() ) {
+       has_gs = gps_has_gs_node->getBoolValue();
+       inrange = gps_to_flag_node->getBoolValue()
+           || gps_from_flag_node->getBoolValue();
+    } else {
+       has_gs = has_gs_node->getBoolValue();
+       inrange = inrange_node->getBoolValue();
+    }
     bool is_loc = loc_node->getBoolValue();
     double loc_dist = loc_dist_node->getDoubleValue();
     double effective_range_m;
index a03ccb739aa0b5e7337ed91d5ad203dfd9a3ed33..92f80bc37bdb727a6e16f9401ff1186f0c86e392 100644 (file)
@@ -106,6 +106,7 @@ class FGNavRadio : public SGSubsystem
     SGPropertyNode_ptr gps_cdi_deflection_node;
     SGPropertyNode_ptr gps_to_flag_node;
     SGPropertyNode_ptr gps_from_flag_node;
+    SGPropertyNode_ptr gps_has_gs_node;
 
     // internal (private) values
 
index 54d3713ad7ce9ad6bfb51bef3847ebe6d7aaeb3f..2d704a83ebe71b75a8e317818cf796f01d1d1433 100644 (file)
@@ -206,7 +206,7 @@ bool FGAV400Sim::parse_message() {
            }
            fgSetDouble("/instrumentation/gps/cdi-deflection",
                        (double)pos / 8.0);
-           fgSetBool("/instrumentation/nav[0]/has-gs", false);
+           fgSetBool("/instrumentation/gps/has-gs", false);
        }
     } else if ( ident == "k" ) {
        string ind = msg.substr(1,1);