]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/flight.cxx
Initial revision of Andy Ross's YASim code. This is (Y)et (A)nother Flight
[flightgear.git] / src / FDM / flight.cxx
index 673faaf048399b6f3324f1c9ce6f9b7808649118..fc9d0cab400d2f88af49103129a2d9c50b3625e4 100644 (file)
@@ -23,6 +23,8 @@
 
 #include <stdio.h>
 
+#include <plib/sg.h>
+
 #include <simgear/constants.h>
 #include <simgear/debug/logstream.hxx>
 #include <simgear/math/sg_geodesy.hxx>
@@ -203,7 +205,7 @@ FGInterface::common_init ()
     set_Latitude( fgGetDouble("/position/latitude-deg")
                   * SGD_DEGREES_TO_RADIANS );
     double ground_elev_m = scenery.get_cur_elev();
-    double ground_elev_ft = ground_elev_m * METERS_TO_FEET;
+    double ground_elev_ft = ground_elev_m * SG_METER_TO_FEET;
     if ( fgGetBool("/sim/startup/onground")
          || fgGetDouble("/position/altitude-ft") < ground_elev_ft ) {
         fgSetDouble("/position/altitude-ft", ground_elev_ft);
@@ -384,6 +386,36 @@ FGInterface::bind ()
        &FGInterface::get_Climb_Rate); // read-only
   fgTie("/velocities/side-slip-rad", this,
        &FGInterface::get_Beta); // read-only
+
+                               // Powerplant
+  for (int i = 0; i < get_num_engines(); i++) {
+    char buf[64];
+
+    sprintf(buf, "/engines/engine[%d]/rpm", i);
+    fgTie(buf, get_engine(i), &FGEngInterface::get_RPM);
+
+    sprintf(buf, "/engines/engine[%d]/egt-degf", i);
+    fgTie(buf, get_engine(i), &FGEngInterface::get_EGT);
+
+    sprintf(buf, "/engines/engine[%d]/cht-degf", i);
+    fgTie(buf, get_engine(i), &FGEngInterface::get_CHT);
+
+    sprintf(buf, "/engines/engine[%d]/oil-temperature-degf", i);
+    fgTie(buf, get_engine(i), &FGEngInterface::get_Oil_Temp);
+
+    sprintf(buf, "/engines/engine[%d]/mp-osi", i);
+    fgTie(buf, get_engine(i), &FGEngInterface::get_Manifold_Pressure);
+
+    sprintf(buf, "/engines/engine[%d]/fuel-flow-gph", i);
+    fgTie(buf, get_engine(i), &FGEngInterface::get_Fuel_Flow);
+
+    sprintf(buf, "/engines/engine[%d]/running", i);
+    fgTie(buf, get_engine(i), &FGEngInterface::get_Running_Flag);
+
+    sprintf(buf, "/engines/engine[%d]/cranking", i);
+    fgTie(buf, get_engine(i), &FGEngInterface::get_Cranking_Flag);
+
+  }
 }
 
 
@@ -418,6 +450,25 @@ FGInterface::unbind ()
   fgUntie("/velocities/wBody-fps");
   fgUntie("/velocities/vertical-speed-fps");
   fgUntie("/velocities/side-slip-rad");
+  for (int i = 0; i < get_num_engines(); i++) {
+    char buf[64];
+    sprintf(buf, "/engines/engine[%d]/rpm", i);
+    fgUntie(buf);
+    sprintf(buf, "/engines/engine[%d]/egt-degf", i);
+    fgUntie(buf);
+    sprintf(buf, "/engines/engine[%d]/cht-degf", i);
+    fgUntie(buf);
+    sprintf(buf, "/engines/engine[%d]/oil-temperature-degf", i);
+    fgUntie(buf);
+    sprintf(buf, "/engines/engine[%d]/mp-osi", i);
+    fgUntie(buf);
+    sprintf(buf, "/engines/engine[%d]/fuel-flow-gph", i);
+    fgUntie(buf);
+    sprintf(buf, "/engines/engine[%d]/running", i);
+    fgUntie(buf);
+    sprintf(buf, "/engines/engine[%d]/cranking", i);
+    fgUntie(buf);
+  }
 }
 
 
@@ -461,7 +512,7 @@ void FGInterface::_updatePosition( double lat_geoc, double lon, double alt ) {
     _set_Geodetic_Position( lat_geod, lon, alt );
        
     _set_Sea_level_radius( sl_radius2 * SG_METER_TO_FEET );
-    _set_Runway_altitude( scenery.get_cur_elev()*METERS_TO_FEET ); 
+    _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET ); 
        
     _set_sin_lat_geocentric( lat_geoc );
     _set_cos_lat_geocentric( lat_geoc );