]> git.mxchange.org Git - flightgear.git/commitdiff
Work on wiring the dme into the electrical model.
authorcurt <curt>
Thu, 26 Sep 2002 14:13:42 +0000 (14:13 +0000)
committercurt <curt>
Thu, 26 Sep 2002 14:13:42 +0000 (14:13 +0000)
src/Cockpit/radiostack.cxx
src/Cockpit/radiostack.hxx
src/Network/atc610x.cxx
src/Network/atc610x.hxx

index d4856ace721c5d242f54bdcdf9c85355301d68e3..075fc6c6e20ddab3ef4ae8ff83a357cb9d9fe7d2 100644 (file)
@@ -75,6 +75,7 @@ FGRadioStack::FGRadioStack() :
     lon_node(fgGetNode("/position/longitude-deg", true)),
     lat_node(fgGetNode("/position/latitude-deg", true)),
     alt_node(fgGetNode("/position/altitude-ft", true)),
+    dme_bus_power(fgGetNode("/systems/electrical/outputs/dme", true)),
     need_update(true),
     dme_freq(0.0),
     dme_dist(0.0),
@@ -225,7 +226,7 @@ FGRadioStack::update(double dt)
     // DME.
     ////////////////////////////////////////////////////////////////////////
 
-    if ( dme_valid ) {
+    if ( dme_valid && dme_has_power() ) {
        station = Point3D( dme_x, dme_y, dme_z );
        dme_dist = aircraft.distance3D( station ) * SG_METER_TO_NM;
        dme_effective_range = kludgeRange(dme_elev, elev, dme_range);
@@ -319,13 +320,13 @@ void FGRadioStack::search()
                                // FIXME: the panel should handle this
                                // don't worry about overhead for now,
                                // since this is handled only periodically
-    int dme_switch_pos = fgGetInt("/radios/dme/switch-position");
-    if ( dme_switch_pos == 1 && navcom1.has_power() ) {
+    dme_switch_pos = fgGetInt("/radios/dme/switch-position", 2);
+    if ( dme_switch_pos == 1 && dme_has_power() && navcom1.has_power() ) {
         if ( dme_freq != navcom1.get_nav_freq() ) {
             dme_freq = navcom1.get_nav_freq();
             need_update = true;
         }
-    } else if ( dme_switch_pos == 3 && navcom2.has_power() ) {
+    } else if ( dme_switch_pos == 3 && dme_has_power() && navcom2.has_power() ){
         if ( dme_freq != navcom2.get_nav_freq() ) {
             dme_freq = navcom2.get_nav_freq();
             need_update = true;
index f939cc4a8d1f1b8f9c7a4b3b850df5fcd94db736..35a08b59e6aec9ed03a65695c208767eeb77ed1b 100644 (file)
@@ -54,10 +54,12 @@ class FGRadioStack : public FGSubsystem
     SGPropertyNode *lon_node;
     SGPropertyNode *lat_node;
     SGPropertyNode *alt_node;
+    SGPropertyNode *dme_bus_power;
 
     bool need_update;
 
     bool dme_valid;
+    int dme_switch_pos;
     bool dme_inrange;
     double dme_freq;
     double dme_lon;
@@ -111,6 +113,10 @@ public:
 
 
     // DME Accessors
+    inline bool dme_has_power() const {
+        return (dme_switch_pos == 1 || dme_switch_pos == 3)
+            && (dme_bus_power->getDoubleValue() > 1.0);
+    }
     inline double get_dme_freq () const { return dme_freq; }
 
     // Marker Beacon Accessors
index e70c0eff469c741a7787bf60a41d0f1b1e43c757..181ff570cbae5c74bd7d9e20544e3ae52b3e87f8 100644 (file)
@@ -398,6 +398,7 @@ bool FGATC610x::open() {
     dme_kt = fgGetNode( "/radios/dme/speed-kt", true );
     dme_nm = fgGetNode( "/radios/dme/distance-nm", true );
 
+    dme_bus_power = fgGetNode( "/systems/electrical/outputs/dme", true );
     navcom1_bus_power = fgGetNode( "/systems/electrical/outputs/navcomm[0]",
                                    true );
     navcom2_bus_power = fgGetNode( "/systems/electrical/outputs/navcomm[1]",
@@ -1112,7 +1113,7 @@ bool FGATC610x::do_radio_display() {
     char digits[10];
     int i;
 
-    if ( dme_switch != 0 ) {
+    if ( dme_has_power() ) {
        // DME minutes
        float minutes = dme_min->getFloatValue();
        if ( minutes > 999 ) {
index f3561f24493e9409eb1b7b71ada9e2f1572031bd..205da95b86c6314964e8771e2c68232d004762c3 100644 (file)
@@ -71,9 +71,11 @@ class FGATC610x : public FGProtocol {
 
     float compass_position;
 
+    SGPropertyNode *dme_bus_power;
+    SGPropertyNode *navcom1_bus_power, *navcom2_bus_power;
+
     SGPropertyNode *mag_compass;
     SGPropertyNode *dme_min, *dme_kt, *dme_nm;
-    SGPropertyNode *navcom1_bus_power, *navcom2_bus_power;
     SGPropertyNode *navcom1_power_btn, *navcom2_power_btn;
     SGPropertyNode *com1_freq, *com1_stby_freq;
     SGPropertyNode *com2_freq, *com2_stby_freq;
@@ -113,6 +115,10 @@ class FGATC610x : public FGProtocol {
     bool do_switches();
 
     // convenience
+    inline bool dme_has_power() const {
+        return (dme_bus_power->getDoubleValue() > 1.0)
+            && dme_switch;
+    }
     inline bool navcom1_has_power() const {
         return (navcom1_bus_power->getDoubleValue() > 1.0)
             && navcom1_power_btn->getBoolValue();