X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInstrumentation%2Fnewnavradio.cxx;h=bc54961d94e5565498991d9e50b950fabb40492e;hb=d15d2ad2703e0572e3b9a24d238d6089be1ec6b9;hp=202fd24724fe431973a03012266e054c707a5edf;hpb=b1b4b7ecf48c4420d4445979c36cbf3f80be616a;p=flightgear.git diff --git a/src/Instrumentation/newnavradio.cxx b/src/Instrumentation/newnavradio.cxx old mode 100755 new mode 100644 index 202fd2472..bc54961d9 --- a/src/Instrumentation/newnavradio.cxx +++ b/src/Instrumentation/newnavradio.cxx @@ -29,11 +29,11 @@ #include #include -#include #include #include #include #include +#include #include
#include @@ -149,7 +149,7 @@ public: protected: virtual double computeSignalQuality_norm( const SGGeod & aircraftPosition ); - virtual FGNavList * getNavaidList() = 0; + virtual FGNavList::TypeFilter* getNavaidFilter() = 0; // General-purpose sawtooth function. Graph looks like this: // /\ . @@ -259,7 +259,8 @@ double NavRadioComponent::getRange_nm( const SGGeod & aircraftPosition ) void NavRadioComponent::search( double frequency, const SGGeod & aircraftPosition ) { - if( NULL == (_navRecord = getNavaidList()->findByFreq(frequency, aircraftPosition )) ) { + _navRecord = FGNavList::findByFreq(frequency, aircraftPosition, getNavaidFilter() ); + if( NULL == _navRecord ) { SG_LOG(SG_INSTR,SG_ALERT, "No " << _name << " available at " << frequency ); _ident = ""; return; @@ -323,7 +324,7 @@ public: virtual double getRange_nm(const SGGeod & aircraftPosition); protected: virtual double computeSignalQuality_norm( const SGGeod & aircraftPosition ); - virtual FGNavList * getNavaidList(); + virtual FGNavList::TypeFilter* getNavaidFilter(); private: double _totalTime; @@ -393,9 +394,10 @@ double VOR::getRange_nm( const SGGeod & aircraftPosition ) return _serviceVolume.adjustRange( _heightAboveStation_ft, _navRecord->get_range() ); } -FGNavList * VOR::getNavaidList() +FGNavList::TypeFilter* VOR::getNavaidFilter() { - return globals->get_navlist(); + static FGNavList::TypeFilter filter(FGPositioned::VOR); + return &filter; } double VOR::computeSignalQuality_norm( const SGGeod & aircraftPosition ) @@ -468,7 +470,7 @@ public: protected: virtual double computeSignalQuality_norm( const SGGeod & aircraftPosition ); - virtual FGNavList * getNavaidList(); + virtual FGNavList::TypeFilter* getNavaidFilter(); private: class ServiceVolume { @@ -532,9 +534,9 @@ LOC::~LOC() { } -FGNavList * LOC::getNavaidList() +FGNavList::TypeFilter* LOC::getNavaidFilter() { - return globals->get_loclist(); + return FGNavList::locFilter(); } void LOC::search( double frequency, const SGGeod & aircraftPosition ) @@ -618,8 +620,7 @@ public: virtual double getRange_nm(const SGGeod & aircraftPosition); protected: - virtual FGNavList * getNavaidList(); - + virtual FGNavList::TypeFilter* getNavaidFilter(); private: class ServiceVolume { public: @@ -687,9 +688,10 @@ GS::~GS() { } -FGNavList * GS::getNavaidList() +FGNavList::TypeFilter* GS::getNavaidFilter() { - return globals->get_gslist(); + static FGNavList::TypeFilter filter(FGPositioned::GS); + return &filter; } double GS::getRange_nm(const SGGeod & aircraftPosition)