------ 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>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
#include <FDM/JSBSim/FGFDMExec.h>
namespace JSBSim {
-class FGState;
class FGAtmosphere;
+class FGWinds;
class FGFCS;
class FGPropulsion;
class FGMassBalance;
class FGAuxiliary;
class FGOutput;
class FGInitialCondition;
+class FGLocation;
+class FGAccelerations;
}
-using namespace JSBSim;
+// 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)
*/
/// Reset flight params to a specific position
void init();
+ /// Unbind properties
+ void unbind();
+
+ /// Suspend integration
+ void suspend();
+
+ /// Resume integration
+ void resume();
+
/// @name Position Parameter Set
//@{
/** Set geocentric latitude
/** Update the position based on inputs, positions, velocities, etc.
@param dt delta time in seconds. */
void update(double dt);
+
bool ToggleDataLogging(bool state);
bool ToggleDataLogging(void);
- void do_trim(void);
- void update_ic(void);
-
- //** Handle a crash of the user aircraft. */
- void crash_handler();
+ 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;
- FGPropagate* Propagate;
- FGAuxiliary* Auxiliary;
- FGAerodynamics* Aerodynamics;
- FGGroundReactions *GroundReactions;
+ JSBSim::FGAtmosphere* Atmosphere;
+ JSBSim::FGWinds* Winds;
+ 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;
+ JSBSim::FGAccelerations* Accelerations;
int runcount;
double trim_elev;
double trim_throttle;
- SGPropertyNode *startup_trim;
- SGPropertyNode *trimmed;
- SGPropertyNode *pitch_trim;
- SGPropertyNode *throttle_trim;
- SGPropertyNode *aileron_trim;
- SGPropertyNode *rudder_trim;
- SGPropertyNode *stall_warning;
-
- /* SGPropertyNode *elevator_pos_deg;
- SGPropertyNode *left_aileron_pos_deg;
- SGPropertyNode *right_aileron_pos_deg;
- SGPropertyNode *rudder_pos_deg;
- SGPropertyNode *flap_pos_deg; */
-
-
- 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_gain;
- SGPropertyNode *turbulence_rate;
-
- SGPropertyNode *wind_from_north;
- SGPropertyNode *wind_from_east;
- SGPropertyNode *wind_from_down;
+ 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_ptr gear_pos_pct;
+ SGPropertyNode_ptr wing_fold_pos_pct;
+ SGPropertyNode_ptr tailhook_pos_pct;
+
+ SGPropertyNode_ptr temperature;
+ SGPropertyNode_ptr pressure;
+ SGPropertyNode_ptr pressureSL;
+ SGPropertyNode_ptr ground_wind;
+ SGPropertyNode_ptr turbulence_gain;
+ SGPropertyNode_ptr turbulence_rate;
+ SGPropertyNode_ptr turbulence_model;
+
+ SGPropertyNode_ptr wind_from_north;
+ SGPropertyNode_ptr wind_from_east;
+ SGPropertyNode_ptr wind_from_down;
+
+ SGPropertyNode_ptr slaved;
+
+ static std::map<std::string,int> TURBULENCE_TYPE_NAMES;
+
+ double last_hook_tip[3];
+ double last_hook_root[3];
+ JSBSim::FGColumnVector3 hook_root_struct;
+ double hook_length;
+ bool got_wire;
+ bool crashed;
+
+ void do_trim(void);
+
+ bool update_ground_cache(JSBSim::FGLocation cart, double* cart_pos, double dt);
void init_gear(void);
void update_gear(void);
- bool reset_on_crash;
- bool crashed;
- string crash_message;
-
+ void update_external_forces(double t_off);
};