]> git.mxchange.org Git - flightgear.git/commitdiff
More property manager interface updates.
authorcurt <curt>
Tue, 16 Jan 2001 20:21:03 +0000 (20:21 +0000)
committercurt <curt>
Tue, 16 Jan 2001 20:21:03 +0000 (20:21 +0000)
src/Cockpit/hud.cxx
src/FDM/flight.cxx
src/FDM/flight.hxx
src/Main/bfi.cxx
src/Main/bfi.hxx
src/Main/fg_init.cxx

index f6097b947ea206f4bf65ff1f84aee06de81752cb..fa6f25f4d37025415ce34725cafb159cbb7da936 100644 (file)
@@ -762,7 +762,7 @@ int fgHUDInit2( fgAIRCRAFT * /* current_aircraft */ )
 }
 //$$$ End - added, Neetha, 28 Nov 2k  
 
-int global_day_night_switch = DAY;
+static int global_day_night_switch = DAY;
 
 void HUD_masterswitch( bool incr )
 {
@@ -770,7 +770,7 @@ void HUD_masterswitch( bool incr )
        if ( global_day_night_switch == DAY ) {
            global_day_night_switch = NIGHT;
        } else {
-           fgSetBool("/sim/hud/visiblity", false);
+           fgSetBool("/sim/hud/visibility", false);
        }
     } else {
         fgSetBool("/sim/hud/visibility", true);
index 1c10b6bf05d7a05a7a89c34e53b480f10d9d71fc..43163d4cd44aeff1b0a7a8097fcbdebdc827956c 100644 (file)
@@ -31,6 +31,7 @@
 #include <Scenery/scenery.hxx>
 #include <FDM/LaRCsim/ls_interface.h>
 #include <Main/globals.hxx>
+#include <Main/fg_props.hxx>
 
 #include "External.hxx"
 #include "flight.hxx"
@@ -143,6 +144,100 @@ FGInterface::FGInterface(void) {
 
 // Destructor
 FGInterface::~FGInterface() {
+//   unbind();                 // FIXME: should be called explicitly
+}
+
+
+void
+FGInterface::init ()
+{
+  init(1.0 / fgGetInt("/sim/model-hz"));
+}
+
+void
+FGInterface::bind ()
+{
+                               // Aircraft position
+  fgTie("/position/latitude", this,
+       &(FGInterface::get_Latitude_deg),
+       &(FGInterface::set_Latitude_deg));
+  fgTie("/position/longitude", this,
+       &(FGInterface::get_Longitude_deg),
+       &(FGInterface::set_Longitude_deg));
+  fgTie("/position/altitude", this,
+       &(FGInterface::get_Altitude),
+       &(FGInterface::set_Altitude));
+  fgTie("/position/altitude-agl", this,
+       &(FGInterface::get_Altitude_AGL)); // read-only
+
+                               // Orientation
+  fgTie("/orientation/roll", this,
+       &(FGInterface::get_Phi_deg),
+       &(FGInterface::set_Phi_deg));
+  fgTie("/orientation/pitch", this,
+       &(FGInterface::get_Theta_deg),
+       &(FGInterface::set_Theta_deg));
+  fgTie("/orientation/heading", this,
+       &(FGInterface::get_Psi_deg),
+       &(FGInterface::set_Psi_deg));
+
+                               // Calibrated airspeed
+  fgTie("/velocities/airspeed", this,
+       &(FGInterface::get_V_calibrated_kts),
+       &(FGInterface::set_V_calibrated_kts));
+
+                               // Local velocities
+  fgTie("/velocities/speed-north", this,
+       &(FGInterface::get_V_north));
+  fgTie("/velocities/speed-east", this,
+       &(FGInterface::get_V_east),
+       &(FGInterface::set_V_east));
+  fgTie("/velocities/speed-down", this,
+       &(FGInterface::get_V_down),
+       &(FGInterface::set_V_down));
+
+                               // Relative wind
+  fgTie("/velocities/uBody", this,
+       &(FGInterface::get_uBody),
+       &(FGInterface::set_uBody));
+  fgTie("/velocities/vBody", this,
+       &(FGInterface::get_vBody),
+       &(FGInterface::set_vBody));
+  fgTie("/velocities/wBody", this,
+       &(FGInterface::get_wBody),
+       &(FGInterface::set_wBody));
+
+                               // Climb and slip (read-only)
+  fgTie("/velocities/vertical-speed", this,
+       &(FGInterface::get_Climb_Rate)); // read-only
+  fgTie("/velocities/side-slip", this,
+       &(FGInterface::get_Beta)); // read-only
+}
+
+void
+FGInterface::unbind ()
+{
+  fgUntie("/position/latitude");
+  fgUntie("/position/longitude");
+  fgUntie("/position/altitude");
+  fgUntie("/position/heading");
+  fgUntie("/position/pitch");
+  fgUntie("/position/roll");
+  fgUntie("/velocities/airspeed");
+  fgUntie("/velocities/speed-north");
+  fgUntie("/velocities/speed-east");
+  fgUntie("/velocities/speed-down");
+  fgUntie("/velocities/uBody");
+  fgUntie("/velocities/vBody");
+  fgUntie("/velocities/wBody");
+  fgUntie("/velocities/vertical-speed");
+  fgUntie("/velocities/side-slip");
+}
+
+void
+FGInterface::update ()
+{
+  update(1);
 }
 
 
index 270ffaa1123a6e99d690973b15e0b53cc123b4bf..7014f82d5b1770107499cba95f04ebe6938f9111 100644 (file)
 #include <vector>
 #include <string>
 
+#include <simgear/constants.h>
 #include <simgear/timing/timestamp.hxx>
 
+#include <Main/fgfs.hxx>
+
 FG_USING_STD(list);
 FG_USING_STD(vector);
 FG_USING_STD(string);
@@ -160,7 +163,7 @@ typedef vector < FGEngInterface > engine_list;
 
 
 // This is based heavily on LaRCsim/ls_generic.h
-class FGInterface {
+class FGInterface : public FGSubsystem {
 
 private:
   
@@ -258,6 +261,8 @@ private:
     SGTimeStamp next_stamp;           // time this record is valid
 
 protected:
+    virtual bool init( double dt );
+
     void _busdump(void);
     void _updatePosition( double lat_geoc, double lon, double alt );
     void _updateWeather( void );
@@ -417,7 +422,10 @@ public:
     FGInterface(void);
     virtual ~FGInterface();
 
-    virtual bool init( double dt );
+    virtual void init ();
+    virtual void bind ();
+    virtual void unbind ();
+    virtual void update ();
     virtual bool update( int multi_loop );
 
     // Define the various supported flight models (many not yet implemented)
@@ -454,15 +462,41 @@ public:
     virtual void set_Longitude(double lon);    
     virtual void set_Altitude(double alt);  // triggers re-calc of AGL altitude
     virtual void set_AltitudeAGL(double altagl); // and vice-versa
+    virtual void set_Latitude_deg (double lat) {
+      set_Latitude(lat * DEG_TO_RAD);
+    }
+    virtual void set_Longitude_deg (double lon) {
+      set_Longitude(lon * DEG_TO_RAD);
+    }
     
     // Speeds -- setting any of these will trigger a re-calc of the rest
     virtual void set_V_calibrated_kts(double vc);
     virtual void set_Mach_number(double mach);
     virtual void set_Velocities_Local( double north, double east, double down );
+    inline void set_V_north (double north) { v_local_v[0] = north; }
+    inline void set_V_east (double east) { v_local_v[1] = east; }
+    inline void set_V_down (double down) { v_local_v[2] = down; }
     virtual void set_Velocities_Wind_Body( double u, double v, double w);
+    virtual void set_uBody (double uBody) { v_wind_body_v[0] = uBody; }
+    virtual void set_vBody (double vBody) { v_wind_body_v[1] = vBody; }
+    virtual void set_wBody (double wBody) { v_wind_body_v[2] = wBody; }
     
     // Euler angles 
     virtual void set_Euler_Angles( double phi, double theta, double psi );
+    virtual void set_Phi (double phi) {
+      set_Euler_Angles(phi, get_Theta(), get_Psi());
+    }
+    virtual void set_Theta (double theta) {
+      set_Euler_Angles(get_Phi(), theta, get_Psi());
+    }
+    virtual void set_Psi (double psi) { 
+      set_Euler_Angles(get_Phi(), get_Theta(), psi);
+    }
+    virtual void set_Phi_deg (double phi) { set_Phi(phi * DEG_TO_RAD); }
+    virtual void set_Theta_deg (double theta) {
+      set_Theta(theta * DEG_TO_RAD); 
+    }
+    virtual void set_Psi_deg (double psi) { set_Psi(psi * DEG_TO_RAD); }
     
     // Flight Path
     virtual void set_Climb_Rate( double roc);
@@ -669,6 +703,9 @@ public:
     inline double get_V_north() const { return v_local_v[0]; }
     inline double get_V_east() const { return v_local_v[1]; }
     inline double get_V_down() const { return v_local_v[2]; }
+    inline double get_uBody () const { return v_wind_body_v[0]; }
+    inline double get_vBody () const { return v_wind_body_v[1]; }
+    inline double get_wBody () const { return v_wind_body_v[2]; }
 
     // inline double * get_V_local_rel_ground_v() {
     //     return v_local_rel_ground_v;
@@ -803,12 +840,22 @@ public:
     inline double get_Latitude() const { return geodetic_position_v[0]; }
     inline double get_Longitude() const { return geodetic_position_v[1]; }
     inline double get_Altitude() const { return geodetic_position_v[2]; }
-    inline double get_Altitude_AGL(void) { return altitude_agl; }
+    inline double get_Altitude_AGL(void) const { return altitude_agl; }
+
+    inline double get_Latitude_deg () const {
+      return get_Latitude() * RAD_TO_DEG;
+    }
+    inline double get_Longitude_deg () const {
+      return get_Longitude() * RAD_TO_DEG;
+    }
 
     // inline double * get_Euler_angles_v() { return euler_angles_v; }
     inline double get_Phi() const { return euler_angles_v[0]; }
     inline double get_Theta() const { return euler_angles_v[1]; }
     inline double get_Psi() const { return euler_angles_v[2]; }
+    inline double get_Phi_deg () const { return get_Phi() * RAD_TO_DEG; }
+    inline double get_Theta_deg () const { return get_Theta() * RAD_TO_DEG; }
+    inline double get_Psi_deg () const { return get_Psi() * RAD_TO_DEG; }
 
 
     // ========== Miscellaneous quantities ==========
index e9f2fe020d7c76efb0ddc1899c21d4cea1e47484..639a7bcae9c6e2f6cf780cc08395239111ddc2b6 100644 (file)
@@ -212,16 +212,16 @@ FGBFI::init ()
   fgTie("/sim/time/gmt-string", getGMTString);
 
                                // Position
-  fgTie("/position/latitude", getLatitude, setLatitude);
-  fgTie("/position/longitude", getLongitude, setLongitude);
-  fgTie("/position/altitude", getAltitude, setAltitude);
-  fgTie("/position/altitude-agl", getAGL);
+//   fgTie("/position/latitude", getLatitude, setLatitude);
+//   fgTie("/position/longitude", getLongitude, setLongitude);
+//   fgTie("/position/altitude", getAltitude, setAltitude);
+//   fgTie("/position/altitude-agl", getAGL);
 
                                // Orientation
-  fgTie("/orientation/heading", getHeading, setHeading);
+//   fgTie("/orientation/heading", getHeading, setHeading);
   fgTie("/orientation/heading-magnetic", getHeadingMag);
-  fgTie("/orientation/pitch", getPitch, setPitch);
-  fgTie("/orientation/roll", getRoll, setRoll);
+//   fgTie("/orientation/pitch", getPitch, setPitch);
+//   fgTie("/orientation/roll", getRoll, setRoll);
 
                                // Engine
   fgTie("/engines/engine0/rpm", getRPM);
@@ -230,12 +230,12 @@ FGBFI::init ()
   fgTie("/engines/engine0/mp", getMP);
 
                                // Velocities
-  fgTie("/velocities/airspeed", getAirspeed, setAirspeed);
-  fgTie("/velocities/side-slip", getSideSlip);
-  fgTie("/velocities/vertical-speed", getVerticalSpeed);
-  fgTie("/velocities/speed-north", getSpeedNorth);
-  fgTie("/velocities/speed-east", getSpeedEast);
-  fgTie("/velocities/speed-down", getSpeedDown);
+//   fgTie("/velocities/airspeed", getAirspeed, setAirspeed);
+//   fgTie("/velocities/side-slip", getSideSlip);
+//   fgTie("/velocities/vertical-speed", getVerticalSpeed);
+//   fgTie("/velocities/speed-north", getSpeedNorth);
+//   fgTie("/velocities/speed-east", getSpeedEast);
+//   fgTie("/velocities/speed-down", getSpeedDown);
 
                                // Autopilot
   fgTie("/autopilot/locks/altitude", getAPAltitudeLock, setAPAltitudeLock);
index 8238bca688c248973a23cee91ff0bd963e9e5dac..24b38ebe65bb9dbd4f64fec517c61c4bcd44d8fc 100644 (file)
@@ -124,46 +124,6 @@ public:
 //   static void setSpeedDown (double speed);
 
 
-#if 0
-                               // Controls
-  static double getThrottle ();        // 0.0:1.0
-  static void setThrottle (double throttle); // 0.0:1.0
-
-  static double getMixture (); // 0.0:1.0
-  static void setMixture (double mixture); // 0.0:1.0
-
-  static double getPropAdvance (); // 0.0:1.0
-  static void setPropAdvance (double pitch); // 0.0:1.0
-
-  static double getFlaps ();   // 0.0:1.0
-  static void setFlaps (double flaps); // 0.0:1.0
-
-  static double getAileron (); // -1.0:1.0
-  static void setAileron (double aileron); // -1.0:1.0
-
-  static double getRudder ();  // -1.0:1.0
-  static void setRudder (double rudder); // -1.0:1.0
-
-  static double getElevator ();        // -1.0:1.0
-  static void setElevator (double elevator); // -1.0:1.0
-
-  static double getElevatorTrim (); // -1.0:1.0
-  static void setElevatorTrim (double trim); // -1.0:1.0
-
-  static double getBrakes ();  // 0.0:1.0
-  static void setBrakes (double brake);        // 0.0:1.0
-
-  static double getLeftBrake (); // 0.0:1.0
-  static void setLeftBrake (double brake); // 0.0:1.0
-
-  static double getRightBrake (); // 0.0:1.0
-  static void setRightBrake (double brake); // 0.0:1.0
-
-  static double getCenterBrake (); // 0.0:1.0
-  static void setCenterBrake (double brake); // 0.0:1.0
-
-#endif
-
                                // Autopilot
   static bool getAPAltitudeLock ();
   static void setAPAltitudeLock (bool lock);
index d81c9c9ca60a4b45bd9b54451f1de4ef7627210f..565edd6d93af026777c1297d177840368f1ba9a9 100644 (file)
@@ -563,10 +563,10 @@ bool fgInitSubsystems( void ) {
     fgVelocityInit();
 
     // Initial Orientation
-    cur_fdm_state->
-       set_Euler_Angles( fgGetDouble("/orientation/roll") * DEG_TO_RAD,
-                         fgGetDouble("/orientation/pitch") * DEG_TO_RAD,
-                         fgGetDouble("/orientation/heading") * DEG_TO_RAD );
+//     cur_fdm_state->
+//     set_Euler_Angles( fgGetDouble("/orientation/roll") * DEG_TO_RAD,
+//                       fgGetDouble("/orientation/pitch") * DEG_TO_RAD,
+//                       fgGetDouble("/orientation/heading") * DEG_TO_RAD );
 
     // Initialize the event manager
     global_events.Init();
@@ -692,12 +692,14 @@ bool fgInitSubsystems( void ) {
     // Initialize the flight model subsystem data structures base on
     // above values
 
-    if ( cur_fdm_state->init( 1.0 / fgGetInt("/sim/model-hz") ) ) {
-       // fdm init successful
-    } else {
-       FG_LOG( FG_GENERAL, FG_ALERT, "FDM init() failed!  Cannot continue." );
-       exit(-1);
-    }
+    cur_fdm_state->init();
+    cur_fdm_state->bind();
+//     if ( cur_fdm_state->init( 1.0 / fgGetInt("/sim/model-hz") ) ) {
+//     // fdm init successful
+//     } else {
+//     FG_LOG( FG_GENERAL, FG_ALERT, "FDM init() failed!  Cannot continue." );
+//     exit(-1);
+//     }
 
     // *ABCD* I'm just sticking this here for now, it should probably
     // move eventually
@@ -810,10 +812,10 @@ void fgReInitSubsystems( void )
     fgVelocityInit();
 
     // Initial Orientation
-    cur_fdm_state->
-       set_Euler_Angles( fgGetDouble("/orientation/roll") * DEG_TO_RAD,
-                         fgGetDouble("/orientation/pitch") * DEG_TO_RAD,
-                         fgGetDouble("/orientation/heading") * DEG_TO_RAD );
+//     cur_fdm_state->
+//     set_Euler_Angles( fgGetDouble("/orientation/roll") * DEG_TO_RAD,
+//                       fgGetDouble("/orientation/pitch") * DEG_TO_RAD,
+//                       fgGetDouble("/orientation/heading") * DEG_TO_RAD );
 
     // Initialize view parameters
     FGViewerRPH *pilot_view =
@@ -838,7 +840,9 @@ void fgReInitSubsystems( void )
     FG_LOG( FG_GENERAL, FG_DEBUG, "  abs_view_pos = "
            << globals->get_current_view()->get_abs_view_pos());
 
-    cur_fdm_state->init( 1.0 / fgGetInt("/sim/model-hz") );
+    cur_fdm_state->init();
+    cur_fdm_state->bind();
+//     cur_fdm_state->init( 1.0 / fgGetInt("/sim/model-hz") );
 
     scenery.cur_elev = cur_fdm_state->get_Runway_altitude() * FEET_TO_METER;