]> git.mxchange.org Git - flightgear.git/commitdiff
GPWS: change default source to match all FDMs
authorThorstenB <brehmt@gmail.com>
Wed, 1 Dec 2010 21:57:35 +0000 (22:57 +0100)
committerThorstenB <brehmt@gmail.com>
Wed, 1 Dec 2010 21:57:35 +0000 (22:57 +0100)
Provide another built-in altitude source to hook a radio-altimeter instrument

src/Instrumentation/mk_viii.cxx
src/Instrumentation/mk_viii.hxx

index 11846db5eba5fa2c73d4ae25b4b6594d18e87f3d..745ed6c2e378217713b9e859dda69bd8f2e18a12 100755 (executable)
@@ -187,6 +187,7 @@ MK_VIII::PropertiesHandler::init ()
   mk_node(altitude) = fgGetNode("/position/altitude-ft", true);
   mk_node(altitude_agl) = fgGetNode("/position/altitude-agl-ft", true);
   mk_node(altitude_gear_agl) = fgGetNode("/position/gear-agl-ft", true);
+  mk_node(altitude_radar_agl) = fgGetNode("/instrumentation/radar-altimeter/radar-altitude-ft", true);
   mk_node(orientation_roll) = fgGetNode("/orientation/roll-deg", true);
   mk_node(asi_serviceable) = fgGetNode("/instrumentation/airspeed-indicator/serviceable", true);
   mk_node(asi_speed) = fgGetNode("/instrumentation/airspeed-indicator/indicated-speed-kt", true);
@@ -719,10 +720,7 @@ MK_VIII::ConfigurationModule::read_options_select_group_1 (int value)
 bool
 MK_VIII::ConfigurationModule::read_radio_altitude_input_select (int value)
 {
-  if (value >= 0 && value <= 2)
-    mk->io_handler.conf.use_gear_altitude = true;
-  else
-    mk->io_handler.conf.use_gear_altitude = false;
+  mk->io_handler.conf.altitude_source = value;
   return (value >= 0 && value <= 4) || (value >= 251 && value <= 255);
 }
 
@@ -1167,10 +1165,18 @@ MK_VIII::IOHandler::update_inputs ()
   if (mk_ainput_feed(radio_altitude))
     {
       double agl;
-      if (conf.use_gear_altitude)
-        agl = mk_node(altitude_gear_agl)->getDoubleValue();
-      else
-        agl = mk_node(altitude_agl)->getDoubleValue();
+      switch (conf.altitude_source)
+      {
+          case 3:
+              agl = mk_node(altitude_gear_agl)->getDoubleValue();
+              break;
+          case 4:
+              agl = mk_node(altitude_radar_agl)->getDoubleValue();
+              break;
+          default: // 0,1,2 (and any currently unsupported values)
+              agl = mk_node(altitude_agl)->getDoubleValue();
+              break;
+      }
       // Some flight models may return negative values when on the
       // ground or after a crash; do not allow them.
       mk_ainput(radio_altitude).set(SG_MAX2(0.0, agl));
index 517ee49f1cecf435a093a8f55990295f6b79609d..e37fc972be2bfa2fa9bfe9ae2b862b9609bed99c 100755 (executable)
@@ -201,6 +201,7 @@ class MK_VIII : public SGSubsystem
       SGPropertyNode_ptr altitude;
       SGPropertyNode_ptr altitude_agl;
       SGPropertyNode_ptr altitude_gear_agl;
+      SGPropertyNode_ptr altitude_radar_agl;
       SGPropertyNode_ptr orientation_roll;
       SGPropertyNode_ptr asi_serviceable;
       SGPropertyNode_ptr asi_speed;
@@ -481,7 +482,7 @@ public:
       bool                     alternate_steep_approach;
       bool                     use_internal_gps;
       bool                     localizer_enabled;
-      bool                     use_gear_altitude;
+      int                      altitude_source;
       bool                     use_attitude_indicator;
     } conf;