along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
HISTORY
--------------------------------------------------------------------------------
02/01/1999 CLO Created
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include <FDM/JSBSim/FGFDMExec.h>
-#include <FDM/JSBSim/FGInitialCondition.h>
#undef MAX_ENGINES
#include <Aircraft/aircraft.hxx>
#define ID_JSBSIMXX "$Header JSBSim.hxx,v 1.4 2000/10/22 14:02:16 jsb Exp $"
+#define METERS_TO_FEET 3.2808398950
+#define RADTODEG 57.2957795
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#include <simgear/misc/props.hxx>
+
+#include <FDM/JSBSim/FGFDMExec.h>
+
+class FGState;
+class FGAtmosphere;
+class FGFCS;
+class FGPropulsion;
+class FGMassBalance;
+class FGAerodynamics;
+class FGInertial;
+class FGAircraft;
+class FGTranslation;
+class FGRotation;
+class FGPosition;
+class FGAuxiliary;
+class FGOutput;
+class FGInitialCondition;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-/** FGFS / JSBSim interface (aka "The Bus")
+/** FGFS / JSBSim interface (aka "The Bus").
This class provides for an interface between FlightGear and its data
structures and JSBSim and its data structures. This is the class which is
used to command JSBSim when integrated with FlightGear. See the
public:
/// Constructor
- FGJSBsim::FGJSBsim(void);
+ FGJSBsim::FGJSBsim( double dt );
/// Destructor
FGJSBsim::~FGJSBsim();
bool copy_from_JSBsim();
/// Reset flight params to a specific position
- bool init( double dt );
+ void init();
- /// Position Parameters
+ /// @name Position Parameter Set
//@{
/** Set geocentric latitude
@param lat latitude in radians measured from the 0 meridian where
//void set_AltitudeAGL(double altagl); // and vice-versa
- /// Velocity Parameters
+ /// @name Velocity Parameter Set
//@{
/** Sets calibrated airspeed
Setting this will trigger a recalc of the other velocity terms.
void set_Velocities_Wind_Body( double u, double v, double w);
//@}
- /** Euler angle parameters
+ /** Euler Angle Parameter Set
@param phi roll angle in radians
@param theta pitch angle in radians
@param psi heading angle in radians */
void set_Euler_Angles( double phi, double theta, double psi );
- /// Flight Path Parameters
+ /// @name Flight Path Parameter Set
//@{
/** Sets rate of climb
@param roc Rate of climb in ft/sec */
void set_Gamma_vert_rad( double gamma);
//@}
- /// Earth Parameters
+ /// @name Earth Parameter Set
//@{
/** Sets the sea level radius in feet.
@param slr Sea Level Radius in feet */
void set_Runway_altitude(double ralt);
//@}
- /// Atmospheric Parameters
+ /// @name Atmospheric Parameter Set
//@{
/** Sets the atmospheric static pressure
@param p pressure in psf */
void set_Velocities_Local_Airmass (double wnorth,
double weast,
double wdown );
- //@}
+ /// @name Position Parameter Update
+ //@{
+
/** Update the position based on inputs, positions, velocities, etc.
@param multiloop number of times to loop through the FDM
@return true if successful */
bool update( int multiloop );
+ bool ToggleDataLogging(bool state);
+ bool ToggleDataLogging(void);
+ void do_trim(void);
private:
FGFDMExec *fdmex;
FGInitialCondition *fgic;
bool needTrim;
- bool trimmed;
+ FGState* State;
+ FGAtmosphere* Atmosphere;
+ FGFCS* FCS;
+ FGPropulsion* Propulsion;
+ FGMassBalance* MassBalance;
+ FGAircraft* Aircraft;
+ FGTranslation* Translation;
+ FGRotation* Rotation;
+ FGPosition* Position;
+ FGAuxiliary* Auxiliary;
+ FGAerodynamics* Aerodynamics;
+ FGGroundReactions *GroundReactions;
+
+ int runcount;
float trim_elev;
float trim_throttle;
- void snap_shot(void);
+ SGPropertyNode *startup_trim;
+ SGPropertyNode *trimmed;
+ SGPropertyNode *pitch_trim;
+ SGPropertyNode *throttle_trim;
+ SGPropertyNode *aileron_trim;
+ SGPropertyNode *rudder_trim;
+ SGPropertyNode *stall_warning;
+
+ void init_gear(void);
+ void update_gear(void);
+
};