Maintenance: ATIS Encoder and Information Providers
add const override to virtual functions. explicit ctor.
This commit is contained in:
parent
2d3dfc2c0b
commit
3ddfff59da
5 changed files with 84 additions and 82 deletions
|
@ -27,8 +27,8 @@ class ATISInformationProvider
|
|||
{
|
||||
public:
|
||||
virtual ~ATISInformationProvider() {}
|
||||
virtual bool isValid() = 0;
|
||||
virtual std::string airportId() = 0;
|
||||
virtual bool isValid() const = 0;
|
||||
virtual std::string airportId() const = 0;
|
||||
|
||||
static long makeAtisTime(int day, int hour, int minute)
|
||||
{
|
||||
|
@ -37,24 +37,24 @@ public:
|
|||
inline int getAtisTimeDay(long atisTime) { return atisTime / (100l * 100l); }
|
||||
inline int getAtisTimeHour(long atisTime) { return (atisTime % (100l * 100l)) / 100l; }
|
||||
inline int getAtisTimeMinute(long atisTime) { return atisTime % 100l; }
|
||||
virtual long getTime() = 0; // see makeAtisTime
|
||||
virtual long getTime() const = 0; // see makeAtisTime
|
||||
|
||||
virtual int getWindDeg() = 0;
|
||||
virtual int getWindMinDeg() = 0;
|
||||
virtual int getWindMaxDeg() = 0;
|
||||
virtual int getWindSpeedKt() = 0;
|
||||
virtual int getGustsKt() = 0;
|
||||
virtual int getQnh() = 0;
|
||||
virtual double getQnhInHg() = 0;
|
||||
virtual bool isCavok() = 0;
|
||||
virtual int getVisibilityMeters() = 0;
|
||||
virtual std::string getPhenomena() = 0;
|
||||
virtual int getWindDeg() const = 0;
|
||||
virtual int getWindMinDeg() const = 0;
|
||||
virtual int getWindMaxDeg() const = 0;
|
||||
virtual int getWindSpeedKt() const = 0;
|
||||
virtual int getGustsKt() const = 0;
|
||||
virtual int getQnh() const = 0;
|
||||
virtual double getQnhInHg() const = 0;
|
||||
virtual bool isCavok() const = 0;
|
||||
virtual int getVisibilityMeters() const = 0;
|
||||
virtual std::string getPhenomena() const = 0;
|
||||
|
||||
typedef std::map<int, std::string> CloudEntries;
|
||||
virtual CloudEntries getClouds() = 0;
|
||||
virtual int getTemperatureDeg() = 0;
|
||||
virtual int getDewpointDeg() = 0;
|
||||
virtual std::string getTrend() = 0;
|
||||
virtual int getTemperatureDeg() const = 0;
|
||||
virtual int getDewpointDeg() const = 0;
|
||||
virtual std::string getTrend() const = 0;
|
||||
};
|
||||
|
||||
class ATISEncoder : public ATCSpeech
|
||||
|
|
|
@ -48,24 +48,24 @@ CurrentWeatherATISInformationProvider::~CurrentWeatherATISInformationProvider()
|
|||
{
|
||||
}
|
||||
|
||||
bool CurrentWeatherATISInformationProvider::isValid()
|
||||
bool CurrentWeatherATISInformationProvider::isValid() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
string CurrentWeatherATISInformationProvider::airportId()
|
||||
string CurrentWeatherATISInformationProvider::airportId() const
|
||||
{
|
||||
return _airportId;
|
||||
}
|
||||
|
||||
long CurrentWeatherATISInformationProvider::getTime()
|
||||
long CurrentWeatherATISInformationProvider::getTime() const
|
||||
{
|
||||
int h = fgGetInt( "/sim/time/utc/hour", 12 );
|
||||
int m = 20 + fgGetInt( "/sim/time/utc/minute", 0 ) / 30 ; // fake twice per hour
|
||||
return makeAtisTime( 0, h, m );
|
||||
}
|
||||
|
||||
int CurrentWeatherATISInformationProvider::getWindDeg()
|
||||
int CurrentWeatherATISInformationProvider::getWindDeg() const
|
||||
{
|
||||
// round to 10 degs
|
||||
int i = 5 + roundToInt( _environment->getNode("config/boundary/entry[0]/wind-from-heading-deg",true) );
|
||||
|
@ -73,39 +73,39 @@ int CurrentWeatherATISInformationProvider::getWindDeg()
|
|||
return i*10;
|
||||
}
|
||||
|
||||
int CurrentWeatherATISInformationProvider::getWindSpeedKt()
|
||||
int CurrentWeatherATISInformationProvider::getWindSpeedKt() const
|
||||
{
|
||||
return roundToInt( _environment, "config/boundary/entry[0]/wind-speed-kt" );
|
||||
}
|
||||
|
||||
int CurrentWeatherATISInformationProvider::getGustsKt()
|
||||
int CurrentWeatherATISInformationProvider::getGustsKt() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int CurrentWeatherATISInformationProvider::getQnh()
|
||||
int CurrentWeatherATISInformationProvider::getQnh() const
|
||||
{
|
||||
// TODO: Calculate QNH correctly from environment
|
||||
return roundToInt( _environment->getNode("pressure-sea-level-inhg",true)->getDoubleValue() * SG_INHG_TO_PA / 100 );
|
||||
}
|
||||
|
||||
double CurrentWeatherATISInformationProvider::getQnhInHg()
|
||||
double CurrentWeatherATISInformationProvider::getQnhInHg() const
|
||||
{
|
||||
// TODO: Calculate QNH correctly from environment
|
||||
return _environment->getNode("pressure-sea-level-inhg",true)->getDoubleValue();
|
||||
}
|
||||
|
||||
bool CurrentWeatherATISInformationProvider::isCavok()
|
||||
bool CurrentWeatherATISInformationProvider::isCavok() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
int CurrentWeatherATISInformationProvider::getVisibilityMeters()
|
||||
int CurrentWeatherATISInformationProvider::getVisibilityMeters() const
|
||||
{
|
||||
return roundToInt( _environment, "ground-visibility-m" );
|
||||
}
|
||||
|
||||
string CurrentWeatherATISInformationProvider::getPhenomena()
|
||||
string CurrentWeatherATISInformationProvider::getPhenomena() const
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
@ -128,18 +128,17 @@ ATISInformationProvider::CloudEntries CurrentWeatherATISInformationProvider::get
|
|||
return cloudEntries;
|
||||
}
|
||||
|
||||
int CurrentWeatherATISInformationProvider::getTemperatureDeg()
|
||||
int CurrentWeatherATISInformationProvider::getTemperatureDeg() const
|
||||
{
|
||||
return roundToInt( _environment, "temperature-sea-level-degc" );
|
||||
}
|
||||
|
||||
int CurrentWeatherATISInformationProvider::getDewpointDeg()
|
||||
int CurrentWeatherATISInformationProvider::getDewpointDeg() const
|
||||
{
|
||||
return roundToInt( _environment, "dewpoint-sea-level-degc" );
|
||||
}
|
||||
|
||||
string CurrentWeatherATISInformationProvider::getTrend()
|
||||
string CurrentWeatherATISInformationProvider::getTrend() const
|
||||
{
|
||||
return "nosig";
|
||||
}
|
||||
|
||||
|
|
|
@ -28,27 +28,28 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
class CurrentWeatherATISInformationProvider : public ATISInformationProvider
|
||||
{
|
||||
public:
|
||||
CurrentWeatherATISInformationProvider( const std::string & airportId );
|
||||
explicit CurrentWeatherATISInformationProvider( const std::string & airportId );
|
||||
virtual ~CurrentWeatherATISInformationProvider();
|
||||
|
||||
protected:
|
||||
virtual bool isValid();
|
||||
virtual std::string airportId();
|
||||
virtual long getTime();
|
||||
virtual int getWindDeg();
|
||||
virtual int getWindMinDeg() { return getWindDeg(); }
|
||||
virtual int getWindMaxDeg() { return getWindDeg(); }
|
||||
virtual int getWindSpeedKt();
|
||||
virtual int getGustsKt();
|
||||
virtual int getQnh();
|
||||
virtual double getQnhInHg();
|
||||
virtual bool isCavok();
|
||||
virtual int getVisibilityMeters();
|
||||
virtual std::string getPhenomena();
|
||||
virtual bool isValid() const override;
|
||||
virtual std::string airportId() const override;
|
||||
virtual long getTime() const override;
|
||||
virtual int getWindDeg() const override;
|
||||
virtual int getWindMinDeg() const override { return getWindDeg(); }
|
||||
virtual int getWindMaxDeg() const override { return getWindDeg(); }
|
||||
virtual int getWindSpeedKt() const override;
|
||||
virtual int getGustsKt() const override;
|
||||
virtual int getQnh() const override;
|
||||
virtual double getQnhInHg() const override;
|
||||
virtual bool isCavok() const override;
|
||||
virtual int getVisibilityMeters() const override;
|
||||
virtual std::string getPhenomena() const override;
|
||||
virtual CloudEntries getClouds();
|
||||
virtual int getTemperatureDeg();
|
||||
virtual int getDewpointDeg();
|
||||
virtual std::string getTrend();
|
||||
virtual int getTemperatureDeg() const override;
|
||||
virtual int getDewpointDeg() const override;
|
||||
virtual std::string getTrend() const override;
|
||||
|
||||
private:
|
||||
std::string _airportId;
|
||||
SGPropertyNode_ptr _environment;
|
||||
|
|
|
@ -32,67 +32,67 @@ MetarPropertiesATISInformationProvider::~MetarPropertiesATISInformationProvider(
|
|||
{
|
||||
}
|
||||
|
||||
bool MetarPropertiesATISInformationProvider::isValid()
|
||||
bool MetarPropertiesATISInformationProvider::isValid() const
|
||||
{
|
||||
return _metar->getBoolValue( "valid", false );
|
||||
}
|
||||
|
||||
string MetarPropertiesATISInformationProvider::airportId()
|
||||
string MetarPropertiesATISInformationProvider::airportId() const
|
||||
{
|
||||
return _metar->getStringValue( "station-id", "xxxx" );
|
||||
}
|
||||
|
||||
long MetarPropertiesATISInformationProvider::getTime()
|
||||
long MetarPropertiesATISInformationProvider::getTime() const
|
||||
{
|
||||
return makeAtisTime( 0,
|
||||
_metar->getIntValue( "hour" ) % 24,
|
||||
_metar->getIntValue( "minute" ) % 60 );
|
||||
}
|
||||
|
||||
int MetarPropertiesATISInformationProvider::getWindDeg()
|
||||
int MetarPropertiesATISInformationProvider::getWindDeg() const
|
||||
{
|
||||
return _metar->getIntValue( "base-wind-dir-deg" );
|
||||
}
|
||||
|
||||
int MetarPropertiesATISInformationProvider::getWindMinDeg()
|
||||
int MetarPropertiesATISInformationProvider::getWindMinDeg() const
|
||||
{
|
||||
return _metar->getIntValue( "base-wind-range-from" );
|
||||
}
|
||||
int MetarPropertiesATISInformationProvider::getWindMaxDeg()
|
||||
int MetarPropertiesATISInformationProvider::getWindMaxDeg() const
|
||||
{
|
||||
return _metar->getIntValue( "base-wind-range-to" );
|
||||
}
|
||||
int MetarPropertiesATISInformationProvider::getWindSpeedKt()
|
||||
int MetarPropertiesATISInformationProvider::getWindSpeedKt() const
|
||||
{
|
||||
return _metar->getIntValue( "base-wind-speed-kt" );
|
||||
}
|
||||
|
||||
int MetarPropertiesATISInformationProvider::getGustsKt()
|
||||
int MetarPropertiesATISInformationProvider::getGustsKt() const
|
||||
{
|
||||
return _metar->getIntValue( "gust-wind-speed-kt" );
|
||||
}
|
||||
|
||||
int MetarPropertiesATISInformationProvider::getQnh()
|
||||
int MetarPropertiesATISInformationProvider::getQnh() const
|
||||
{
|
||||
return _metar->getDoubleValue("pressure-inhg") * SG_INHG_TO_PA / 100.0;
|
||||
}
|
||||
|
||||
double MetarPropertiesATISInformationProvider::getQnhInHg()
|
||||
double MetarPropertiesATISInformationProvider::getQnhInHg() const
|
||||
{
|
||||
return _metar->getDoubleValue("pressure-inhg");
|
||||
}
|
||||
|
||||
bool MetarPropertiesATISInformationProvider::isCavok()
|
||||
bool MetarPropertiesATISInformationProvider::isCavok() const
|
||||
{
|
||||
return _metar->getBoolValue( "cavok" );
|
||||
}
|
||||
|
||||
int MetarPropertiesATISInformationProvider::getVisibilityMeters()
|
||||
int MetarPropertiesATISInformationProvider::getVisibilityMeters() const
|
||||
{
|
||||
return _metar->getIntValue( "min-visibility-m" );
|
||||
}
|
||||
|
||||
string MetarPropertiesATISInformationProvider::getPhenomena()
|
||||
string MetarPropertiesATISInformationProvider::getPhenomena() const
|
||||
{
|
||||
return _metar->getStringValue( "decoded" );
|
||||
}
|
||||
|
@ -102,6 +102,7 @@ ATISInformationProvider::CloudEntries MetarPropertiesATISInformationProvider::ge
|
|||
CloudEntries reply;
|
||||
|
||||
using simgear::PropertyList;
|
||||
|
||||
PropertyList layers = _metar->getNode("clouds", true )->getChildren("layer");
|
||||
for( PropertyList::iterator it = layers.begin(); it != layers.end(); ++it ) {
|
||||
std::string coverage = (*it)->getStringValue("coverage", "clear");
|
||||
|
@ -110,21 +111,21 @@ ATISInformationProvider::CloudEntries MetarPropertiesATISInformationProvider::ge
|
|||
reply[elevation] = coverage;
|
||||
}
|
||||
}
|
||||
|
||||
return reply;
|
||||
}
|
||||
|
||||
int MetarPropertiesATISInformationProvider::getTemperatureDeg()
|
||||
int MetarPropertiesATISInformationProvider::getTemperatureDeg() const
|
||||
{
|
||||
return _metar->getIntValue( "temperature-degc" );
|
||||
}
|
||||
|
||||
int MetarPropertiesATISInformationProvider::getDewpointDeg()
|
||||
int MetarPropertiesATISInformationProvider::getDewpointDeg() const
|
||||
{
|
||||
return _metar->getIntValue( "dewpoint-degc" );
|
||||
}
|
||||
|
||||
string MetarPropertiesATISInformationProvider::getTrend()
|
||||
string MetarPropertiesATISInformationProvider::getTrend() const
|
||||
{
|
||||
return "nosig";
|
||||
}
|
||||
|
||||
|
|
|
@ -30,27 +30,28 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
class MetarPropertiesATISInformationProvider : public ATISInformationProvider
|
||||
{
|
||||
public:
|
||||
MetarPropertiesATISInformationProvider( SGPropertyNode_ptr metar );
|
||||
explicit MetarPropertiesATISInformationProvider( SGPropertyNode_ptr metar );
|
||||
virtual ~MetarPropertiesATISInformationProvider();
|
||||
|
||||
protected:
|
||||
virtual bool isValid();
|
||||
virtual std::string airportId();
|
||||
virtual long getTime();
|
||||
virtual int getWindDeg();
|
||||
virtual int getWindMinDeg();
|
||||
virtual int getWindMaxDeg();
|
||||
virtual int getWindSpeedKt();
|
||||
virtual int getGustsKt();
|
||||
virtual int getQnh();
|
||||
virtual double getQnhInHg();
|
||||
virtual bool isCavok();
|
||||
virtual int getVisibilityMeters();
|
||||
virtual std::string getPhenomena();
|
||||
virtual bool isValid() const override;
|
||||
virtual std::string airportId() const override;
|
||||
virtual long getTime() const override;
|
||||
virtual int getWindDeg() const override;
|
||||
virtual int getWindMinDeg() const override;
|
||||
virtual int getWindMaxDeg() const override;
|
||||
virtual int getWindSpeedKt() const override;
|
||||
virtual int getGustsKt() const override;
|
||||
virtual int getQnh() const override;
|
||||
virtual double getQnhInHg() const override;
|
||||
virtual bool isCavok() const override;
|
||||
virtual int getVisibilityMeters() const override;
|
||||
virtual std::string getPhenomena() const override;
|
||||
virtual CloudEntries getClouds();
|
||||
virtual int getTemperatureDeg();
|
||||
virtual int getDewpointDeg();
|
||||
virtual std::string getTrend();
|
||||
virtual int getTemperatureDeg() const override;
|
||||
virtual int getDewpointDeg() const override;
|
||||
virtual std::string getTrend() const override;
|
||||
|
||||
private:
|
||||
SGPropertyNode_ptr _metar;
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue