X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FExternalNet.cxx;h=49e432096240de1f3504a8b5c7f2a9fdc1204a5c;hb=ee98995d30e75cda88c9866f3cb6a761fda7d078;hp=97374d84e761dad46cc3b3e9be7325630c6a21b6;hpb=5a849b66e855a643c600ad4cfcce1f82e0fcdeb3;p=flightgear.git diff --git a/src/FDM/ExternalNet.cxx b/src/FDM/ExternalNet.cxx index 97374d84e..49e432096 100644 --- a/src/FDM/ExternalNet.cxx +++ b/src/FDM/ExternalNet.cxx @@ -78,7 +78,14 @@ static void global2raw( FGRawCtrls *raw ) { raw->mixture[i] = node->getDoubleValue( "mixture", 0.0 ); raw->prop_advance[i] = node->getDoubleValue( "propeller-pitch", 0.0 ); raw->magnetos[i] = node->getIntValue( "magnetos", 0 ); + if ( i == 0 ) { + // cout << "Magnetos -> " << node->getIntValue( "magnetos", 0 ); + } raw->starter[i] = node->getBoolValue( "starter", false ); + if ( i == 0 ) { + // cout << " Starter -> " << node->getIntValue( "stater", false ) + // << endl; + } } for ( i = 0; i < FGRawCtrls::FG_MAX_WHEELS; ++i ) { raw->brake[i] = node->getDoubleValue( "brakes", 0.0 ); @@ -149,8 +156,8 @@ static void net2global( FGNetFDM *net ) { } net->num_wheels = htonl(net->num_wheels); - // I don't need to convert the Wow flags, since they are one byte in size + htond(net->flap_deflection); net->cur_time = ntohl(net->cur_time); net->warp = ntohl(net->warp); @@ -213,6 +220,17 @@ static void net2global( FGNetFDM *net ) { node->setDoubleValue("wow", net->wow[i] ); } + fgSetDouble("/surface-positions/flap-pos-norm", net->flap_deflection); + SGPropertyNode * node = fgGetNode("/controls", true); + fgSetDouble("/surface-positions/elevator-pos-norm", + node->getDoubleValue( "elevator" )); + fgSetDouble("/surface-positions/rudder-pos-norm", + node->getDoubleValue( "rudder" )); + fgSetDouble("/surface-positions/left-aileron-pos-norm", + node->getDoubleValue( "aileron" )); + fgSetDouble("/surface-positions/right-aileron-pos-norm", + -node->getDoubleValue( "aileron" )); + /* these are ignored for now ... */ /* if ( net->cur_time ) { @@ -327,9 +345,7 @@ void FGExternalNet::init() { } -// Run an iteration of the EOM. This is a NOP here because the flight -// model values are getting filled in elsewhere (most likely from some -// external source.) +// Run an iteration of the EOM. void FGExternalNet::update( double dt ) { int length; int result; @@ -346,7 +362,7 @@ void FGExternalNet::update( double dt ) { // Read next set of FDM data (blocking enabled to maintain 'sync') length = sizeof(fdm); - if ( (result = data_server.recv( (char *)(& fdm), length, 0)) >= 0 ) { + while ( (result = data_server.recv( (char *)(& fdm), length, 0)) >= 0 ) { SG_LOG( SG_IO, SG_DEBUG, "Success reading data." ); net2global( &fdm ); }