#include <assert.h>
#include <boost/foreach.hpp>
-#include <simgear/math/SGMath.hxx>
#include <simgear/math/interpolater.hxx>
#include <simgear/sg_inlines.h>
#include <simgear/props/propertyObject.hxx>
#include <simgear/misc/strutils.hxx>
+#include <simgear/sound/sample_group.hxx>
#include <Main/fg_props.hxx>
#include <Navaids/navlist.hxx>
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:
// /\ .
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;
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;
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 )
protected:
virtual double computeSignalQuality_norm( const SGGeod & aircraftPosition );
- virtual FGNavList * getNavaidList();
+ virtual FGNavList::TypeFilter* getNavaidFilter();
private:
class ServiceVolume {
{
}
-FGNavList * LOC::getNavaidList()
+FGNavList::TypeFilter* LOC::getNavaidFilter()
{
- return globals->get_loclist();
+ return FGNavList::locFilter();
}
void LOC::search( double frequency, const SGGeod & aircraftPosition )
virtual double getRange_nm(const SGGeod & aircraftPosition);
protected:
- virtual FGNavList * getNavaidList();
-
+ virtual FGNavList::TypeFilter* getNavaidFilter();
private:
class ServiceVolume {
public:
{
}
-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)
void valueChanged (SGPropertyNode * prop)
{
// format as fixed decimal "nnn.nn"
- ostringstream buf;
+ std::ostringstream buf;
buf << std::fixed
<< std::setw(5)
<< std::setfill('0')
try {
position = globals->get_aircraft_position();
}
- catch( exception & ) {
+ catch( std::exception & ) {
return;
}