gps_cdi_deflection_node(NULL),
gps_to_flag_node(NULL),
gps_from_flag_node(NULL),
+ gps_has_gs_node(NULL),
last_nav_id(""),
last_nav_vor(false),
play_count(0),
gps_cdi_deflection_node = fgGetNode("/instrumentation/gps/cdi-deflection", true);
gps_to_flag_node = fgGetNode("/instrumentation/gps/to-flag", true);
gps_from_flag_node = fgGetNode("/instrumentation/gps/from-flag", true);
+ gps_has_gs_node = fgGetNode("/instrumentation/gps/has-gs", true);
std::ostringstream temp;
temp << _name << "nav-ident" << _num;
bool nav_serviceable = nav_serviceable_node->getBoolValue();
bool cdi_serviceable = cdi_serviceable_node->getBoolValue();
bool tofrom_serviceable = tofrom_serviceable_node->getBoolValue();
- bool inrange = inrange_node->getBoolValue();
- bool has_gs = has_gs_node->getBoolValue();
+ bool inrange = false;
+ bool has_gs = false;
+ if ( nav_slaved_to_gps_node->getBoolValue() ) {
+ has_gs = gps_has_gs_node->getBoolValue();
+ inrange = gps_to_flag_node->getBoolValue()
+ || gps_from_flag_node->getBoolValue();
+ } else {
+ has_gs = has_gs_node->getBoolValue();
+ inrange = inrange_node->getBoolValue();
+ }
bool is_loc = loc_node->getBoolValue();
double loc_dist = loc_dist_node->getDoubleValue();
double effective_range_m;
SGPropertyNode_ptr gps_cdi_deflection_node;
SGPropertyNode_ptr gps_to_flag_node;
SGPropertyNode_ptr gps_from_flag_node;
+ SGPropertyNode_ptr gps_has_gs_node;
// internal (private) values
}
fgSetDouble("/instrumentation/gps/cdi-deflection",
(double)pos / 8.0);
- fgSetBool("/instrumentation/nav[0]/has-gs", false);
+ fgSetBool("/instrumentation/gps/has-gs", false);
}
} else if ( ident == "k" ) {
string ind = msg.substr(1,1);