X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInstrumentation%2Fnewnavradio.cxx;h=bc54961d94e5565498991d9e50b950fabb40492e;hb=51a1c86f00d5e19547cf3eb368b6a28dfdb966f4;hp=9468e3f4da3e211f26eecc3584e365c9b59386d8;hpb=9a21896a3372ba1d6c2da8e59433ab0972d4b572;p=flightgear.git diff --git a/src/Instrumentation/newnavradio.cxx b/src/Instrumentation/newnavradio.cxx old mode 100755 new mode 100644 index 9468e3f4d..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) @@ -808,7 +810,7 @@ public: void valueChanged (SGPropertyNode * prop) { // format as fixed decimal "nnn.nn" - ostringstream buf; + std::ostringstream buf; buf << std::fixed << std::setw(5) << std::setfill('0') @@ -922,7 +924,7 @@ void NavRadioImpl::update( double dt ) try { position = globals->get_aircraft_position(); } - catch( exception & ) { + catch( std::exception & ) { return; }