X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FJSBSim%2FJSBSim.hxx;h=80b3f3c3aaac930a1d3174c7cdf6d663884dc50f;hb=c112b8b8e169a427e8cb0da871347e5c10031479;hp=64f1dfcb1364b5ff226e2055972c2833939caf82;hpb=34a4fb72b5943a31a04adf487334e0e1e0346cf1;p=flightgear.git diff --git a/src/FDM/JSBSim/JSBSim.hxx b/src/FDM/JSBSim/JSBSim.hxx index 64f1dfcb1..80b3f3c3a 100644 --- a/src/FDM/JSBSim/JSBSim.hxx +++ b/src/FDM/JSBSim/JSBSim.hxx @@ -8,16 +8,16 @@ ------ 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. @@ -38,7 +38,6 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #undef MAX_ENGINES -#include /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -58,8 +57,8 @@ FORWARD DECLARATIONS #include namespace JSBSim { -class FGState; class FGAtmosphere; +class FGWinds; class FGFCS; class FGPropulsion; class FGMassBalance; @@ -70,9 +69,12 @@ class FGPropagate; 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 @@ -85,7 +87,7 @@ 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) */ @@ -110,6 +112,15 @@ public: /// 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 @@ -200,76 +211,97 @@ public: /** 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 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); };