#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>
// Connect up to property values
/////////////////////////////////////////////////////////////////////
- mag_compass = fgGetNode( "/steam/mag-compass-deg", true );
+ mag_compass = fgGetNode( "/instrumentation/magnetic-compass/indicated-heading-deg", true );
- dme_min = fgGetNode( "/radios/dme/ete-min", true );
- dme_kt = fgGetNode( "/radios/dme/speed-kt", true );
- dme_nm = fgGetNode( "/radios/dme/distance-nm", true );
+ dme_min = fgGetNode( "/instrumentation/dme/indicated-time-min", true );
+ dme_kt = fgGetNode( "/instrumentation/dme/indicated-ground-speed-kt",
+ true );
+ dme_nm = fgGetNode( "/instrumentation/dme/indicated-distance-nm", true );
+ dme_in_range = fgGetNode( "/instrumentation/dme/in-range", true );
adf_bus_power = fgGetNode( "/systems/electrical/outputs/adf", true );
dme_bus_power = fgGetNode( "/systems/electrical/outputs/dme", true );
xpdr_sby_ann = fgGetNode( "/radios/kt-70/annunciators/sby", true );
xpdr_reply_ann = fgGetNode( "/radios/kt-70/annunciators/reply", true );
+ ati_bird
+ = fgGetNode( "/instrumentation/attitude-indicator/horizon-offset-deg",
+ true );
+ alt_press = fgGetNode( "/instrumentation/altimeter/setting-inhg", true );
+ adf_hdg = fgGetNode( "/radios/kr-87/inputs/rotation-deg", true );
+
elevator_center = fgGetNode( "/input/atc610x/elevator/center", true );
elevator_min = fgGetNode( "/input/atc610x/elevator/min", true );
elevator_max = fgGetNode( "/input/atc610x/elevator/max", true );
rudder_min = fgGetNode( "/input/atc610x/rudder/min", true );
rudder_max = fgGetNode( "/input/atc610x/rudder/max", true );
+ brake_left_min = fgGetNode( "/input/atc610x/brake-left/min", true );
+ brake_left_max = fgGetNode( "/input/atc610x/brake-left/max", true );
+
+ brake_right_min = fgGetNode( "/input/atc610x/brake-right/min", true );
+ brake_right_max = fgGetNode( "/input/atc610x/brake-right/max", true );
+
throttle_min = fgGetNode( "/input/atc610x/throttle/min", true );
throttle_max = fgGetNode( "/input/atc610x/throttle/max", true );
}
+static int tony_magic( int raw, int obs[3] ) {
+ int result = 0;
+
+ obs[0] = raw;
+
+ if ( obs[1] < 30 ) {
+ if ( obs[2] >= 68 && obs[2] < 480 ) {
+ result = -6;
+ } else if ( obs[2] >= 480 ) {
+ result = 6;
+ }
+ obs[2] = obs[1];
+ obs[1] = obs[0];
+ } else if ( obs[1] < 68 ) {
+ // do nothing
+ obs[1] = obs[0];
+ } else if ( obs[2] < 30 ) {
+ if ( obs[1] >= 68 && obs[1] < 480 ) {
+ result = 6;
+ obs[2] = obs[1];
+ obs[1] = obs[0];
+ } else if ( obs[1] >= 480 ) {
+ result = -6;
+ if ( obs[0] < obs[1] ) {
+ obs[2] = obs[1];
+ obs[1] = obs[0];
+ } else {
+ obs[2] = obs[0];
+ obs[1] = obs[0];
+ }
+ }
+ } else if ( obs[1] > 980 ) {
+ if ( obs[2] <= 956 && obs[2] > 480 ) {
+ result = 6;
+ } else if ( obs[2] <= 480 ) {
+ result = -6;
+ }
+ obs[2] = obs[1];
+ obs[1] = obs[0];
+ } else if ( obs[1] > 956 ) {
+ // do nothing
+ obs[1] = obs[0];
+ } else if ( obs[2] > 980 ) {
+ if ( obs[1] <= 956 && obs[1] > 480 ) {
+ result = -6;
+ obs[2] = obs[1];
+ obs[1] = obs[0];
+ } else if ( obs[1] <= 480 ) {
+ result = 6;
+ if ( obs[0] > obs[1] ) {
+ obs[2] = obs[1];
+ obs[1] = obs[0];
+ } else {
+ obs[2] = obs[0];
+ obs[1] = obs[0];
+ }
+ }
+ } else {
+ if ( obs[1] < 480 && obs[2] > 480 ) {
+ // crossed gap going up
+ if ( obs[0] < obs[1] ) {
+ // caught a bogus intermediate value coming out of the gap
+ obs[1] = obs[0];
+ }
+ } else if ( obs[1] > 480 && obs[2] < 480 ) {
+ // crossed gap going down
+ if ( obs[0] > obs[1] ) {
+ // caught a bogus intermediate value coming out of the gap
+ obs[1] = obs[0];
+ }
+ } else if ( obs[0] > 480 && obs[1] < 480 && obs[2] < 480 ) {
+ // crossed the gap going down
+ if ( obs[1] > obs[2] ) {
+ // caught a bogus intermediate value coming out of the gap
+ obs[1] = obs[2];
+ }
+ } else if ( obs[0] < 480 && obs[1] > 480 && obs[2] > 480 ) {
+ // crossed the gap going up
+ if ( obs[1] < obs[2] ) {
+ // caught a bogus intermediate value coming out of the gap
+ obs[1] = obs[2];
+ }
+ }
+ result = obs[1] - obs[2];
+ if ( abs(result) > 400 ) {
+ // ignore
+ result = 0;
+ }
+ obs[2] = obs[1];
+ obs[1] = obs[0];
+ }
+
+ // cout << " result = " << result << endl;
+ if ( result < -500 ) { result += 1024; }
+ if ( result > 500 ) { result -= 1024; }
+
+ return result;
+}
+
+
+static double instr_pot_filter( double ave, double val ) {
+ if ( fabs(ave - val) < 400 || fabs(val) < fabs(ave) ) {
+ return 0.5 * ave + 0.5 * val;
+ } else {
+ return ave;
+ }
+}
+
+
bool FGATC610x::do_analog_in() {
// Read raw data in byte form
ATC610xReadAnalogInputs( analog_in_fd, analog_in_bytes );
// aileron
tmp = scale( ailerons_center->getIntValue(), ailerons_min->getIntValue(),
ailerons_max->getIntValue(), analog_in_data[0] );
- fgSetFloat( "/controls/aileron", tmp );
+ fgSetFloat( "/controls/flight/aileron", tmp );
// cout << "aileron = " << analog_in_data[0] << " = " << tmp;
-
// elevator
tmp = -scale( elevator_center->getIntValue(), elevator_min->getIntValue(),
elevator_max->getIntValue(), analog_in_data[5] );
- fgSetFloat( "/controls/elevator", tmp );
+ fgSetFloat( "/controls/flight/elevator", tmp * 0.5 );
// cout << "trim = " << analog_in_data[4] << " = " << tmp;
// elevator trim
tmp = scale( trim_center->getIntValue(), trim_min->getIntValue(),
trim_max->getIntValue(), analog_in_data[4] );
- fgSetFloat( "/controls/elevator-trim", tmp );
+ fgSetFloat( "/controls/flight/elevator-trim", tmp );
// cout << " elev = " << analog_in_data[5] << " = " << tmp << endl;
// mixture
tmp = scale( mixture_min->getIntValue(), mixture_max->getIntValue(),
analog_in_data[6] );
- fgSetFloat( "/controls/mixture[0]", tmp );
- fgSetFloat( "/controls/mixture[1]", tmp );
+ fgSetFloat( "/controls/engines/engine[0]/mixture", tmp );
+ fgSetFloat( "/controls/engines/engine[1]/mixture", tmp );
// throttle
tmp = scale( throttle_min->getIntValue(), throttle_max->getIntValue(),
analog_in_data[8] );
- fgSetFloat( "/controls/throttle[0]", tmp );
- fgSetFloat( "/controls/throttle[1]", tmp );
+ fgSetFloat( "/controls/engines/engine[0]/throttle", tmp );
+ 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/rudder", -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;
tmp = (float)analog_in_data[26] / 1024.0f;
fgSetFloat( "/radios/kr-87/inputs/volume", tmp );
-#define FG_SECOND_TRY
-
- // nav1 obs tuner
- static int last_obs1 = analog_in_data[29];
+ // instrument panel pots
+ static bool first = true;
+ static int obs1[3], obs2[3], obs3[3], obs4[3], obs5[3];
static double diff1_ave = 0.0;
- int diff1 = 0;
-
-#if defined( FG_FIRST_TRY )
- if ( analog_in_data[29] < 150 || analog_in_data[29] > 990 ) {
- if ( last_obs1 > 512 && last_obs1 <= 990 ) {
- diff1 = 1;
- } else if ( last_obs1 >= 150 && last_obs1 <= 990 ) {
- diff1 = -1;
- }
- } else if ( last_obs1 < 150 || last_obs1 > 990 ) {
- if ( analog_in_data[29] > 512 && analog_in_data[29] <= 990 ) {
- diff1 = -1;
- } else if ( analog_in_data[29] >= 150 && analog_in_data[29] <= 990 ) {
- diff1 = 1;
- }
- } else {
- diff1 = analog_in_data[29] - last_obs1;
- }
-#elif defined( FG_SECOND_TRY )
- if ( analog_in_data[29] < 20 ) {
- if ( last_obs1 >= 110 && last_obs1 < 512 ) {
- diff1 = -6;
- } else if ( last_obs1 >= 512 ) {
- diff1 = 6;
- }
- last_obs1 = analog_in_data[29];
- } else if ( analog_in_data[29] < 110 ) {
- // do nothing
- } else if ( last_obs1 < 20 ) {
- if ( analog_in_data[29] >= 110 && analog_in_data[29] < 512 ) {
- diff1 = 6;
- } else if ( analog_in_data[29] >= 512 ) {
- diff1 = -6;
- }
- last_obs1 = analog_in_data[29];
- } else {
- diff1 = analog_in_data[29] - last_obs1;
- if ( abs(diff1) > 200 ) {
- // ignore
- diff1 = 0;
- }
- last_obs1 = analog_in_data[29];
- }
-#elif defined( FG_FOURTH_TRY )
- static bool ignore_next = false;
- diff1 = analog_in_data[29] - last_obs1;
- if ( abs(diff1) > 200 ) {
- // ignore
- diff1 = 0;
- ignore_next = true;
- } else if ( ignore_next ) {
- diff1 = 0;
- ignore_next = false;
- }
- last_obs1 = analog_in_data[29];
-#endif
-
- // cout << " diff1 = " << diff1 << endl;
- if ( diff1 < -500 ) { diff1 += 1024; }
- if ( diff1 > 500 ) { diff1 -= 1024; }
-
- if ( fabs(diff1_ave - diff1) < 200 || fabs(diff1) < fabs(diff1_ave) ) {
- diff1_ave = (2.0/3.0) * diff1_ave + (1.0/3.0) * diff1;
+ static double diff2_ave = 0.0;
+ static double diff3_ave = 0.0;
+ static double diff4_ave = 0.0;
+ static double diff5_ave = 0.0;
+
+ if ( first ) {
+ first = false;
+ obs1[0] = obs1[1] = obs1[2] = analog_in_data[11];
+ obs2[0] = obs2[1] = obs2[2] = analog_in_data[28];
+ obs3[0] = obs3[1] = obs3[2] = analog_in_data[29];
+ obs4[0] = obs4[1] = obs4[2] = analog_in_data[30];
+ obs5[0] = obs5[1] = obs5[2] = analog_in_data[31];
}
- tmp = nav1_obs->getDoubleValue() + (diff1_ave * (72.0/914.0) );
+ int diff1 = tony_magic( analog_in_data[11], obs1 );
+ int diff2 = tony_magic( analog_in_data[28], obs2 );
+ int diff3 = tony_magic( analog_in_data[29], obs3 );
+ int diff4 = tony_magic( analog_in_data[30], obs4 );
+ int diff5 = tony_magic( analog_in_data[31], obs5 );
+
+ diff1_ave = instr_pot_filter( diff1_ave, diff1 );
+ diff2_ave = instr_pot_filter( diff2_ave, diff2 );
+ diff3_ave = instr_pot_filter( diff3_ave, diff3 );
+ diff4_ave = instr_pot_filter( diff4_ave, diff4 );
+ diff5_ave = instr_pot_filter( diff5_ave, diff5 );
+
+ 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/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/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 );
- // nav2 obs tuner
- static int last_obs2 = analog_in_data[30];
- static double diff2_ave = 0.0;
- int diff2 = 0;
-
- // cout << "obs2 = " << analog_in_data[30] << " last obs2 = " << last_obs2;
-
-#if defined( FG_FIRST_TRY )
- if ( analog_in_data[30] < 150 || analog_in_data[30] > 990 ) {
- if ( last_obs2 > 512 && last_obs2 <= 990 ) {
- diff2 = 1;
- } else if ( last_obs2 >= 150 && last_obs2 <= 990 ) {
- diff2 = -1;
- }
- } else if ( last_obs2 < 150 || last_obs2 > 990 ) {
- if ( analog_in_data[30] > 512 && analog_in_data[30] <= 990 ) {
- diff2 = -1;
- } else if ( analog_in_data[30] >= 150 && analog_in_data[30] <= 990 ) {
- diff2 = 1;
- }
- } else {
- diff2 = analog_in_data[30] - last_obs2;
- }
-#elif defined( FG_SECOND_TRY )
- if ( analog_in_data[30] < 30 ) {
- if ( last_obs2 >= 43 && last_obs2 < 480 ) {
- diff2 = -6;
- } else if ( last_obs2 >= 480 ) {
- diff2 = 6;
- }
- last_obs2 = analog_in_data[30];
- } else if ( analog_in_data[30] < 43 ) {
- // do nothing
- } else if ( last_obs2 < 30 ) {
- if ( analog_in_data[30] >= 23 && analog_in_data[30] < 480 ) {
- diff2 = 6;
- } else if ( analog_in_data[30] >= 480 ) {
- diff2 = -6;
- }
- last_obs2 = analog_in_data[30];
- } else if ( analog_in_data[30] > 930 ) {
- if ( last_obs2 <= 924 && last_obs2 > 480 ) {
- diff2 = 6;
- } else if ( last_obs2 <= 480 ) {
- diff2 = -6;
- }
- last_obs2 = analog_in_data[30];
- } else if ( analog_in_data[30] > 924 ) {
- // do nothing
- } else if ( last_obs2 > 930 ) {
- if ( analog_in_data[30] <= 924 && analog_in_data[30] > 480 ) {
- diff2 = -6;
- } else if ( analog_in_data[30] <= 480 ) {
- diff2 = 6;
- }
- last_obs2 = analog_in_data[30];
- } else {
- diff2 = analog_in_data[30] - last_obs2;
- if ( abs(diff2) > 200 ) {
- // ignore
- diff2 = 0;
- }
- last_obs2 = analog_in_data[30];
- }
-#elif defined( FG_FOURTH_TRY )
- static bool ignore_next = false;
- diff2 = analog_in_data[30] - last_obs2;
- if ( abs(diff2) > 200 ) {
- // ignore
- diff2 = 0;
- ignore_next = true;
- } else if ( ignore_next ) {
- diff2 = 0;
- ignore_next = false;
- }
- last_obs2 = analog_in_data[30];
-#endif
-
- // cout << " diff2 = " << diff2 << endl;
- if ( diff2 < -500 ) { diff2 += 1024; }
- if ( diff2 > 500 ) { diff2 -= 1024; }
-
- if ( fabs(diff2_ave - diff2) < 200 || fabs(diff2) < fabs(diff2_ave) ) {
- diff2_ave = (2.0/3.0) * diff2_ave + (1.0/3.0) * diff2;
- }
-
- tmp = nav2_obs->getDoubleValue() + (diff2_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/888.0) );
+ while ( tmp >= 360.0 ) { tmp -= 360.0; }
+ while ( tmp < 0.0 ) { tmp += 360.0; }
+ // cout << " obs = " << tmp << endl;
+ fgSetFloat( "/radios/kr-87/inputs/rotation-deg", tmp );
+
return true;
}
dme_switch = (radio_switch_data[7] >> 4) & 0x03;
if ( dme_switch == 0 ) {
// off
- fgSetInt( "/radios/dme/switch-position", 0 );
+ fgSetInt( "/instrumentation/dme/switch-position", 0 );
} else if ( dme_switch == 2 ) {
// nav1
- fgSetInt( "/radios/dme/switch-position", 1 );
+ fgSetInt( "/instrumentation/dme/switch-position", 1 );
+ fgSetString( "/instrumentation/dme/frequencies/source",
+ "/radios/nav[0]/frequencies/selected-mhz" );
+ freq = fgGetFloat( "/radios/nav[0]/frequencies/selected-mhz", true );
+ fgSetFloat( "/instrumentation/dme/frequencies/selected-mhz", freq );
} else if ( dme_switch == 1 ) {
// nav2
- fgSetInt( "/radios/dme/switch-position", 3 );
+ fgSetInt( "/instrumentation/dme/switch-position", 3 );
+ fgSetString( "/instrumentation/dme/frequencies/source",
+ "/radios/nav[1]/frequencies/selected-mhz" );
+ freq = fgGetFloat( "/radios/nav[1]/frequencies/selected-mhz", true );
+ fgSetFloat( "/instrumentation/dme/frequencies/selected-mhz", freq );
}
// NavCom1 Power
fgSetInt( "/radios/kt-70/inputs/ident-btn",
!(radio_switch_data[27] >> 5 & 0x01) );
+ // Audio panel switches
+ fgSetInt( "/radios/nav[0]/audio-btn",
+ (radio_switch_data[3] & 0x01) );
+ fgSetInt( "/radios/nav[1]/audio-btn",
+ (radio_switch_data[3] >> 2 & 0x01) );
+ fgSetInt( "/radios/kr-87/inputs/audio-btn",
+ (radio_switch_data[3] >> 4 & 0x01) );
+ fgSetInt( "/radios/marker-beacon/audio-btn",
+ (radio_switch_data[3] >> 6 & 0x01) );
+
return true;
}
int i;
if ( dme_has_power() && dme_servicable->getBoolValue() ) {
- // DME minutes
- float minutes = dme_min->getFloatValue();
- if ( minutes > 999 ) {
- minutes = 999.0;
- }
- snprintf(digits, 7, "%03.0f", minutes);
- for ( i = 0; i < 6; ++i ) {
- digits[i] -= '0';
- }
- radio_display_data[0] = digits[1] << 4 | digits[2];
- radio_display_data[1] = 0xf0 | digits[0];
+ if ( dme_in_range->getBoolValue() ) {
+ // DME minutes
+ float minutes = dme_min->getFloatValue();
+ if ( minutes > 999 ) {
+ minutes = 999.0;
+ }
+ snprintf(digits, 7, "%03.0f", minutes);
+ for ( i = 0; i < 6; ++i ) {
+ digits[i] -= '0';
+ }
+ radio_display_data[0] = digits[1] << 4 | digits[2];
+ radio_display_data[1] = 0xf0 | digits[0];
- // DME knots
- float knots = dme_kt->getFloatValue();
- if ( knots > 999 ) {
- knots = 999.0;
- }
- snprintf(digits, 7, "%03.0f", knots);
- for ( i = 0; i < 6; ++i ) {
- digits[i] -= '0';
- }
- radio_display_data[2] = digits[1] << 4 | digits[2];
- radio_display_data[3] = 0xf0 | digits[0];
+ // DME knots
+ float knots = dme_kt->getFloatValue();
+ if ( knots > 999 ) {
+ knots = 999.0;
+ }
+ snprintf(digits, 7, "%03.0f", knots);
+ for ( i = 0; i < 6; ++i ) {
+ digits[i] -= '0';
+ }
+ radio_display_data[2] = digits[1] << 4 | digits[2];
+ radio_display_data[3] = 0xf0 | digits[0];
- // DME distance (nm)
- float nm = dme_nm->getFloatValue();
- if ( nm > 99 ) {
- nm = 99.0;
- }
- snprintf(digits, 7, "%04.1f", nm);
- for ( i = 0; i < 6; ++i ) {
- digits[i] -= '0';
- }
- radio_display_data[4] = digits[1] << 4 | digits[3];
- radio_display_data[5] = 0x00 | digits[0];
- // the 0x00 in the upper nibble of the 6th byte of each
- // display turns on the decimal point
+ // DME distance (nm)
+ float nm = dme_nm->getFloatValue();
+ if ( nm > 99 ) {
+ nm = 99.0;
+ }
+ snprintf(digits, 7, "%04.1f", nm);
+ for ( i = 0; i < 6; ++i ) {
+ digits[i] -= '0';
+ }
+ radio_display_data[4] = digits[1] << 4 | digits[3];
+ radio_display_data[5] = 0x00 | digits[0];
+ // the 0x00 in the upper nibble of the 6th byte of each
+ // display turns on the decimal point
+ } else {
+ // out of range
+ 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
for ( i = 0; i < 6; ++i ) {
update_switch_matrix( board, switch_data, switch_matrix );
// master switches
- fgSetBool( "/controls/switches/master-bat", switch_matrix[board][4][1] );
- fgSetBool( "/controls/switches/master-alt", switch_matrix[board][5][1] );
+ fgSetBool( "/controls/switches/master-bat", switch_matrix[board][5][1] );
+ fgSetBool( "/controls/switches/master-alt", switch_matrix[board][4][1] );
fgSetBool( "/controls/switches/master-avionics",
switch_matrix[board][0][3] );
mag2 = mag1;
mag1 = magnetos;
if ( mag1 == mag2 && mag2 == mag3 ) {
- fgSetInt( "/controls/magnetos[0]", magnetos );
+ fgSetInt( "/controls/engines/engine[0]/magnetos", magnetos );
}
static bool start1, start2, start3;
start3 = start2;
start2 = start1;
start1 = starter;
if ( start1 == start2 && start2 == start3 ) {
- fgSetBool( "/controls/starter[0]", starter );
+ fgSetBool( "/controls/engines/engine[0]/starter", starter );
}
// other toggle switches
- fgSetBool( "/controls/fuel-pump[0]", switch_matrix[board][0][2] );
+ fgSetBool( "/controls/engines/engine[0]/fuel-pump",
+ switch_matrix[board][0][2] );
fgSetBool( "/controls/switches/flashing-beacon",
switch_matrix[board][1][2] );
fgSetBool( "/controls/switches/landing-light", switch_matrix[board][2][2] );
flap2 = flap1;
flap1 = flaps;
if ( flap1 == flap2 && flap2 == flap3 ) {
- fgSetFloat( "/controls/flaps", flaps );
+ fgSetFloat( "/controls/flight/flaps", flaps );
}
// fuel selector (also filtered)
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
+#ifdef ATC_SUPPORT_CIRCUIT_BREAKERS_NOT_THE_DEFAULT
fgSetBool( "/controls/circuit-breakers/cabin-lights-pwr",
switch_matrix[board][0][0] );
fgSetBool( "/controls/circuit-breakers/instr-ignition-switch",
switch_matrix[board][6][0] );
fgSetBool( "/controls/circuit-breakers/annunciators",
switch_matrix[board][7][0] );
+#else
+ fgSetBool( "/controls/circuit-breakers/cabin-lights-pwr", true );
+ fgSetBool( "/controls/circuit-breakers/instr-ignition-switch", true );
+ fgSetBool( "/controls/circuit-breakers/flaps", true );
+ fgSetBool( "/controls/circuit-breakers/avn-bus-1", true );
+ fgSetBool( "/controls/circuit-breakers/avn-bus-2", true );
+ fgSetBool( "/controls/circuit-breakers/turn-coordinator", true );
+ fgSetBool( "/controls/circuit-breakers/instrument-lights", true );
+ fgSetBool( "/controls/circuit-breakers/annunciators", true );
+#endif
- fgSetDouble( "/controls/parking-brake", switch_matrix[board][7][3] );
+ fgSetDouble( "/controls/gear/parking-brake",
+ switch_matrix[board][7][3] );
+ fgSetDouble( "/radios/marker-beacon/power-btn",
+ switch_matrix[board][6][1] );
return true;
}