------ Copyright (C) 1999 - 2000 Curtis L. Olson (curt@flightgear.org) ------
This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
+ modify it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU General Public License
+ You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#undef MAX_ENGINES
-#include <Aircraft/aircraft.hxx>
+#include "math/FGColumnVector3.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include <simgear/misc/props.hxx>
+#include <simgear/props/props.hxx>
#include <FDM/JSBSim/FGFDMExec.h>
namespace JSBSim {
-class FGState;
class FGAtmosphere;
class FGFCS;
class FGPropulsion;
class FGAerodynamics;
class FGInertial;
class FGAircraft;
-class FGTranslation;
-class FGRotation;
-class FGPosition;
+class FGPropagate;
class FGAuxiliary;
class FGOutput;
class FGInitialCondition;
}
-using namespace JSBSim;
-
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs]
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+// Adding it here will cause a namespace clash in FlightGear -EMH-
+// using namespace JSBSim;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
documentation for main for direction on running JSBSim apart from FlightGear.
@author Curtis L. Olson (original)
@author Tony Peden (Maintained and refined)
- @version $Id$
+ @version $Id: JSBSim.hxx,v 1.15 2010/10/07 03:45:40 jberndt Exp $
@see main in file JSBSim.cpp (use main() wrapper for standalone usage)
- @see <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jsbsim/JSBSim/JSBSim.hxx?rev=HEAD&content-type=text/vnd.viewcvs-markup">
- Header File </a>
- @see <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jsbsim/JSBSim/JSBSim.cxx?rev=HEAD&content-type=text/vnd.viewcvs-markup">
- Source File </a>
*/
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/// Reset flight params to a specific position
void init();
+ /// Unbind properties
+ void unbind();
+
/// @name Position Parameter Set
//@{
/** Set geocentric latitude
@param lat latitude in radians measured from the 0 meridian where
- the westerly direction is positive and east is negative */
+ the westerly direction is positive and east is negative */
void set_Latitude(double lat); // geocentric
/** Set longitude
@param lon longitude in radians measured from the equator where
- the northerly direction is positive and south is negative */
+ the northerly direction is positive and south is negative */
void set_Longitude(double lon);
/** Set altitude
Note: this triggers a recalculation of AGL altitude
- @param alt altitude in feet */
+ @param alt altitude in feet */
void set_Altitude(double alt); // triggers re-calc of AGL altitude
//@}
//@{
/** Sets calibrated airspeed
Setting this will trigger a recalc of the other velocity terms.
- @param vc Calibrated airspeed in ft/sec */
+ @param vc Calibrated airspeed in ft/sec */
void set_V_calibrated_kts(double vc);
/** Sets Mach number.
Setting this will trigger a recalc of the other velocity terms.
- @param mach Mach number */
+ @param mach Mach number */
void set_Mach_number(double mach);
/** Sets velocity in N-E-D coordinates.
Setting this will trigger a recalc of the other velocity terms.
- @param north velocity northward in ft/sec
- @param east velocity eastward in ft/sec
- @param down velocity downward in ft/sec */
+ @param north velocity northward in ft/sec
+ @param east velocity eastward in ft/sec
+ @param down velocity downward in ft/sec */
void set_Velocities_Local( double north, double east, double down );
/** Sets aircraft velocity in stability frame.
Setting this will trigger a recalc of the other velocity terms.
- @param u X velocity in ft/sec
- @param v Y velocity in ft/sec
- @param w Z velocity in ft/sec */
+ @param u X velocity in ft/sec
+ @param v Y velocity in ft/sec
+ @param w Z velocity in ft/sec */
void set_Velocities_Wind_Body( double u, double v, double w);
//@}
/** Euler Angle Parameter Set
@param phi roll angle in radians
- @param theta pitch angle in radians
- @param psi heading 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 );
/// @name Flight Path Parameter Set
void do_trim(void);
void update_ic(void);
+ bool get_agl_ft(double t, const double pt[3], double alt_off,
+ double contact[3], double normal[3], double vel[3],
+ double angularVel[3], double *agl);
private:
- FGFDMExec *fdmex;
- FGInitialCondition *fgic;
+ JSBSim::FGFDMExec *fdmex;
+ JSBSim::FGInitialCondition *fgic;
bool needTrim;
- FGState* State;
- FGAtmosphere* Atmosphere;
- FGFCS* FCS;
- FGPropulsion* Propulsion;
- FGMassBalance* MassBalance;
- FGAircraft* Aircraft;
- FGTranslation* Translation;
- FGRotation* Rotation;
- FGPosition* Position;
- FGAuxiliary* Auxiliary;
- FGAerodynamics* Aerodynamics;
- FGGroundReactions *GroundReactions;
+ JSBSim::FGAtmosphere* Atmosphere;
+ JSBSim::FGFCS* FCS;
+ JSBSim::FGPropulsion* Propulsion;
+ JSBSim::FGMassBalance* MassBalance;
+ JSBSim::FGAircraft* Aircraft;
+ JSBSim::FGPropagate* Propagate;
+ JSBSim::FGAuxiliary* Auxiliary;
+ JSBSim::FGAerodynamics* Aerodynamics;
+ JSBSim::FGGroundReactions* GroundReactions;
+ JSBSim::FGInertial* Inertial;
int runcount;
- float trim_elev;
- float trim_throttle;
-
- SGPropertyNode *startup_trim;
- SGPropertyNode *trimmed;
- SGPropertyNode *pitch_trim;
- SGPropertyNode *throttle_trim;
- SGPropertyNode *aileron_trim;
- SGPropertyNode *rudder_trim;
- SGPropertyNode *stall_warning;
+ double trim_elev;
+ double trim_throttle;
+
+ SGPropertyNode_ptr startup_trim;
+ SGPropertyNode_ptr trimmed;
+ SGPropertyNode_ptr pitch_trim;
+ SGPropertyNode_ptr throttle_trim;
+ SGPropertyNode_ptr aileron_trim;
+ SGPropertyNode_ptr rudder_trim;
+ SGPropertyNode_ptr stall_warning;
+
+ /* SGPropertyNode_ptr elevator_pos_deg;
+ SGPropertyNode_ptr left_aileron_pos_deg;
+ SGPropertyNode_ptr right_aileron_pos_deg;
+ SGPropertyNode_ptr rudder_pos_deg;
+ SGPropertyNode_ptr flap_pos_deg; */
+
+
+ SGPropertyNode_ptr elevator_pos_pct;
+ SGPropertyNode_ptr left_aileron_pos_pct;
+ SGPropertyNode_ptr right_aileron_pos_pct;
+ SGPropertyNode_ptr rudder_pos_pct;
+ SGPropertyNode_ptr flap_pos_pct;
+ SGPropertyNode_ptr speedbrake_pos_pct;
+ SGPropertyNode_ptr spoilers_pos_pct;
+
+ SGPropertyNode_ptr ab_brake_engaged;
+ SGPropertyNode_ptr ab_brake_left_pct;
+ SGPropertyNode_ptr ab_brake_right_pct;
- /* SGPropertyNode *elevator_pos_deg;
- SGPropertyNode *left_aileron_pos_deg;
- SGPropertyNode *right_aileron_pos_deg;
- SGPropertyNode *rudder_pos_deg;
- SGPropertyNode *flap_pos_deg; */
+ SGPropertyNode_ptr gear_pos_pct;
+ SGPropertyNode_ptr wing_fold_pos_pct;
+ SGPropertyNode_ptr tailhook_pos_pct;
+
+ SGPropertyNode_ptr temperature;
+ SGPropertyNode_ptr pressure;
+ SGPropertyNode_ptr density;
+ SGPropertyNode_ptr turbulence_gain;
+ SGPropertyNode_ptr turbulence_rate;
+
+ SGPropertyNode_ptr wind_from_north;
+ SGPropertyNode_ptr wind_from_east;
+ SGPropertyNode_ptr wind_from_down;
+
+ SGPropertyNode_ptr slaved;
+
+ double last_hook_tip[3];
+ double last_hook_root[3];
+ JSBSim::FGColumnVector3 hook_root_struct;
+ double hook_length;
+ bool got_wire;
+
+ bool crashed;
-
- SGPropertyNode *elevator_pos_pct;
- SGPropertyNode *left_aileron_pos_pct;
- SGPropertyNode *right_aileron_pos_pct;
- SGPropertyNode *rudder_pos_pct;
- SGPropertyNode *flap_pos_pct;
- SGPropertyNode *speedbrake_pos_pct;
- SGPropertyNode *spoilers_pos_pct;
-
- SGPropertyNode *gear_pos_pct;
-
- SGPropertyNode *temperature;
- SGPropertyNode *pressure;
- SGPropertyNode *density;
- SGPropertyNode *turbulence;
-
- SGPropertyNode *wind_from_north;
- SGPropertyNode *wind_from_east;
- SGPropertyNode *wind_from_down;
-
void init_gear(void);
void update_gear(void);
-
+
+ void update_external_forces(double t_off);
};