X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNetwork%2Fnative_fdm.cxx;h=4fa6275cedd7937179b35feaf855ae69576d0841;hb=e653ed4598dfcfea634470d16b49b97fc87e1840;hp=939c93dda248435272b916c2c9820d87f7601809;hpb=ec036a7be8ce9838aa5b296fb1bd8c788fed2faa;p=flightgear.git diff --git a/src/Network/native_fdm.cxx b/src/Network/native_fdm.cxx index 939c93dda..4fa6275ce 100644 --- a/src/Network/native_fdm.cxx +++ b/src/Network/native_fdm.cxx @@ -2,7 +2,7 @@ // // Written by Curtis Olson, started September 2001. // -// Copyright (C) 2001 Curtis L. Olson - curt@flightgear.org +// Copyright (C) 2001 Curtis L. Olson - http://www.flightgear.org/~curt // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as @@ -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$ @@ -39,8 +39,10 @@ #include "native_fdm.hxx" // FreeBSD works better with this included last ... (?) -#if defined(WIN32) && !defined(__CYGWIN__) +#if defined( _MSC_VER ) # include +#elif defined( __MINGW32__ ) +# include #else # include // htonl() ntohl() #endif @@ -120,7 +122,7 @@ bool FGNativeFDM::open() { void FGProps2NetFDM( FGNetFDM *net, bool net_byte_order ) { - int i; + unsigned int i; // Version sanity checking net->version = FG_NET_FDM_VERSION; @@ -171,9 +173,12 @@ void FGProps2NetFDM( FGNetFDM *net, bool net_byte_order ) { } net->rpm[i] = node->getDoubleValue( "rpm" ); net->fuel_flow[i] = node->getDoubleValue( "fuel-flow-gph" ); + net->fuel_px[i] = node->getDoubleValue( "fuel-px-psi" ); net->egt[i] = node->getDoubleValue( "egt-degf" ); // cout << "egt = " << aero->EGT << endl; + net->cht[i] = node->getDoubleValue( "cht-degf" ); net->mp_osi[i] = node->getDoubleValue( "mp-osi" ); + net->tit[i] = node->getDoubleValue( "tit" ); net->oil_temp[i] = node->getDoubleValue( "oil-temperature-degf" ); net->oil_px[i] = node->getDoubleValue( "oil-pressure-psi" ); } @@ -189,7 +194,7 @@ void FGProps2NetFDM( FGNetFDM *net, bool net_byte_order ) { net->num_wheels = FGNetFDM::FG_MAX_WHEELS; for (i = 0; i < net->num_wheels; ++i ) { SGPropertyNode *node = fgGetNode("/gear/gear", i, true); - net->wow[i] = node->getDoubleValue("wow"); + net->wow[i] = node->getIntValue("wow"); net->gear_pos[i] = node->getDoubleValue("position-norm"); net->gear_steer[i] = node->getDoubleValue("steering-norm"); net->gear_compression[i] = node->getDoubleValue("compression-norm"); @@ -205,11 +210,13 @@ void FGProps2NetFDM( FGNetFDM *net, bool net_byte_order ) { net->elevator = node->getDoubleValue( "elevator-pos-norm" ); net->elevator_trim_tab = node->getDoubleValue( "elevator-trim-tab-pos-norm" ); - net->flaps = node->getDoubleValue( "flap-pos-norm" ); + // FIXME: CLO 10/28/04 - This really should be separated out into 2 values + net->left_flap = node->getDoubleValue( "flap-pos-norm" ); + net->right_flap = node->getDoubleValue( "flap-pos-norm" ); net->left_aileron = node->getDoubleValue( "left-aileron-pos-norm" ); net->right_aileron = node->getDoubleValue( "right-aileron-pos-norm" ); net->rudder = node->getDoubleValue( "rudder-pos-norm" ); - net->rudder = node->getDoubleValue( "nose-wheel-pos-norm" ); + net->nose_wheel = node->getDoubleValue( "nose-wheel-pos-norm" ); net->speedbrake = node->getDoubleValue( "speedbrake-pos-norm" ); net->spoilers = node->getDoubleValue( "spoilers-pos-norm" ); @@ -250,8 +257,11 @@ void FGProps2NetFDM( FGNetFDM *net, bool net_byte_order ) { net->eng_state[i] = htonl(net->eng_state[i]); htonf(net->rpm[i]); htonf(net->fuel_flow[i]); + htonf(net->fuel_px[i]); htonf(net->egt[i]); + htonf(net->cht[i]); htonf(net->mp_osi[i]); + htonf(net->tit[i]); htonf(net->oil_temp[i]); htonf(net->oil_px[i]); } @@ -276,7 +286,8 @@ void FGProps2NetFDM( FGNetFDM *net, bool net_byte_order ) { htonf(net->elevator); htonf(net->elevator_trim_tab); - htonf(net->flaps); + htonf(net->left_flap); + htonf(net->right_flap); htonf(net->left_aileron); htonf(net->right_aileron); htonf(net->rudder); @@ -288,7 +299,7 @@ void FGProps2NetFDM( FGNetFDM *net, bool net_byte_order ) { void FGNetFDM2Props( FGNetFDM *net, bool net_byte_order ) { - int i; + unsigned int i; if ( net_byte_order ) { // Convert to the net buffer from network format @@ -328,8 +339,11 @@ void FGNetFDM2Props( FGNetFDM *net, bool net_byte_order ) { net->eng_state[i] = htonl(net->eng_state[i]); htonf(net->rpm[i]); htonf(net->fuel_flow[i]); + htonf(net->fuel_px[i]); htonf(net->egt[i]); + htonf(net->cht[i]); htonf(net->mp_osi[i]); + htonf(net->tit[i]); htonf(net->oil_temp[i]); htonf(net->oil_px[i]); } @@ -347,13 +361,14 @@ void FGNetFDM2Props( FGNetFDM *net, bool net_byte_order ) { htonf(net->gear_compression[i]); } - net->cur_time = ntohl(net->cur_time); + net->cur_time = htonl(net->cur_time); net->warp = ntohl(net->warp); htonf(net->visibility); htonf(net->elevator); htonf(net->elevator_trim_tab); - htonf(net->flaps); + htonf(net->left_flap); + htonf(net->right_flap); htonf(net->left_aileron); htonf(net->right_aileron); htonf(net->rudder); @@ -373,8 +388,8 @@ void FGNetFDM2Props( FGNetFDM *net, bool net_byte_order ) { if ( net->agl > -9000 ) { cur_fdm_state->_set_Altitude_AGL( net->agl * SG_METER_TO_FEET ); } else { - double agl_m - = net->altitude - globals->get_scenery()->get_cur_elev(); + double agl_m = net->altitude + - cur_fdm_state->get_Runway_altitude_m(); cur_fdm_state->_set_Altitude_AGL( agl_m * SG_METER_TO_FEET ); } cur_fdm_state->_set_Euler_Angles( net->phi, @@ -423,8 +438,11 @@ void FGNetFDM2Props( FGNetFDM *net, bool net_byte_order ) { node->setDoubleValue( "rpm", net->rpm[i] ); node->setDoubleValue( "fuel-flow-gph", net->fuel_flow[i] ); + node->setDoubleValue( "fuel-px-psi", net->fuel_px[i] ); node->setDoubleValue( "egt-degf", net->egt[i] ); + node->setDoubleValue( "cht-degf", net->cht[i] ); node->setDoubleValue( "mp-osi", net->mp_osi[i] ); + node->setDoubleValue( "tit", net->tit[i] ); node->setDoubleValue( "oil-temperature-degf", net->oil_temp[i] ); node->setDoubleValue( "oil-pressure-psi", net->oil_px[i] ); } @@ -457,7 +475,10 @@ void FGNetFDM2Props( FGNetFDM *net, bool net_byte_order ) { node->setDoubleValue("elevator-pos-norm", net->elevator); node->setDoubleValue("elevator-trim-tab-pos-norm", net->elevator_trim_tab); - node->setDoubleValue("flap-pos-norm", net->flaps); + // FIXME: CLO 10/28/04 - This really should be separated out + // into 2 values + node->setDoubleValue("flap-pos-norm", net->left_flap); + node->setDoubleValue("flap-pos-norm", net->right_flap); node->setDoubleValue("left-aileron-pos-norm", net->left_aileron); node->setDoubleValue("right-aileron-pos-norm", net->right_aileron); node->setDoubleValue("rudder-pos-norm", net->rudder);