1 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
3 Module: FGJSBBase.cpp
\r
4 Author: Jon S. Berndt
\r
5 Date started: 07/01/01
\r
6 Purpose: Encapsulates the JSBBase object
\r
8 ------------- Copyright (C) 2001 Jon S. Berndt (jsb@hal-pc.org) -------------
\r
10 This program is free software; you can redistribute it and/or modify it under
\r
11 the terms of the GNU General Public License as published by the Free Software
\r
12 Foundation; either version 2 of the License, or (at your option) any later
\r
15 This program is distributed in the hope that it will be useful, but WITHOUT
\r
16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
\r
17 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
\r
20 You should have received a copy of the GNU General Public License along with
\r
21 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
\r
22 Place - Suite 330, Boston, MA 02111-1307, USA.
\r
24 Further information about the GNU General Public License can also be found on
\r
25 the world wide web at http://www.gnu.org.
\r
27 FUNCTIONAL DESCRIPTION
\r
28 --------------------------------------------------------------------------------
\r
31 --------------------------------------------------------------------------------
\r
32 07/01/01 JSB Created
\r
34 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
36 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
\r
38 #include "FGJSBBase.h"
\r
42 static const char *IdSrc = "$Id$";
\r
43 static const char *IdHdr = ID_JSBBASE;
\r
45 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
46 CLASS IMPLEMENTATION
\r
47 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
\r
49 char FGJSBBase::highint[5] = {27, '[', '1', 'm', '\0' };
\r
50 char FGJSBBase::halfint[5] = {27, '[', '2', 'm', '\0' };
\r
51 char FGJSBBase::normint[6] = {27, '[', '2', '2', 'm', '\0' };
\r
52 char FGJSBBase::reset[5] = {27, '[', '0', 'm', '\0' };
\r
53 char FGJSBBase::underon[5] = {27, '[', '4', 'm', '\0' };
\r
54 char FGJSBBase::underoff[6] = {27, '[', '2', '4', 'm', '\0' };
\r
55 char FGJSBBase::fgblue[6] = {27, '[', '3', '4', 'm', '\0' };
\r
56 char FGJSBBase::fgcyan[6] = {27, '[', '3', '6', 'm', '\0' };
\r
57 char FGJSBBase::fgred[6] = {27, '[', '3', '1', 'm', '\0' };
\r
58 char FGJSBBase::fggreen[6] = {27, '[', '3', '2', 'm', '\0' };
\r
59 char FGJSBBase::fgdef[6] = {27, '[', '3', '9', 'm', '\0' };
\r
61 const double FGJSBBase::radtodeg = 57.29578;
\r
62 const double FGJSBBase::degtorad = 1.745329E-2;
\r
63 const double FGJSBBase::hptoftlbssec = 550.0;
\r
64 const double FGJSBBase::psftoinhg = 0.014138;
\r
65 const double FGJSBBase::fpstokts = 0.592484;
\r
66 const double FGJSBBase::ktstofps = 1.68781;
\r
67 const double FGJSBBase::inchtoft = 0.08333333;
\r
68 const double FGJSBBase::in3tom3 = 1.638706E-5;
\r
69 double FGJSBBase::Reng = 1716.0;
\r
70 const double FGJSBBase::SHRatio = 1.40;
\r
72 // Note that definition of lbtoslug by the inverse of slugtolb and not
\r
73 // to a different constant you can also get from some tables will make
\r
74 // lbtoslug*slugtolb == 1 up to the magnitude of roundoff. So converting from
\r
75 // slug to lb and back will yield to the original value you started with up
\r
76 // to the magnitude of roundoff.
\r
77 // Taken from units gnu commandline tool
\r
78 const double FGJSBBase::slugtolb = 32.174049;
\r
79 const double FGJSBBase::lbtoslug = 1.0/slugtolb;
\r
81 const string FGJSBBase::needed_cfg_version = "1.61";
\r
82 const string FGJSBBase::JSBSim_version = "0.9.5";
\r
84 std::queue <FGJSBBase::Message*> FGJSBBase::Messages;
\r
85 FGJSBBase::Message FGJSBBase::localMsg;
\r
86 unsigned int FGJSBBase::messageId = 0;
\r
87 unsigned int FGJSBBase::frame = 0;
\r
89 short FGJSBBase::debug_lvl = 1;
\r
91 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
93 FGJSBBase::FGJSBBase()
\r
97 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
99 FGJSBBase::Message* FGJSBBase::PutMessage(Message* msg)
\r
101 Messages.push(msg);
\r
105 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
107 FGJSBBase::Message* FGJSBBase::PutMessage(string text)
\r
109 Message *msg = new Message();
\r
111 msg->messageId = messageId++;
\r
112 msg->subsystem = "FDM";
\r
113 msg->type = Message::eText;
\r
114 Messages.push(msg);
\r
118 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
120 FGJSBBase::Message* FGJSBBase::PutMessage(string text, bool bVal)
\r
122 Message *msg = new Message();
\r
124 msg->messageId = messageId++;
\r
125 msg->subsystem = "FDM";
\r
126 msg->type = Message::eBool;
\r
128 Messages.push(msg);
\r
132 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
134 FGJSBBase::Message* FGJSBBase::PutMessage(string text, int iVal)
\r
136 Message *msg = new Message();
\r
138 msg->messageId = messageId++;
\r
139 msg->subsystem = "FDM";
\r
140 msg->type = Message::eInteger;
\r
141 msg->bVal = (iVal != 0);
\r
142 Messages.push(msg);
\r
146 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
148 FGJSBBase::Message* FGJSBBase::PutMessage(string text, double dVal)
\r
150 Message *msg = new Message();
\r
152 msg->messageId = messageId++;
\r
153 msg->subsystem = "FDM";
\r
154 msg->type = Message::eDouble;
\r
155 msg->bVal = (dVal != 0.0);
\r
156 Messages.push(msg);
\r
160 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
162 FGJSBBase::Message* FGJSBBase::ReadMessage(void)
\r
164 if (!Messages.empty()) return Messages.front();
\r
168 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
170 FGJSBBase::Message* FGJSBBase::ProcessMessage(void)
\r
172 if (!Messages.empty())
\r
173 localMsg = *(Messages.front());
\r
180 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
182 void FGJSBBase::disableHighLighting(void) {
\r
196 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
198 } // namespace JSBSim
\r