#include <simgear/debug/logstream.hxx>
#include <simgear/io/iochannel.hxx>
#include <simgear/math/sg_types.hxx>
-#include <simgear/misc/props.hxx>
#include <simgear/misc/sg_path.hxx>
+#include <simgear/props/props.hxx>
#include <Main/fg_props.hxx>
#include <Main/globals.hxx>
}
}
result = obs[1] - obs[2];
- if ( abs(result) > 200 ) {
+ if ( abs(result) > 400 ) {
// ignore
result = 0;
}
static double instr_pot_filter( double ave, double val ) {
- if ( fabs(ave - val) < 200 || fabs(val) < fabs(ave) ) {
+ if ( fabs(ave - val) < 400 || fabs(val) < fabs(ave) ) {
return 0.5 * ave + 0.5 * val;
} else {
return ave;
// elevator
tmp = -scale( elevator_center->getIntValue(), elevator_min->getIntValue(),
elevator_max->getIntValue(), analog_in_data[5] );
- fgSetFloat( "/controls/flight/elevator", tmp );
+ fgSetFloat( "/controls/flight/elevator", tmp * 0.5 );
// cout << "trim = " << analog_in_data[4] << " = " << tmp;
// elevator trim
fgSetFloat( "/controls/engines/engine[1]/throttle", tmp );
// cout << "throttle = " << tmp << endl;
- // rudder
- tmp = scale( rudder_center->getIntValue(), rudder_min->getIntValue(),
- rudder_max->getIntValue(), analog_in_data[10] );
- fgSetFloat( "/controls/flight/rudder", -tmp );
-
- // toe brakes
- tmp = scale( brake_left_min->getIntValue(), brake_left_max->getIntValue(),
- analog_in_data[20] );
- fgSetFloat( "/controls/gear/wheel[0]/brake", tmp );
- tmp = scale( brake_right_min->getIntValue(), brake_right_max->getIntValue(),
- analog_in_data[21] );
- fgSetFloat( "/controls/gear/wheel[1]/brake", tmp );
+ if ( use_rudder ) {
+ // rudder
+ tmp = scale( rudder_center->getIntValue(), rudder_min->getIntValue(),
+ rudder_max->getIntValue(), analog_in_data[10] );
+ fgSetFloat( "/controls/flight/rudder", -tmp );
+
+ // toe brakes
+ tmp = scale( brake_left_min->getIntValue(),
+ brake_left_max->getIntValue(),
+ analog_in_data[20] );
+ fgSetFloat( "/controls/gear/wheel[0]/brake", tmp );
+ tmp = scale( brake_right_min->getIntValue(),
+ brake_right_max->getIntValue(),
+ analog_in_data[21] );
+ fgSetFloat( "/controls/gear/wheel[1]/brake", tmp );
+ }
// nav1 volume
tmp = (float)analog_in_data[25] / 1024.0f;
diff4_ave = instr_pot_filter( diff4_ave, diff4 );
diff5_ave = instr_pot_filter( diff5_ave, diff5 );
- tmp = alt_press->getDoubleValue() + (diff1_ave * (0.25/880.0) );
+ tmp = alt_press->getDoubleValue() + (diff1_ave * (0.25/888.0) );
if ( tmp < 27.9 ) { tmp = 27.9; }
if ( tmp > 31.4 ) { tmp = 31.4; }
fgSetFloat( "/instrumentation/altimeter/setting-inhg", tmp );
- tmp = ati_bird->getDoubleValue() + (diff2_ave * (20.0/880.0) );
+ tmp = ati_bird->getDoubleValue() + (diff2_ave * (20.0/888.0) );
if ( tmp < -10.0 ) { tmp = -10.0; }
if ( tmp > 10.0 ) { tmp = 10.0; }
fgSetFloat( "/instrumentation/attitude-indicator/horizon-offset-deg", tmp );
- tmp = nav1_obs->getDoubleValue() + (diff3_ave * (72.0/880.0) );
+ tmp = nav1_obs->getDoubleValue() + (diff3_ave * (72.0/888.0) );
while ( tmp >= 360.0 ) { tmp -= 360.0; }
while ( tmp < 0.0 ) { tmp += 360.0; }
// cout << " obs = " << tmp << endl;
fgSetFloat( "/radios/nav[0]/radials/selected-deg", tmp );
- tmp = nav2_obs->getDoubleValue() + (diff4_ave * (72.0/880.0) );
+ tmp = nav2_obs->getDoubleValue() + (diff4_ave * (72.0/888.0) );
while ( tmp >= 360.0 ) { tmp -= 360.0; }
while ( tmp < 0.0 ) { tmp += 360.0; }
// cout << " obs = " << tmp << endl;
fgSetFloat( "/radios/nav[1]/radials/selected-deg", tmp );
- tmp = adf_hdg->getDoubleValue() + (diff5_ave * (72.0/880.0) );
+ tmp = adf_hdg->getDoubleValue() + (diff5_ave * (72.0/888.0) );
while ( tmp >= 360.0 ) { tmp -= 360.0; }
while ( tmp < 0.0 ) { tmp += 360.0; }
// cout << " obs = " << tmp << endl;
// display turns on the decimal point
} else {
// out of range
- for ( i = 0; i < 6; ++i ) {
- radio_display_data[i] = 0xee;
- }
+ radio_display_data[0] = 0xbb;
+ radio_display_data[1] = 0xfb;
+ radio_display_data[2] = 0xbb;
+ radio_display_data[3] = 0xfb;
+ radio_display_data[4] = 0xbb;
+ radio_display_data[5] = 0x0b;
}
} else {
// blank dem display
mag2 = mag1;
mag1 = magnetos;
if ( mag1 == mag2 && mag2 == mag3 ) {
- fgSetInt( "/controls/engines/engine[0]/magneto", magnetos );
+ fgSetInt( "/controls/engines/engine[0]/magnetos", magnetos );
}
static bool start1, start2, start3;
start3 = start2;
fuel2 = fuel1;
fuel1 = fuel;
if ( fuel1 == fuel2 && fuel2 == fuel3 ) {
- fgSetBool( "/controls/fuel-selector[0]", (fuel & 0x01) > 0 );
- fgSetBool( "/controls/fuel-selector[1]", (fuel & 0x02) > 0 );
+ fgSetBool( "/controls/fuel/tank[0]/fuel-selector", (fuel & 0x01) > 0 );
+ fgSetBool( "/controls/fuel/tank[1]/fuel-selector", (fuel & 0x02) > 0 );
}
// circuit breakers