1
0
Fork 0

Maintenance: ATIS Encoder and Information Providers

add const override to virtual functions.
explicit ctor.
This commit is contained in:
scttgs0 2023-05-25 00:18:04 -05:00
parent 2d3dfc2c0b
commit 3ddfff59da
5 changed files with 84 additions and 82 deletions

View file

@ -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

View file

@ -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";
}

View file

@ -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;

View file

@ -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";
}

View file

@ -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;
};