]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/FGFDMExec.h
JSBSim updates. This update changes the file format, so an update of the base
[flightgear.git] / src / FDM / JSBSim / FGFDMExec.h
index 4a53c7f68956659824189849f2519784bbb9f362..08f6161bcd4282bd7bb01c2e8b0ea4297b7fd1e8 100644 (file)
@@ -41,10 +41,12 @@ INCLUDES
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
 #include "FGModel.h"
+#include "FGTrim.h"
 #include "FGInitialCondition.h"
 #include "FGJSBBase.h"
 #include "FGPropertyManager.h"
 
+
 #include <vector>
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 DEFINITIONS
@@ -56,8 +58,6 @@ DEFINITIONS
 FORWARD DECLARATIONS
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
-class FGInitialCondition;
-
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs]
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@@ -138,20 +138,19 @@ public:
       @return true if successful, false if sim should be ended  */
   bool Run(void);
 
-  /** Initializes the sim with a set of initial conditions.
-      @param fgic A pointer to a filled out initial conditions class which
-      describes the desired initial conditions.
+  /** Initializes the sim from the initial condition object and executes
+      each scheduled model without integrating i.e. dt=0.
       @return true if successful
        */
-  bool RunIC(FGInitialCondition *fgic);
+  bool RunIC(void);
 
   /// Freezes the sim
   void Freeze(void) {frozen = true;}
 
   /// Resumes the sim
   void Resume(void) {frozen = false;}
-
-  /** Loads an aircraft model.
+  
+  /** Loads an aircraft model.  
       @param AircraftPath path to the aircraft directory. For instance:
       "aircraft". Under aircraft, then, would be directories for various
       modeled aircraft such as C172/, x15/, etc.
@@ -163,10 +162,39 @@ public:
       instance: "aircraft/x15/x15.xml"
       @return true if successful*/
   bool LoadModel(string AircraftPath, string EnginePath, string model);
+  
+
+  /** Loads an aircraft model.  The paths to the aircraft and engine
+      config file directories must be set prior to calling this.  See
+      below.
+      @param model the name of the aircraft model itself. This file will
+      be looked for in the directory specified in the AircraftPath variable,
+      and in turn under the directory with the same name as the model. For
+      instance: "aircraft/x15/x15.xml"
+      @return true if successful*/
+  bool LoadModel(string model);
+  
 
-  bool SetEnginePath(string path)   {EnginePath = path; return true;}
-  bool SetAircraftPath(string path) {AircraftPath = path; return true;}
+  /** Sets the path to the engine config file directories.
+      @param EnginePath path to the directory under which engine config
+      files are kept, for instance "engine"
+  */
+  bool SetEnginePath(string path)   { EnginePath = path; return true; }
 
+  /** Sets the path to the aircraft config file directories.
+      @param AircraftPath path to the aircraft directory. For instance:
+      "aircraft". Under aircraft, then, would be directories for various
+      modeled aircraft such as C172/, x15/, etc.
+  */
+  bool SetAircraftPath(string path) { AircraftPath = path; return true; }
+  
+  /** Sets the path to the autopilot config file directories.
+      @param ControlPath path to the control directory. For instance:
+      "control".
+  */
+  bool SetControlPath(string path) { ControlPath = path; return true; }
+  
   /// @name Top-level executive State and Model retrieval mechanism
   //@{
   /// Returns the FGState pointer.
@@ -197,12 +225,20 @@ public:
   inline FGAuxiliary* GetAuxiliary(void)      {return Auxiliary;}
   /// Returns the FGOutput pointer.
   inline FGOutput* GetOutput(void)            {return Output;}
+  // Returns a pointer to the FGInitialCondition object
+  inline FGInitialCondition* GetIC(void)      {return IC;}
+  // Returns a pointer to the FGTrim object
+  FGTrim* GetTrim(void);
   //@}
-
+  
   /// Retrieves the engine path.
   inline string GetEnginePath(void)          {return EnginePath;}
   /// Retrieves the aircraft path.
   inline string GetAircraftPath(void)        {return AircraftPath;}
+  /// Retrieves the control path.
+  inline string GetControlPath(void)        {return ControlPath;}
+  
+  string GetModelName(void) { return modelName; }
   
   FGPropertyManager* GetPropertyManager(void);
   vector <string> EnumerateFDMs(void);
@@ -218,6 +254,7 @@ private:
   unsigned int IdFDM;
   static unsigned int FDMctr;
   bool modelLoaded;
+  string modelName;
   bool IsSlave;
   static FGPropertyManager *master;
   FGPropertyManager *instance;
@@ -243,6 +280,8 @@ private:
 
   string AircraftPath;
   string EnginePath;
+  string ControlPath;
+  
   string CFGVersion;
 
   FGState*           State;
@@ -259,6 +298,9 @@ private:
   FGPosition*        Position;
   FGAuxiliary*       Auxiliary;
   FGOutput*          Output;
+  
+  FGInitialCondition* IC;
+  FGTrim *Trim;
 
   vector <slaveData*> SlaveFDMList;
 
@@ -271,7 +313,6 @@ private:
   bool ReadPrologue(FGConfigFile*);
   bool ReadOutput(FGConfigFile*);
 
-  void TransferState(int idx);
   bool Allocate(void);
   bool DeAllocate(void);
   void Debug(int from);