+ node = fgGetNode("/controls/switches", true);
+ net->master_bat = node->getChild("master-bat")->getBoolValue();
+ net->master_alt = node->getChild("master-alt")->getBoolValue();
+ net->master_avionics = node->getChild("master-avionics")->getBoolValue();
+
+ net->wind_speed_kt = fgGetDouble("/environment/wind-speed-kt");
+ net->wind_dir_deg = fgGetDouble("/environment/wind-from-heading-deg");
+
+ // cur_fdm_state->get_ground_elev_ft() is what we want ... this
+ // reports the altitude of the aircraft.
+ // "/environment/ground-elevation-m" reports the ground elevation
+ // of the current view point which could change substantially if
+ // the user is switching views.
+ net->hground = cur_fdm_state->get_ground_elev_ft() * SG_FEET_TO_METER;
+ net->magvar = fgGetDouble("/environment/magnetic-variation-deg");
+ net->speedup = fgGetInt("/sim/speed-up");
+ net->freeze = 0;
+ if ( fgGetBool("/sim/freeze/master") ) {
+ net->freeze |= 0x01;
+ }
+ if ( fgGetBool("/sim/freeze/position") ) {
+ net->freeze |= 0x02;
+ }
+ if ( fgGetBool("/sim/freeze/fuel") ) {
+ net->freeze |= 0x04;
+ }
+
+ // convert to network byte order
+ net->version = htonl(net->version);
+ htond(net->aileron);
+ htond(net->elevator);
+ htond(net->elevator_trim);
+ htond(net->rudder);
+ htond(net->flaps);
+ net->flaps_power = htonl(net->flaps_power);
+ for ( i = 0; i < FGNetCtrls::FG_MAX_ENGINES; ++i ) {
+ htond(net->throttle[i]);
+ htond(net->mixture[i]);
+ net->fuel_pump_power[i] = htonl(net->fuel_pump_power[i]);
+ htond(net->prop_advance[i]);
+ net->magnetos[i] = htonl(net->magnetos[i]);
+ net->starter_power[i] = htonl(net->starter_power[i]);
+ }
+ net->num_engines = htonl(net->num_engines);
+ for ( i = 0; i < FGNetCtrls::FG_MAX_TANKS; ++i ) {
+ net->fuel_selector[i] = htonl(net->fuel_selector[i]);
+ }
+ net->num_tanks = htonl(net->num_tanks);
+ for ( i = 0; i < FGNetCtrls::FG_MAX_WHEELS; ++i ) {
+ htond(net->brake[i]);
+ }
+ net->num_wheels = htonl(net->num_wheels);
+ net->gear_handle = htonl(net->gear_handle);
+ net->master_bat = htonl(net->master_bat);
+ net->master_alt = htonl(net->master_alt);
+ net->master_avionics = htonl(net->master_avionics);
+ htond(net->wind_speed_kt);
+ htond(net->wind_dir_deg);
+ htond(net->hground);
+ htond(net->magvar);
+ net->speedup = htonl(net->speedup);
+ net->freeze = htonl(net->freeze);