X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FExternalPipe%2FExternalPipe.cxx;h=8f33df584c36c0b719a94b7b8bd333aa9c519a00;hb=0824fe68f3fec838c3d0b8500966560c7397047e;hp=a94525448ac30bec378035050ab5d4a6df25671b;hpb=86249209b9e5738bdf61fee99837a660fff72948;p=flightgear.git diff --git a/src/FDM/ExternalPipe/ExternalPipe.cxx b/src/FDM/ExternalPipe/ExternalPipe.cxx index a94525448..8f33df584 100644 --- a/src/FDM/ExternalPipe/ExternalPipe.cxx +++ b/src/FDM/ExternalPipe/ExternalPipe.cxx @@ -16,7 +16,7 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ @@ -32,6 +32,7 @@ #endif #include // FILE*, fopen(), fread(), fwrite(), et. al. +#include // for cout, endl #include #include // endian tests @@ -44,6 +45,8 @@ #include "ExternalPipe.hxx" +using std::cout; +using std::endl; static const int MAX_BUF = 32768; @@ -145,13 +148,15 @@ static int write_binary( char cmd_type, FILE *pd, char *cmd, int len ) { memcpy( buf + 3, cmd, len ); if ( cmd_type == '1' ) { - cout << "writing '"; - for ( int i = 0; i < len + 3; ++i ) { + cout << "writing "; + cout << (int)hi << " "; + cout << (int)lo << " '"; + for ( int i = 2; i < len + 3; ++i ) { cout << buf[i]; } cout << "' (" << cmd << ")" << endl; } else if ( cmd_type == '2' ) { - cout << "writing controls packet" << endl; + // cout << "writing controls packet" << endl; } else { cout << "writing unknown command?" << endl; } @@ -230,7 +235,7 @@ void FGExternalPipe::init_binary() { double lon = fgGetDouble( "/sim/presets/longitude-deg" ); double lat = fgGetDouble( "/sim/presets/latitude-deg" ); double alt = fgGetDouble( "/sim/presets/altitude-ft" ); - double ground = fgGetDouble( "/environment/ground-elevation-m" ); + double ground = get_Runway_altitude_m(); double heading = fgGetDouble("/sim/presets/heading-deg"); double speed = fgGetDouble( "/sim/presets/airspeed-kt" ); double weight = fgGetDouble( "/sim/aircraft-weight-lbs" ); @@ -293,7 +298,7 @@ void FGExternalPipe::init_property() { double lon = fgGetDouble( "/sim/presets/longitude-deg" ); double lat = fgGetDouble( "/sim/presets/latitude-deg" ); double alt = fgGetDouble( "/sim/presets/altitude-ft" ); - double ground = fgGetDouble( "/environment/ground-elevation-m" ); + double ground = get_Runway_altitude_m(); double heading = fgGetDouble("/sim/presets/heading-deg"); double speed = fgGetDouble( "/sim/presets/airspeed-kt" ); double weight = fgGetDouble( "/sim/aircraft-weight-lbs" ); @@ -401,23 +406,23 @@ void FGExternalPipe::update_binary( double dt ) { // cout << "iterations = " << iterations << endl; ptr += sizeof(int); memcpy( ptr, (char *)(&ctrls), length ); - cout << "writing control structure, size = " - << length + sizeof(int) << endl; + // cout << "writing control structure, size = " + // << length + sizeof(int) << endl; result = write_binary( '2', pd1, buf, length + sizeof(int) ); fflush( pd1 ); // Read fdm values length = sizeof(fdm); - cout << "about to read fdm data from remote fdm." << endl; + // cout << "about to read fdm data from remote fdm." << endl; result = fread( (char *)(& fdm), length, 1, pd2 ); - if ( result != length ) { + if ( result != 1 ) { SG_LOG( SG_IO, SG_ALERT, "Read error from named pipe: " - << fifo_name_2 ); + << fifo_name_2 << " expected 1 item, but got " << result ); } else { - cout << " read successful." << endl; + // cout << " read successful." << endl; + FGNetFDM2Props( &fdm, false ); } - FGNetFDM2Props( &fdm, false ); #endif } @@ -431,7 +436,7 @@ static void process_set_command( const string_list &tokens ) { cur_fdm_state->_updateGeodeticPosition( lat_rad, lon_rad, alt_m * SG_METER_TO_FEET ); - double agl_m = alt_m - globals->get_scenery()->get_cur_elev(); + double agl_m = alt_m - cur_fdm_state->get_Runway_altitude_m(); cur_fdm_state->_set_Altitude_AGL( agl_m * SG_METER_TO_FEET ); } else if ( tokens[1] == "euler_angles" ) { double phi_rad = atof( tokens[2].c_str() ); @@ -520,6 +525,7 @@ void FGExternalPipe::update_property( double dt ) { cout << "Error reading data" << endl; } else { // cout << " read " << strlen(cmd) << " bytes" << endl; + // cout << cmd << endl; } // chop trailing newline @@ -538,7 +544,7 @@ void FGExternalPipe::update_property( double dt ) { // node doesn't exist so create with requested type node = fgGetNode( tokens[1].c_str(), true ); if ( tokens[2] == "bool" ) { - node->setBoolValue(true); + node->setBoolValue(false); } else if ( tokens[2] == "int" ) { node->setIntValue(0); } else if ( tokens[2] == "double" ) {