]> git.mxchange.org Git - flightgear.git/blobdiff - src/Instrumentation/navradio.cxx
Read airspeed-indicator overspeed limit values from instrument configuration, as...
[flightgear.git] / src / Instrumentation / navradio.cxx
index 7a8215f3eb9dc53fae787a46dd29b1941421189a..c1479d89634e02c9f9782720c0adf54a4ec342c7 100644 (file)
@@ -208,6 +208,7 @@ FGNavRadio::init ()
     gs_deflection_deg_node = node->getChild("gs-needle-deflection-deg", 0, true);
     gs_deflection_norm_node = node->getChild("gs-needle-deflection-norm", 0, true);
     gs_rate_of_climb_node = node->getChild("gs-rate-of-climb", 0, true);
+    gs_rate_of_climb_fpm_node = node->getChild("gs-rate-of-climb-fpm", 0, true);
     gs_dist_node = node->getChild("gs-distance", 0, true);
     gs_inrange_node = node->getChild("gs-in-range", 0, true);
     
@@ -368,6 +369,8 @@ void FGNavRadio::clearOutputs()
   gs_deflection_deg_node->setDoubleValue(0.0);
   gs_deflection_norm_node->setDoubleValue(0.0);
   gs_inrange_node->setBoolValue( false );
+  loc_node->setBoolValue( false );
+  has_gs_node->setBoolValue(false);
   
   to_flag_node->setBoolValue( false );
   from_flag_node->setBoolValue( false );
@@ -593,17 +596,22 @@ void FGNavRadio::updateGlideSlope(double dt, const SGVec3d& aircraft, double sig
   double gs_diff = target_gs - angle;
   // convert desired vertical path angle into a climb rate
   double des_angle = angle - 10 * gs_diff;
+  /* printf("target_gs=%.1f angle=%.1f gs_diff=%.1f des_angle=%.1f\n",
+     target_gs, angle, gs_diff, des_angle); */
 
   // estimate horizontal speed towards ILS in meters per minute
   double elapsedDistance = last_x - gsDist;
   last_x = gsDist;
       
   double new_vel = ( elapsedDistance / dt );
-  horiz_vel = 0.75 * horiz_vel + 0.25 * new_vel;
+  horiz_vel = 0.99 * horiz_vel + 0.01 * new_vel;
+  /* printf("vel=%.1f (dist=%.1f dt=%.2f)\n", horiz_vel, elapsedDistance, dt);*/
 
   gs_rate_of_climb_node
       ->setDoubleValue( -sin( des_angle * SGD_DEGREES_TO_RADIANS )
                         * horiz_vel * SG_METER_TO_FEET );
+  gs_rate_of_climb_fpm_node
+      ->setDoubleValue( gs_rate_of_climb_node->getDoubleValue() * 60 );
 }
 
 void FGNavRadio::updateDME(const SGVec3d& aircraft)
@@ -892,7 +900,9 @@ void FGNavRadio::search()
     _gs = NULL;
     _dme = NULL;
     nav_id_node->setStringValue("");
-
+    loc_node->setBoolValue(false);
+    has_gs_node->setBoolValue(false);
+    
     _sgr->remove( nav_fx_name );
     _sgr->remove( dme_fx_name );
   }