1
0
Fork 0

Add support for sending out a requested aircraft weight to an external FDM

via the "pipe" interface.
This commit is contained in:
curt 2003-11-10 21:56:32 +00:00
parent 41920268a6
commit 23c1057a19

View file

@ -1,4 +1,4 @@
// ExternalPipe.hxx -- a "pipe" interface to an external flight dynamics model // ExternalPipe.cxx -- a "pipe" interface to an external flight dynamics model
// //
// Written by Curtis Olson, started March 2003. // Written by Curtis Olson, started March 2003.
// //
@ -117,6 +117,7 @@ void FGExternalPipe::init() {
double ground = fgGetDouble( "/environment/ground-elevation-m" ); double ground = fgGetDouble( "/environment/ground-elevation-m" );
double heading = fgGetDouble("/sim/presets/heading-deg"); double heading = fgGetDouble("/sim/presets/heading-deg");
double speed = fgGetDouble( "/sim/presets/airspeed-kt" ); double speed = fgGetDouble( "/sim/presets/airspeed-kt" );
double weight = fgGetDouble( "/sim/aircraft-weight-lbs" );
#ifdef HAVE_MKFIFO #ifdef HAVE_MKFIFO
@ -159,6 +160,14 @@ void FGExternalPipe::init() {
SG_LOG( SG_IO, SG_ALERT, "Write error to named pipe: " << fifo_name_1 ); SG_LOG( SG_IO, SG_ALERT, "Write error to named pipe: " << fifo_name_1 );
} }
if ( weight > 1000.0 ) {
sprintf( cmd, "1aircraft-weight-lbs=%.2f", weight );
result = write( pd1, cmd, strlen(cmd) );
if ( result == -1 ) {
SG_LOG( SG_IO, SG_ALERT, "Write error to named pipe: " << fifo_name_1 );
}
}
SG_LOG( SG_IO, SG_INFO, "before sending reset command." ); SG_LOG( SG_IO, SG_INFO, "before sending reset command." );
if( fgGetBool("/sim/presets/onground") ) { if( fgGetBool("/sim/presets/onground") ) {
@ -190,6 +199,18 @@ void FGExternalPipe::update( double dt ) {
int iterations = _calc_multiloop(dt); int iterations = _calc_multiloop(dt);
double weight = fgGetDouble( "/sim/aircraft-weight-lbs" );
static double last_weight = 0.0;
if ( fabs( weight - last_weight ) > 0.01 ) {
char cmd[256];
sprintf( cmd, "1aircraft-weight-lbs=%.2f", weight );
result = write( pd1, cmd, strlen(cmd) );
if ( result == -1 ) {
SG_LOG( SG_IO, SG_ALERT, "Write error to named pipe: " << fifo_name_1 );
}
}
last_weight = weight;
// Send control positions to remote fdm // Send control positions to remote fdm
length = sizeof(ctrls); length = sizeof(ctrls);
FGProps2NetCtrls( &ctrls, true, false ); FGProps2NetCtrls( &ctrls, true, false );
@ -205,6 +226,7 @@ void FGExternalPipe::update( double dt ) {
<< fifo_name_1 ); << fifo_name_1 );
} }
// Read fdm values
length = sizeof(fdm); length = sizeof(fdm);
result = read( pd2, (char *)(& fdm), length ); result = read( pd2, (char *)(& fdm), length );
if ( result == -1 ) { if ( result == -1 ) {