HISTORY
--------------------------------------------------------------------------------
11/17/98 JSB Created
-*******************************************************************************/
-/*******************************************************************************
+********************************************************************************
SENTRY
*******************************************************************************/
INCLUDES
*******************************************************************************/
-#include <stdio.h>
-#include <fstream.h>
+#ifdef FGFS
+# include <Include/compiler.h>
+# include STL_STRING
+# ifdef FG_HAVE_STD_INCLUDES
+# include <fstream>
+# else
+# include <fstream.h>
+# endif
+ FG_USING_STD(string);
+# ifdef FG_HAVE_NATIVE_SGI_COMPILERS
+ FG_USING_NAMESPACE(std);
+# endif
+#else
+# include <string>
+# include <fstream>
+#endif
+
+#include "FGDefs.h"
/*******************************************************************************
DEFINES
CLASS DECLARATION
*******************************************************************************/
+class FGFDMExec;
class FGState
{
public:
- FGState(void);
+ FGState(FGFDMExec*);
~FGState(void);
- bool Reset(char*);
- bool StoreData(char*);
- bool DumpData(char*);
+ bool Reset(string, string);
+ bool StoreData(string);
+ bool DumpData(string);
bool DisplayData(void);
-
- inline float GetU(void) {return U;}
- inline float GetV(void) {return V;}
- inline float GetW(void) {return W;}
-
- inline float GetVn(void) {return Vn;}
- inline float GetVe(void) {return Ve;}
- inline float GetVd(void) {return Vd;}
inline float GetVt(void) {return Vt;}
- inline float GetFx(void) {return Fx;}
- inline float GetFy(void) {return Fy;}
- inline float GetFz(void) {return Fz;}
-
- inline float GetP(void) {return P;}
- inline float GetQ(void) {return Q;}
- inline float GetR(void) {return R;}
-
- inline float GetQ0(void) {return Q0;}
- inline float GetQ1(void) {return Q1;}
- inline float GetQ2(void) {return Q2;}
- inline float GetQ3(void) {return Q3;}
-
- inline float GetL(void) {return L;}
- inline float GetM(void) {return M;}
- inline float GetN(void) {return N;}
-
- inline float GetIxx(void) const {return Ixx;}
- inline float GetIyy(void) const {return Iyy;}
- inline float GetIzz(void) const {return Izz;}
- inline float GetIxz(void) const {return Ixz;}
-
inline float Getlatitude(void) {return latitude;}
inline float Getlongitude(void) {return longitude;}
inline float GetGeodeticLat(void) {return GeodeticLat;}
-
- inline float Getalpha(void) {return alpha;}
- inline float Getbeta(void) {return beta;}
- inline float Getgamma(void) {return gamma;}
inline float Getadot(void) {return adot;}
inline float Getbdot(void) {return bdot;}
-
- inline float GetUdot(void) {return Udot;}
- inline float GetVdot(void) {return Vdot;}
- inline float GetWdot(void) {return Wdot;}
-
- inline float GetPdot(void) {return Pdot;}
- inline float GetQdot(void) {return Qdot;}
- inline float GetRdot(void) {return Rdot;}
inline float Geth(void) {return h;}
inline float Geta(void) {return a;}
inline float GetMach(void) {return Mach;}
-
- inline float Getrho(void) {return rho;}
+
inline float Getsim_time(void) {return sim_time;}
inline float Getdt(void) {return dt;}
- inline float Getphi(void) {return phi;}
- inline float Gettht(void) {return tht;}
- inline float Getpsi(void) {return psi;}
-
- inline float Getg(void) {return g;}
- inline float Getm(void) {return m;}
-
inline float Getqbar(void) {return qbar;}
- inline float GetT(int r, int c) {return T[r][c];}
-
- inline void SetU(float tt) {U = tt;}
- inline void SetV(float tt) {V = tt;}
- inline void SetW(float tt) {W = tt;}
inline void SetVt(float tt) {Vt = tt;}
- inline void SetVn(float tt) {Vn = tt;}
- inline void SetVe(float tt) {Ve = tt;}
- inline void SetVd(float tt) {Vd = tt;}
-
- inline void SetFx(float tt) {Fx = tt;}
- inline void SetFy(float tt) {Fy = tt;}
- inline void SetFz(float tt) {Fz = tt;}
-
- inline void SetP(float tt) {P = tt;}
- inline void SetQ(float tt) {Q = tt;}
- inline void SetR(float tt) {R = tt;}
-
- inline void SetL(float tt) {L = tt;}
- inline void SetM(float tt) {M = tt;}
- inline void SetN(float tt) {N = tt;}
-
- inline void SetIxx(float tt) {Ixx = tt;}
- inline void SetIyy(float tt) {Iyy = tt;}
- inline void SetIzz(float tt) {Izz = tt;}
- inline void SetIxz(float tt) {Ixz = tt;}
-
inline void Setlatitude(float tt) {latitude = tt;}
inline void Setlongitude(float tt) {longitude = tt;}
inline void SetGeodeticLat(float tt) {GeodeticLat = tt;}
- inline void Setalpha(float tt) {alpha = tt;}
- inline void Setbeta(float tt) {beta = tt;}
- inline void Setgamma(float tt) {gamma = tt;}
-
inline void Setadot(float tt) {adot = tt;}
inline void Setbdot(float tt) {bdot = tt;}
- inline void SetUdot(float tt) {Udot = tt;}
- inline void SetVdot(float tt) {Vdot = tt;}
- inline void SetWdot(float tt) {Wdot = tt;}
-
- inline void SetPdot(float tt) {Pdot = tt;}
- inline void SetQdot(float tt) {Qdot = tt;}
- inline void SetRdot(float tt) {Rdot = tt;}
-
- inline void Setphi(float tt) {phi = tt;}
- inline void Settht(float tt) {tht = tt;}
- inline void Setpsi(float tt) {psi = tt;}
-
- inline void Setg(float tt) {g = tt;}
- inline void Setm(float tt) {m = tt;}
inline void Setqbar(float tt) {qbar = tt;}
inline void Seth(float tt) {h = tt;}
inline void Seta(float tt) {a = tt;}
inline void SetMach(float tt) {Mach = tt;}
- inline void Setrho(float tt) {rho = tt;}
inline float Setsim_time(float tt) {sim_time = tt; return sim_time;}
- inline void Setdt(float tt) {dt = tt;}
- inline void SetQ0123(float q0, float q1, float q2, float q3) {Q0=q0;Q1=q1;Q2=q2;Q3=q3;}
- inline void SetT(int r, int c, float tt) {T[r][c] = tt;}
+ inline void Setdt(float tt) {dt = tt;}
inline float IncrTime(void) {sim_time+=dt;return sim_time;}
- const float EarthRad;
-
private:
- float U, V, W, Fx, Fy, Fz; // A/C body axis velocities and forces
- float P, Q, R, L, M, N; // A/C body axis rates and moments
- float Q0, Q1, Q2, Q3; // Quaternion elements
- float Ixx, Iyy, Izz, Ixz; // Moments of Inertia
float Vt; // Total velocity
- float Vn, Ve, Vd; // North, East, and Down local velocities
float latitude, longitude; // position
float GeodeticLat; // Geodetic Latitude
- float alpha, beta, gamma; // angle of attack, sideslip, and roll
float adot, bdot; // alpha dot and beta dot
- float phi, tht, psi; // Euler angles
- float Udot, Vdot, Wdot; // A/C body axis accelerations
- float Pdot, Qdot, Rdot; // A/C body axis rotational accelerations
float h, a; // altitude above sea level, speed of sound
- float rho, qbar; // density of air in lb/ft^3, dynamic pressure
+ float qbar; // dynamic pressure
float sim_time, dt;
- float m, g; // mass and acceleration of gravity
- float T[4][4]; // Local to Body transformation matrix
float Mach; // Mach number
-protected:
+ FGFDMExec* FDMExec;
+protected:
};
-#ifndef FDM_MAIN
-extern FGState* State;
-#else
-FGState* State;
-#endif
-
/******************************************************************************/
#endif