#include <config.h>
#endif
-#ifdef HAVE_WINDOWS_H
-#include <windows.h>
-#endif
-
#include <simgear/math/sg_random.h>
#include <simgear/timing/sg_time.hxx>
+#include <simgear/timing/lowleveltime.h>
+
#include <Main/fg_props.hxx>
#include "fgmetar.hxx"
-FGMetar::FGMetar(const string& icao, const string& proxy, const string& port, const string& auth) :
- SGMetar(icao, proxy, port, auth, _rq_time = globals->get_time_params()->get_cur_time()),
+FGMetar::FGMetar(const string& icao) :
+ SGMetar(icao),
_snow_cover(false)
{
int i;
_min_visibility.set(12000.0);
vector<SGMetarCloud> cv = _clouds;;
- if (!cv.size()) {
+ if (cv.empty()) {
SGMetarCloud cl;
- cl.set(5500 * SG_FEET_TO_METER, 2);
+ cl.set(5500 * SG_FEET_TO_METER, SGMetarCloud::COVERAGE_SCATTERED);
_clouds.push_back(cl);
}
}
_wind_range_from = _wind_range_to = _wind_dir;
}
+ if (_wind_speed == SGMetarNaN)
+ _wind_speed = 0.0;
if (_gust_speed == SGMetarNaN)
_gust_speed = 0.0;
// clouds
vector<SGMetarCloud> cv = _clouds;
- vector<SGMetarCloud>::iterator cloud;
+ vector<SGMetarCloud>::iterator cloud, cv_end = cv.end();
- for (i = 0, cloud = cv.begin(); cloud != cv.end(); cloud++, i++) {
- int cov = cloud->getCoverage();
- if (cov == -1)
- cov = 0;
+ for (i = 0, cloud = cv.begin(); cloud != cv_end; ++cloud, i++) {
+ SGMetarCloud::Coverage cov = cloud->getCoverage();
+ if (cov == SGMetarCloud::COVERAGE_NIL)
+ cov = SGMetarCloud::COVERAGE_CLEAR;
double alt = cloud->getAltitude_ft();
if (alt == SGMetarNaN)
// snow cover
map<string, SGMetarRunway> rm = getRunways();
- map<string, SGMetarRunway>::const_iterator runway;
- for (runway = rm.begin(); runway != rm.end(); runway++) {
+ map<string, SGMetarRunway>::const_iterator runway, rm_end = rm.end();
+ for (runway = rm.begin(); runway != rm_end; ++runway) {
SGMetarRunway rwy = runway->second;
if (rwy.getDeposit() >= 3 ) {
_snow_cover = true;
_time = sgTimeGetGMT(_year - 1900, _month - 1, _day, _hour, _minute, 0);
- SG_LOG(SG_GENERAL, SG_INFO, _data);
+ SG_LOG(SG_ENVIRONMENT, SG_INFO, _data);
if (_x_proxy)
- SG_LOG(SG_GENERAL, SG_INFO, "METAR from proxy");
+ SG_LOG(SG_ENVIRONMENT, SG_INFO, "METAR from proxy");
else
- SG_LOG(SG_GENERAL, SG_INFO, "METAR from weather.noaa.gov");
+ SG_LOG(SG_ENVIRONMENT, SG_INFO, "METAR from weather.noaa.gov");
}
long FGMetar::getAge_min() const
{
- time_t now = _x_proxy ? _rq_time : time(0);
+ time_t now = _x_proxy ? _rq_time : sgGMTime();
return (now - _time) / 60;
}