lat_node(fgGetNode("/position/latitude-deg", true)),
alt_node(fgGetNode("/position/altitude-ft", true)),
bus_power(fgGetNode("/systems/electrical/outputs/adf", true)),
- servicable(fgGetNode("/instrumentation/adf/servicable", true)),
+ serviceable(fgGetNode("/instrumentation/adf/serviceable", true)),
need_update(true),
valid(false),
inrange(false),
void FGKR_87::init () {
- servicable->setBoolValue( true );
+ serviceable->setBoolValue( true );
morse.init();
}
// Radio
////////////////////////////////////////////////////////////////////////
- if ( has_power() && servicable->getBoolValue() ) {
+ if ( has_power() && serviceable->getBoolValue() ) {
// buttons
if ( adf_btn == 0 ) {
ant_mode = 1;
// cout << "flt = " << flight_timer << " et = " << elapsed_timer
// << " needle = " << needle_deg << endl;
- if ( valid && inrange && servicable->getBoolValue() ) {
+ if ( valid && inrange && serviceable->getBoolValue() ) {
// play station ident via audio system if on + ant mode,
// otherwise turn it off
if ( vol_btn >= 0.01 && audio_btn ) {
SGPropertyNode *lat_node;
SGPropertyNode *alt_node;
SGPropertyNode *bus_power;
- SGPropertyNode *servicable;
+ SGPropertyNode *serviceable;
bool need_update;
lat_node(fgGetNode("/position/latitude-deg", true)),
alt_node(fgGetNode("/position/altitude-ft", true)),
bus_power(fgGetNode("/systems/electrical/outputs/transponder", true)),
+ serviceable_node(fgGetNode("/radios/kt-70/inputs/serviceable", true)),
r_flash_time(0.0),
ident_mode(false),
ident_btn(false),
sby_ann = false;
reply_ann = false;
- if ( has_power() ) {
+ if ( has_power() && serviceable_node->getBoolValue() ) {
// sanity checks
if ( digit1 < 0 ) { digit1 = 0; }
if ( digit1 > 7 ) { digit1 = 7; }
SGPropertyNode *lat_node;
SGPropertyNode *alt_node;
SGPropertyNode *bus_power;
+ SGPropertyNode *serviceable_node;
// internal values
double r_flash_time;
bus_power(fgGetNode("/systems/electrical/outputs/navcom[0]", true)),
power_btn(fgGetNode("/radios/marker-beacon/power-btn", true)),
audio_btn(fgGetNode("/radios/marker-beacon/audio-btn", true)),
- servicable(fgGetNode("/instrumentation/marker-beacons/servicable", true)),
+ serviceable(fgGetNode("/instrumentation/marker-beacons/serviceable", true)),
need_update(true),
outer_blink(false),
power_btn->setBoolValue( true );
audio_btn->setBoolValue( true );
- servicable->setBoolValue( true );
+ serviceable->setBoolValue( true );
}
{
need_update = false;
- if ( has_power() && servicable->getBoolValue() ) {
+ if ( has_power() && serviceable->getBoolValue() ) {
// marker beacon blinking
bool light_on = ( outer_blink || middle_blink || inner_blink );
SGTimeStamp current;
outer_marker = middle_marker = inner_marker = false;
if ( beacon_type == FGMkrBeacon::NOBEACON
- || !has_power() || !servicable->getBoolValue() )
+ || !has_power() || !serviceable->getBoolValue() )
{
// cout << "no marker" << endl;
beacon_type = FGMkrBeacon::NOBEACON;
SGPropertyNode *bus_power;
SGPropertyNode *power_btn;
SGPropertyNode *audio_btn;
- SGPropertyNode *servicable;
+ SGPropertyNode *serviceable;
bool need_update;
fgSetDouble( propname, 60.0 );
bus_power = fgGetNode( propname, true );
- snprintf(propname, 256, "/instrumentation/comm[%d]/servicable", index);
- com_servicable = fgGetNode( propname, true );
- com_servicable->setBoolValue( true );
+ snprintf(propname, 256, "/instrumentation/comm[%d]/serviceable", index);
+ com_serviceable = fgGetNode( propname, true );
+ com_serviceable->setBoolValue( true );
- snprintf(propname, 256, "/instrumentation/nav[%d]/servicable", index);
- nav_servicable = fgGetNode( propname, true );
- nav_servicable->setBoolValue( true );
+ snprintf(propname, 256, "/instrumentation/nav[%d]/serviceable", index);
+ nav_serviceable = fgGetNode( propname, true );
+ nav_serviceable->setBoolValue( true );
- snprintf(propname, 256, "/instrumentation/vor[%d]/cdi/servicable", index);
- cdi_servicable = fgGetNode( propname, true );
- cdi_servicable->setBoolValue( true );
+ snprintf(propname, 256, "/instrumentation/vor[%d]/cdi/serviceable", index);
+ cdi_serviceable = fgGetNode( propname, true );
+ cdi_serviceable->setBoolValue( true );
- snprintf(propname, 256, "/instrumentation/vor[%d]/gs/servicable", index);
- gs_servicable = fgGetNode( propname, true );
- gs_servicable->setBoolValue( true );
+ snprintf(propname, 256, "/instrumentation/vor[%d]/gs/serviceable", index);
+ gs_serviceable = fgGetNode( propname, true );
+ gs_serviceable->setBoolValue( true );
- snprintf(propname, 256, "/instrumentation/vor[%d]/to-from/servicable", index);
- tofrom_servicable = fgGetNode( propname, true );
- tofrom_servicable->setBoolValue( true );
+ snprintf(propname, 256, "/instrumentation/vor[%d]/to-from/serviceable", index);
+ tofrom_serviceable = fgGetNode( propname, true );
+ tofrom_serviceable->setBoolValue( true );
}
void
////////////////////////////////////////////////////////////////////////
if ( nav_valid && power_btn && (bus_power->getDoubleValue() > 1.0)
- && nav_servicable->getBoolValue() )
+ && nav_serviceable->getBoolValue() )
{
station = Point3D( nav_x, nav_y, nav_z );
nav_loc_dist = aircraft.distance3D( station );
// cout << "not picking up vor. :-(" << endl;
}
- if ( nav_valid && nav_inrange && nav_servicable->getBoolValue() ) {
+ if ( nav_valid && nav_inrange && nav_serviceable->getBoolValue() ) {
// play station ident via audio system if on + ident,
// otherwise turn it off
if ( power_btn && (bus_power->getDoubleValue() > 1.0)
double r;
if ( nav_inrange
- && nav_servicable->getBoolValue() && cdi_servicable->getBoolValue() )
+ && nav_serviceable->getBoolValue() && cdi_serviceable->getBoolValue() )
{
r = nav_radial - nav_target_radial;
// cout << "Target radial = " << nav_target_radial
// number of degrees we are off the glide slope * 5.0
double FGNavCom::get_nav_gs_deflection() const {
if ( nav_inrange && nav_has_gs
- && nav_servicable->getBoolValue() && gs_servicable->getBoolValue() )
+ && nav_serviceable->getBoolValue() && gs_serviceable->getBoolValue() )
{
double x = nav_gs_dist;
double y = (fgGetDouble("/position/altitude-ft") - nav_elev)
FGNavCom::get_nav_to_flag () const
{
if ( nav_inrange
- && nav_servicable->getBoolValue()
- && tofrom_servicable->getBoolValue() )
+ && nav_serviceable->getBoolValue()
+ && tofrom_serviceable->getBoolValue() )
{
double offset = fabs(nav_radial - nav_target_radial);
if (nav_loc) {
FGNavCom::get_nav_from_flag () const
{
if ( nav_inrange
- && nav_servicable->getBoolValue()
- && tofrom_servicable->getBoolValue() ) {
+ && nav_serviceable->getBoolValue()
+ && tofrom_serviceable->getBoolValue() ) {
double offset = fabs(nav_radial - nav_target_radial);
if (nav_loc) {
return false;
SGPropertyNode *lat_node;
SGPropertyNode *alt_node;
SGPropertyNode *bus_power;
- SGPropertyNode *com_servicable, *nav_servicable;
- SGPropertyNode *cdi_servicable, *gs_servicable, *tofrom_servicable;
+ SGPropertyNode *com_serviceable, *nav_serviceable;
+ SGPropertyNode *cdi_serviceable, *gs_serviceable, *tofrom_serviceable;
string last_nav_id;
bool last_nav_vor;
true );
alt_press = fgGetNode( "/instrumentation/altimeter/setting-inhg", true );
adf_hdg = fgGetNode( "/radios/kr-87/inputs/rotation-deg", true );
+ hdg_bug = fgGetNode( "/autopilot/settings/heading-bug-deg", true );
elevator_center = fgGetNode( "/input/atc610x/elevator/center", true );
elevator_min = fgGetNode( "/input/atc610x/elevator/min", true );
nav2vol_min = fgGetNode( "/input/atc610x/nav2vol/min", true );
nav2vol_max = fgGetNode( "/input/atc610x/nav2vol/max", true );
- comm1_servicable = fgGetNode( "/instrumentation/comm[0]/servicable", true );
- comm2_servicable = fgGetNode( "/instrumentation/comm[1]/servicable", true );
- nav1_servicable = fgGetNode( "/instrumentation/nav[0]/servicable", true );
- nav2_servicable = fgGetNode( "/instrumentation/nav[1]/servicable", true );
- adf_servicable = fgGetNode( "/instrumentation/adf/servicable", true );
- xpdr_servicable = fgGetNode( "/instrumentation/transponder/servicable",
+ comm1_serviceable = fgGetNode( "/instrumentation/comm[0]/serviceable", true );
+ comm2_serviceable = fgGetNode( "/instrumentation/comm[1]/serviceable", true );
+ nav1_serviceable = fgGetNode( "/instrumentation/nav[0]/serviceable", true );
+ nav2_serviceable = fgGetNode( "/instrumentation/nav[1]/serviceable", true );
+ adf_serviceable = fgGetNode( "/instrumentation/adf/serviceable", true );
+ xpdr_serviceable = fgGetNode( "/radios/kt-70/inputs/serviceable",
true );
- dme_servicable = fgGetNode( "/instrumentation/dme/servicable", true );
+ dme_serviceable = fgGetNode( "/instrumentation/dme/serviceable", true );
- // default to having everything servicable
- comm1_servicable->setBoolValue( true );
- comm2_servicable->setBoolValue( true );
- nav1_servicable->setBoolValue( true );
- nav2_servicable->setBoolValue( true );
- adf_servicable->setBoolValue( true );
- xpdr_servicable->setBoolValue( true );
- dme_servicable->setBoolValue( true );
+ // default to having everything serviceable
+ comm1_serviceable->setBoolValue( true );
+ comm2_serviceable->setBoolValue( true );
+ nav1_serviceable->setBoolValue( true );
+ nav2_serviceable->setBoolValue( true );
+ adf_serviceable->setBoolValue( true );
+ xpdr_serviceable->setBoolValue( true );
+ dme_serviceable->setBoolValue( true );
return true;
}
// instrument panel pots
static bool first = true;
- static int obs1[3], obs2[3], obs3[3], obs4[3], obs5[3];
+ static int obs1[3], obs2[3], obs3[3], obs4[3], obs5[3], obs6[3];
static double diff1_ave = 0.0;
static double diff2_ave = 0.0;
static double diff3_ave = 0.0;
static double diff4_ave = 0.0;
static double diff5_ave = 0.0;
+ static double diff6_ave = 0.0;
if ( first ) {
first = false;
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];
+ obs6[0] = obs6[1] = obs6[2] = analog_in_data[14];
}
int diff1 = tony_magic( analog_in_data[11], obs1 );
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 );
+ int diff6 = tony_magic( analog_in_data[14], obs6 );
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 );
+ diff6_ave = instr_pot_filter( diff6_ave, diff6 );
tmp = alt_press->getDoubleValue() + (diff1_ave * (0.25/888.0) );
if ( tmp < 27.9 ) { tmp = 27.9; }
// cout << " obs = " << tmp << endl;
fgSetFloat( "/radios/kr-87/inputs/rotation-deg", tmp );
+ tmp = hdg_bug->getDoubleValue() + (diff6_ave * (72.0/888.0) );
+ while ( tmp >= 360.0 ) { tmp -= 360.0; }
+ while ( tmp < 0.0 ) { tmp += 360.0; }
+ // cout << " obs = " << tmp << endl;
+ fgSetFloat( "/autopilot/settings/heading-bug-deg", tmp );
+
return true;
}
fgSetBool( "/radios/comm[0]/inputs/power-btn",
radio_switch_data[7] & 0x01 );
- if ( navcom1_has_power() && comm1_servicable->getBoolValue() ) {
+ if ( navcom1_has_power() && comm1_serviceable->getBoolValue() ) {
// Com1 Swap
int com1_swap = !((radio_switch_data[7] >> 1) & 0x01);
static int last_com1_swap;
fgSetBool( "/radios/comm[1]/inputs/power-btn",
radio_switch_data[15] & 0x01 );
- if ( navcom2_has_power() && comm2_servicable->getBoolValue() ) {
+ if ( navcom2_has_power() && comm2_serviceable->getBoolValue() ) {
// Com2 Swap
int com2_swap = !((radio_switch_data[15] >> 1) & 0x01);
static int last_com2_swap;
last_com2_swap = com2_swap;
}
- if ( navcom1_has_power() && nav1_servicable->getBoolValue() ) {
+ if ( navcom1_has_power() && nav1_serviceable->getBoolValue() ) {
// Nav1 Swap
int nav1_swap = radio_switch_data[11] & 0x01;
static int last_nav1_swap;
last_nav1_swap = nav1_swap;
}
- if ( navcom2_has_power() && nav2_servicable->getBoolValue() ) {
+ if ( navcom2_has_power() && nav2_serviceable->getBoolValue() ) {
// Nav2 Swap
int nav2_swap = !(radio_switch_data[19] & 0x01);
static int last_nav2_swap;
last_nav2_swap = nav2_swap;
}
- if ( navcom1_has_power() && comm1_servicable->getBoolValue() ) {
+ if ( navcom1_has_power() && comm1_serviceable->getBoolValue() ) {
// Com1 Tuner
int com1_tuner_fine = ((radio_switch_data[5] >> 4) & 0x0f) - 1;
int com1_tuner_coarse = (radio_switch_data[5] & 0x0f) - 1;
coarse_freq + fine_freq / 40.0 );
}
- if ( navcom2_has_power() && comm2_servicable->getBoolValue() ) {
+ if ( navcom2_has_power() && comm2_serviceable->getBoolValue() ) {
// Com2 Tuner
int com2_tuner_fine = ((radio_switch_data[13] >> 4) & 0x0f) - 1;
int com2_tuner_coarse = (radio_switch_data[13] & 0x0f) - 1;
coarse_freq + fine_freq / 40.0 );
}
- if ( navcom1_has_power() && nav1_servicable->getBoolValue() ) {
+ if ( navcom1_has_power() && nav1_serviceable->getBoolValue() ) {
// Nav1 Tuner
int nav1_tuner_fine = ((radio_switch_data[9] >> 4) & 0x0f) - 1;
int nav1_tuner_coarse = (radio_switch_data[9] & 0x0f) - 1;
coarse_freq + fine_freq / 20.0 );
}
- if ( navcom2_has_power() && nav2_servicable->getBoolValue() ) {
+ if ( navcom2_has_power() && nav2_serviceable->getBoolValue() ) {
// Nav2 Tuner
int nav2_tuner_fine = ((radio_switch_data[17] >> 4) & 0x0f) - 1;
int nav2_tuner_coarse = (radio_switch_data[17] & 0x0f) - 1;
static int last_adf_tuner_fine = adf_tuner_fine;
static int last_adf_tuner_coarse = adf_tuner_coarse;
- if ( adf_has_power() && adf_servicable->getBoolValue() ) {
+ if ( adf_has_power() && adf_serviceable->getBoolValue() ) {
// cout << "adf_stby_mode = " << adf_stby_mode->getIntValue() << endl;
if ( adf_count_mode->getIntValue() == 2 ) {
// tune count down timer
}
}
- if ( xpdr_has_power() && xpdr_servicable->getBoolValue() ) {
+ if ( xpdr_has_power() && xpdr_serviceable->getBoolValue() ) {
int id_code = xpdr_id_code->getIntValue();
int digit[4];
int place = 1000;
char digits[10];
int i;
- if ( dme_has_power() && dme_servicable->getBoolValue() ) {
+ if ( dme_has_power() && dme_serviceable->getBoolValue() ) {
if ( dme_in_range->getBoolValue() ) {
// DME minutes
float minutes = dme_min->getFloatValue();
}
}
- if ( navcom1_has_power() && comm1_servicable->getBoolValue() ) {
+ if ( navcom1_has_power() && comm1_serviceable->getBoolValue() ) {
// Com1 standby frequency
float com1_stby = com1_stby_freq->getFloatValue();
if ( fabs(com1_stby) > 999.99 ) {
radio_display_data[11] = 0xff;
}
- if ( navcom2_has_power() && comm2_servicable->getBoolValue() ) {
+ if ( navcom2_has_power() && comm2_serviceable->getBoolValue() ) {
// Com2 standby frequency
float com2_stby = com2_stby_freq->getFloatValue();
if ( fabs(com2_stby) > 999.99 ) {
radio_display_data[23] = 0xff;
}
- if ( navcom1_has_power() && nav1_servicable->getBoolValue() ) {
+ if ( navcom1_has_power() && nav1_serviceable->getBoolValue() ) {
// Nav1 standby frequency
float nav1_stby = nav1_stby_freq->getFloatValue();
if ( fabs(nav1_stby) > 999.99 ) {
radio_display_data[17] = 0xff;
}
- if ( navcom2_has_power() && nav2_servicable->getBoolValue() ) {
+ if ( navcom2_has_power() && nav2_serviceable->getBoolValue() ) {
// Nav2 standby frequency
float nav2_stby = nav2_stby_freq->getFloatValue();
if ( fabs(nav2_stby) > 999.99 ) {
}
// ADF standby frequency / timer
- if ( adf_has_power() && adf_servicable->getBoolValue() ) {
+ if ( adf_has_power() && adf_serviceable->getBoolValue() ) {
if ( adf_stby_mode->getIntValue() == 0 ) {
// frequency
float adf_stby = adf_stby_freq->getFloatValue();
}
// Transponder code and flight level
- if ( xpdr_has_power() && xpdr_servicable->getBoolValue() ) {
+ if ( xpdr_has_power() && xpdr_serviceable->getBoolValue() ) {
if ( xpdr_func_knob->getIntValue() == 2 ) {
// test mode
radio_display_data[36] = 8 << 4 | 8;
SGPropertyNode *adf_stby_mode, *adf_timer_mode;
SGPropertyNode *adf_count_mode, *adf_flight_timer, *adf_elapsed_timer;
SGPropertyNode *adf_ant_ann, *adf_adf_ann, *adf_bfo_ann, *adf_frq_ann;
- SGPropertyNode *adf_flt_ann, *adf_et_ann, *adf_hdg;
+ SGPropertyNode *adf_flt_ann, *adf_et_ann, *adf_hdg, *hdg_bug;
SGPropertyNode *inner, *middle, *outer;
SGPropertyNode *xpdr_ident_btn;
SGPropertyNode *xpdr_digit1, *xpdr_digit2, *xpdr_digit3, *xpdr_digit4;
SGPropertyNode *ati_bird, *alt_press;
// Faults
- SGPropertyNode *comm1_servicable, *comm2_servicable;
- SGPropertyNode *nav1_servicable, *nav2_servicable;
- SGPropertyNode *adf_servicable, *xpdr_servicable, *dme_servicable;
+ SGPropertyNode *comm1_serviceable, *comm2_serviceable;
+ SGPropertyNode *nav1_serviceable, *nav2_serviceable;
+ SGPropertyNode *adf_serviceable, *xpdr_serviceable, *dme_serviceable;
// Configuration values
SGPropertyNode *elevator_center, *elevator_min, *elevator_max;