From 292c97fa430f3691b98ae624215665678f03d674 Mon Sep 17 00:00:00 2001
From: curt <curt>
Date: Thu, 4 May 2000 15:53:03 +0000
Subject: [PATCH] Propogate colocated dme flag.

---
 src/Cockpit/radiostack.cxx          | 5 ++++-
 src/Cockpit/radiostack.hxx          | 4 ++++
 src/FDM/JSBSim/filtersjb/FGGain.cpp | 8 ++++++++
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/Cockpit/radiostack.cxx b/src/Cockpit/radiostack.cxx
index 456ef8427..d16b86f05 100644
--- a/src/Cockpit/radiostack.cxx
+++ b/src/Cockpit/radiostack.cxx
@@ -143,6 +143,7 @@ void FGRadioStack::search( double lon, double lat, double elev ) {
     if ( current_ilslist->query( lon, lat, elev, nav1_freq, &ils ) ) {
 	nav1_valid = true;
 	nav1_loc = true;
+	nav1_dme = true;
 
 	nav1_lon = ils.get_loclon();
 	nav1_lat = ils.get_loclat();
@@ -160,7 +161,7 @@ void FGRadioStack::search( double lon, double lat, double elev ) {
     } else if ( current_navlist->query( lon, lat, elev, nav1_freq, &nav ) ) {
 	nav1_valid = true;
 	nav1_loc = false;
-
+	nav1_dme = nav.get_dme();
 	nav1_lon = nav.get_lon();
 	nav1_lat = nav.get_lat();
 	nav1_elev = nav.get_elev();
@@ -180,6 +181,7 @@ void FGRadioStack::search( double lon, double lat, double elev ) {
     if ( current_ilslist->query( lon, lat, elev, nav2_freq, &ils ) ) {
 	nav2_valid = true;
 	nav2_loc = true;
+	nav2_dme = true;
 
 	nav2_lon = ils.get_loclon();
 	nav2_lat = ils.get_loclat();
@@ -197,6 +199,7 @@ void FGRadioStack::search( double lon, double lat, double elev ) {
     } else if ( current_navlist->query( lon, lat, elev, nav2_freq, &nav ) ) {
 	nav2_valid = true;
 	nav2_loc = false;
+	nav2_dme = nav.get_dme();
 
 	nav2_lon = nav.get_lon();
 	nav2_lat = nav.get_lat();
diff --git a/src/Cockpit/radiostack.hxx b/src/Cockpit/radiostack.hxx
index d236a9ed0..f66529e09 100644
--- a/src/Cockpit/radiostack.hxx
+++ b/src/Cockpit/radiostack.hxx
@@ -37,6 +37,7 @@ class FGRadioStack {
 
     bool nav1_valid;
     bool nav1_inrange;
+    bool nav1_dme;
     bool nav1_loc;
     double nav1_freq;
     double nav1_alt_freq;
@@ -55,6 +56,7 @@ class FGRadioStack {
 
     bool nav2_valid;
     bool nav2_inrange;
+    bool nav2_dme;
     bool nav2_loc;
     double nav2_freq;
     double nav2_alt_freq;
@@ -140,6 +142,7 @@ public:
 
     // Calculated values.
     inline bool get_nav1_inrange() const { return nav1_inrange; }
+    inline bool get_nav1_dme() const { return nav1_dme; }
     inline bool get_nav1_loc() const { return nav1_loc; }
     inline double get_nav1_lon() const { return nav1_lon; }
     inline double get_nav1_lat() const { return nav1_lat; }
@@ -150,6 +153,7 @@ public:
     inline double get_nav1_target_gs() const { return nav1_target_gs; }
 
     inline bool get_nav2_inrange() const { return nav2_inrange; }
+    inline bool get_nav2_dme() const { return nav2_dme; }
     inline bool get_nav2_loc() const { return nav2_loc; }
     inline double get_nav2_lon() const { return nav2_lon; }
     inline double get_nav2_lat() const { return nav2_lat; }
diff --git a/src/FDM/JSBSim/filtersjb/FGGain.cpp b/src/FDM/JSBSim/filtersjb/FGGain.cpp
index 129900649..f2684ac6f 100644
--- a/src/FDM/JSBSim/filtersjb/FGGain.cpp
+++ b/src/FDM/JSBSim/filtersjb/FGGain.cpp
@@ -86,6 +86,10 @@ FGGain::FGGain(FGFCS* fcs, FGConfigFile* AC_cfg) : FGFCSComponent(fcs),
       *AC_cfg >> Max;
     } else if (token == "SCHEDULED_BY") {
       *AC_cfg >> ScheduledBy;
+    } else if (token == "OUTPUT") {
+      IsOutput = true;
+      *AC_cfg >> sOutputIdx;
+      OutputIdx = fcs->GetState()->GetParameterIndex(sOutputIdx);
     } else {
       AC_cfg->ResetLineIndexToZero();
       lookup = new float[2];
@@ -137,8 +141,12 @@ bool FGGain::Run(void )
 
     if (Output >= 0.0) Output = Input * Max;
     else Output = Input * (-Min);
+
+    Output *= Gain;
   }
 
+  if (IsOutput) SetOutput();
+
   return true;
 }