# include STL_IOSTREAM
# include STL_FSTREAM
#else
-# if defined(sgi) && !defined(__GNUC__)
+# if defined(sgi) && !defined(__GNUC__) && (_COMPILER_VERSION < 740)
# include <iostream.h>
# include <fstream.h>
# else
#include "FGfdmSocket.h"
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+DEFINITIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
#define ID_OUTPUT "$Id$"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-CLASS DECLARATION
+FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
namespace JSBSim {
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CLASS DOCUMENTATION
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+/** Handles simulation output.
+ OUTPUT section definition
+
+ The following specifies the way that JSBSim writes out data.
+
+ NAME is the filename you want the output to go to
+
+ TYPE can be:
+ CSV Comma separated data. If a filename is supplied then the data
+ goes to that file. If COUT or cout is specified, the data goes
+ to stdout. If the filename is a null filename the data goes to
+ stdout, as well.
+ SOCKET Will eventually send data to a socket output, where NAME
+ would then be the IP address of the machine the data should be
+ sent to. DON'T USE THIS YET!
+ TABULAR Columnar data. NOT IMPLEMENTED YET!
+ TERMINAL Output to terminal. NOT IMPLEMENTED YET!
+ NONE Specifies to do nothing. THis setting makes it easy to turn on and
+ off the data output without having to mess with anything else.
+
+ The arguments that can be supplied, currently, are
+
+ RATE_IN_HZ An integer rate in times-per-second that the data is output. This
+ value may not be *exactly* what you want, due to the dependence
+ on dt, the cycle rate for the FDM.
+
+ The following parameters tell which subsystems of data to output:
+
+ SIMULATION ON|OFF
+ ATMOSPHERE ON|OFF
+ MASSPROPS ON|OFF
+ AEROSURFACES ON|OFF
+ RATES ON|OFF
+ VELOCITIES ON|OFF
+ FORCES ON|OFF
+ MOMENTS ON|OFF
+ POSITION ON|OFF
+ COEFFICIENTS ON|OFF
+ GROUND_REACTIONS ON|OFF
+ FCS ON|OFF
+ PROPULSION ON|OFF
+
+ NOTE that Time is always output with the data.
+ @version $Id$
+ */
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CLASS DECLARATION
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
class FGOutput : public FGModel
{
public:
/** Subsystem: Atmosphere (= 64) */ ssAtmosphere = 64,
/** Subsystem: Mass Properties (= 128) */ ssMassProps = 128,
/** Subsystem: Coefficients (= 256) */ ssCoefficients = 256,
- /** Subsystem: Position (= 512) */ ssPosition = 512,
+ /** Subsystem: Propagate (= 512) */ ssPropagate = 512,
/** Subsystem: Ground Reactions (= 1024) */ ssGroundReactions = 1024,
/** Subsystem: FCS (= 2048) */ ssFCS = 2048,
/** Subsystem: Propulsion (= 4096) */ ssPropulsion = 4096
private:
bool sFirstPass, dFirstPass, enabled;
int SubSystems;
- string Filename;
+ string Filename, outputInFileName, delimeter;
enum {otNone, otCSV, otTab, otSocket, otTerminal, otUnknown} Type;
ofstream datafile;
FGfdmSocket* socket;
+ vector <FGPropertyManager*> OutputProperties;
void Debug(int from);
};
}