From: Torsten Dreyer Date: Wed, 15 Feb 2012 21:43:15 +0000 (+0100) Subject: Navradio: provide property is-localizer-frequency X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=c5eba72c758b92b9120c38ae101f4a4ab2044ff8;p=flightgear.git Navradio: provide property is-localizer-frequency This property is true if the active frequency is tuned to a paired LOC/GS frequency in the range 108.00 - 111.95 with a odd 100kHz digit (108.10, 108.15, 108.30, 108.35 ...) It only indicates, that this _is_ a LOC/GS frequency, it does _not_ provide any indication if a LOC/GS station is actually being received. --- diff --git a/src/Instrumentation/navradio.cxx b/src/Instrumentation/navradio.cxx index 076839c36..bc45c6944 100644 --- a/src/Instrumentation/navradio.cxx +++ b/src/Instrumentation/navradio.cxx @@ -201,6 +201,7 @@ FGNavRadio::init () alt_freq_node = subnode->getChild("standby-mhz", 0, true); fmt_freq_node = subnode->getChild("selected-mhz-fmt", 0, true); fmt_alt_freq_node = subnode->getChild("standby-mhz-fmt", 0, true); + is_loc_freq_node = subnode->getChild("is-localizer-frequency", 0, true ); // radials subnode = node->getChild("radials", 0, true); @@ -346,6 +347,16 @@ double FGNavRadio::adjustILSRange( double stationElev, double aircraftElev, return FG_LOC_DEFAULT_RANGE; } +// Frequencies with odd 100kHz numbers in the range from 108.00 - 111.95 +// are LOC/GS (ILS) frequency pairs +// (108.00, 108.05, 108.20, 108.25.. =VOR) +// (108.10, 108.15, 108.30, 108.35.. =ILS) +static inline bool IsLocalizerFrequency( double f ) +{ + if( f < 108.0 || f >= 112.00 ) return false; + return (((SGMiscd::roundToInt(f * 100.0) % 100)/10) % 2) != 0; +} + ////////////////////////////////////////////////////////////////////////// // Update the various nav values based on position and valid tuned in navs @@ -364,6 +375,7 @@ FGNavRadio::update(double dt) fmt_freq_node->setStringValue(tmp); sprintf( tmp, "%.2f", alt_freq_node->getDoubleValue() ); fmt_alt_freq_node->setStringValue(tmp); + is_loc_freq_node->setBoolValue( IsLocalizerFrequency( freq_node->getDoubleValue() )); if (power_btn_node->getBoolValue() && (bus_power_node->getDoubleValue() > 1.0) diff --git a/src/Instrumentation/navradio.hxx b/src/Instrumentation/navradio.hxx index 54c2e531e..17ac3b092 100644 --- a/src/Instrumentation/navradio.hxx +++ b/src/Instrumentation/navradio.hxx @@ -53,6 +53,7 @@ class FGNavRadio : public SGSubsystem, public SGPropertyChangeListener SGPropertyNode_ptr power_btn_node; SGPropertyNode_ptr freq_node; // primary freq SGPropertyNode_ptr alt_freq_node; // standby freq + SGPropertyNode_ptr is_loc_freq_node;// is the primary freq a loc/gs (paired) freq? SGPropertyNode_ptr sel_radial_node; // selected radial SGPropertyNode_ptr vol_btn_node; SGPropertyNode_ptr ident_btn_node;