X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FJSBSim%2FFGJSBBase.h;h=f203f36e3d6611ea08753946fe7e139eadb13892;hb=ab242159a35646fd055119eb98fab62a8308ffdb;hp=a852258e094d797e59f01ff6fc3766e4759d0d29;hpb=2297c706e8c707c050f75696d5e399798b103434;p=flightgear.git diff --git a/src/FDM/JSBSim/FGJSBBase.h b/src/FDM/JSBSim/FGJSBBase.h index a852258e0..f203f36e3 100644 --- a/src/FDM/JSBSim/FGJSBBase.h +++ b/src/FDM/JSBSim/FGJSBBase.h @@ -41,12 +41,24 @@ INCLUDES #ifdef FGFS # include # include +# include +# include STL_STRING + +SG_USING_STD(string); +SG_USING_STD(queue); + #else + +# include +# include # if defined(sgi) && !defined(__GNUC__) # include # else # include # endif + +using std::string; +using std::queue; #endif #ifndef M_PI @@ -54,6 +66,17 @@ INCLUDES # define M_PI SG_PI #endif +#ifdef __FreeBSD__ // define gcvt on FreeBSD + +#include + +static char *gcvt(double number, size_t ndigit, char *buf) +{ + sprintf(buf, "%f", number); + return buf; +} +#endif + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -64,6 +87,7 @@ DEFINITIONS FORWARD DECLARATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -84,37 +108,128 @@ CLASS DECLARATION class FGJSBBase { public: /// Constructor for FGJSBBase. - FGJSBBase() {}; + FGJSBBase(); - /// Destructor for FGJSBBase + /// Destructor for FGJSBBase. virtual ~FGJSBBase() {}; + /// JSBSim Message structure + typedef struct Msg { + unsigned int fdmId; + unsigned int messageId; + string text; + string subsystem; + enum mType {eText, eInteger, eDouble, eBool} type; + bool bVal; + int iVal; + double dVal; + } Message; + + ///@name JSBSim Enums. + //@{ + /// Moments L, M, N enum {eL = 1, eM, eN }; + /// Rates P, Q, R enum {eP = 1, eQ, eR }; + /// Velocities U, V, W enum {eU = 1, eV, eW }; + /// Positions X, Y, Z enum {eX = 1, eY, eZ }; + /// Euler angles Phi, Theta, Psi enum {ePhi = 1, eTht, ePsi }; + /// Stability axis forces, Drag, Side force, Lift enum {eDrag = 1, eSide, eLift }; + /// Local frame orientation Roll, Pitch, Yaw enum {eRoll = 1, ePitch, eYaw }; + /// Local frame position North, East, Down enum {eNorth = 1, eEast, eDown }; - + //@} + + ///@name JSBSim console output highlighting terms. + //@{ + /// highlights text static char highint[5]; + /// low intensity text static char halfint[5]; + /// normal intensity text static char normint[6]; + /// resets text properties static char reset[5]; + /// underlines text static char underon[5]; + /// underline off static char underoff[6]; + /// blue text static char fgblue[6]; + /// cyan text static char fgcyan[6]; + /// red text static char fgred[6]; + /// green text static char fggreen[6]; + /// default text static char fgdef[6]; + //@} + + ///@name JSBSim Messaging functions + //@{ + /** Places a Message structure on the Message queue. + @param msg pointer to a Message structure + @return pointer to a Message structure */ + Message* PutMessage(Message* msg); + /** Creates a message with the given text and places it on the queue. + @param text message text + @return pointer to a Message structure */ + Message* PutMessage(string text); + /** Creates a message with the given text and boolean value and places it on the queue. + @param text message text + @param bVal boolean value associated with the message + @return pointer to a Message structure */ + Message* PutMessage(string text, bool bVal); + /** Creates a message with the given text and integer value and places it on the queue. + @param text message text + @param iVal integer value associated with the message + @return pointer to a Message structure */ + Message* PutMessage(string text, int iVal); + /** Creates a message with the given text and double value and places it on the queue. + @param text message text + @param dVal double value associated with the message + @return pointer to a Message structure */ + Message* PutMessage(string text, double dVal); + /** Reads the message on the queue (but does not delete it). + @return pointer to a Message structure (or NULL if no mesage) */ + Message* ReadMessage(void); + /** Reads the message on the queue and removes it from the queue. + @return pointer to a Message structure (or NULL if no mesage) */ + Message* ProcessMessage(void); + //@} + string GetVersion(void) {return JSBSim_version;} + + void disableHighLighting(void); protected: - virtual void Debug(void) {}; + static Message localMsg; + + static queue Messages; + + virtual void Debug(int from) {}; static short debug_lvl; - static int frame; + static unsigned int frame; + static unsigned int messageId; + + static const double radtodeg; + static const double degtorad; + static const double hptoftlbssec; + static const double psftoinhg; + static const double fpstokts; + static const double ktstofps; + static const double inchtoft; + static const double in3tom3; + static const double Reng; // Specific Gas Constant,ft^2/(sec^2*R) + static const double SHRatio; + static const string needed_cfg_version; + static const string JSBSim_version; }; //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%