]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/LaRCsim.hxx
Updated to match changes in radiostack.[ch]xx
[flightgear.git] / src / FDM / LaRCsim.hxx
index 884cfd85fe656d9b4972e6b5c2dd3fdc0613df8b..7ce2ddc80afb5f4cad9cb84d20853db210734566 100644 (file)
 #define _LARCSIM_HXX
 
 
+#include "IO360.hxx"
 #include "flight.hxx"
+#include <FDM/LaRCsimIC.hxx>
 
+class FGLaRCsim: public FGInterface {
 
-// reset flight params to a specific position 
-int fgLaRCsimInit(double dt);
+private:
 
-// update position based on inputs, positions, velocities, etc.
-int fgLaRCsimUpdate(FGInterface& f, int multiloop);
+    FGNewEngine eng;
+    LaRCsimIC* lsic;
+    void set_ls(void);
+    void snap_shot(void);
+    double time_step;
+    SGPropertyNode *speed_up;
+    SGPropertyNode *aero;
+    
+public:
 
-// Convert from the FGInterface struct to the LaRCsim generic_ struct
-int FGInterface_2_LaRCsim (FGInterface& f);
+    FGLaRCsim( double dt );
+    ~FGLaRCsim(void);
+    
+    // copy FDM state to LaRCsim structures
+    bool copy_to_LaRCsim();
 
-// Convert from the LaRCsim generic_ struct to the FGInterface struct
-int fgLaRCsim_2_FGInterface (FGInterface& f);
+    // copy FDM state from LaRCsim structures
+    bool copy_from_LaRCsim();
+
+    // reset flight params to a specific position 
+    void init();
+
+    // update position based on inputs, positions, velocities, etc.
+    void update( double dt );
+    
+    // Positions
+    void set_Latitude(double lat);  //geocentric
+    void set_Longitude(double lon);    
+    void set_Altitude(double alt);        // triggers re-calc of AGL altitude
+    void set_AltitudeAGL(double altagl); // and vice-versa
+    
+    // Speeds -- setting any of these will trigger a re-calc of the rest
+    void set_V_calibrated_kts(double vc);
+    void set_Mach_number(double mach);
+    void set_Velocities_Local( double north, double east, double down );
+    void set_Velocities_Wind_Body( double u, double v, double w);
+    
+    // Euler angles 
+    void set_Euler_Angles( double phi, double theta, double psi );
+    
+    // Flight Path
+    void set_Climb_Rate( double roc);
+    void set_Gamma_vert_rad( double gamma);
+    
+    // Earth
+    void set_Static_pressure(double p);
+    void set_Static_temperature(double T); 
+    void set_Density(double rho); 
+
+/*
+    void set_Velocities_Local_Airmass (double wnorth, 
+                                      double weast, 
+                                      double wdown );
+*/
+};
 
 
 #endif // _LARCSIM_HXX