- update metar
git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@9212 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 7e1e17724c9a640efe3942d11cdb3126163b8635 Former-commit-id: 6f68334019d459740f64725a23b9b726f6567f70
This commit is contained in:
parent
42316114fa
commit
de7e4fafec
2 changed files with 64 additions and 3 deletions
|
@ -757,7 +757,7 @@ reTrackInitRealWeather(void)
|
|||
else
|
||||
trackLocal->airpressure = (tdble)(webMetar->getPressure_hPa());
|
||||
|
||||
trackLocal->airpressure = (tdble)(trackLocal->airpressure * 100);
|
||||
trackLocal->airpressure = (tdble)(trackLocal->airpressure);
|
||||
|
||||
if (webMetar->getDensity_C() == WebMetarNaN)
|
||||
trackLocal->airdensity = 1.219f;
|
||||
|
|
|
@ -1125,6 +1125,15 @@ bool ReWebMetar::scanPressure()
|
|||
char *m = _m;
|
||||
double factor;
|
||||
int press, i;
|
||||
bool unitProvided = true;
|
||||
bool valueProvided = true;
|
||||
//_pressure = 101300.0;
|
||||
|
||||
if (*m == '\0')
|
||||
{
|
||||
_pressure = 101300.0; // pressure not provided... assume standard pressure
|
||||
return true;
|
||||
}
|
||||
|
||||
if (*m == 'A')
|
||||
factor = 3386.388640341 / 100;
|
||||
|
@ -1139,7 +1148,59 @@ bool ReWebMetar::scanPressure()
|
|||
|
||||
press *= 100;
|
||||
|
||||
if (!strncmp(m, "//", 2)) // not spec compliant!
|
||||
if (*m == ' ') // ignore space
|
||||
m++;
|
||||
|
||||
if (!strncmp(m, "////", 4))
|
||||
{
|
||||
// sensor failure... assume standard pressure
|
||||
if (*(m - 1) == 'A')
|
||||
press = 2992;
|
||||
else
|
||||
press = 1013;
|
||||
|
||||
m += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!scanNumber(&m, &press, 2, 4))
|
||||
{
|
||||
valueProvided = false;
|
||||
|
||||
// sensor failure... assume standard pressure
|
||||
if (*(m - 1) == 'A')
|
||||
press = 2992;
|
||||
else
|
||||
press = 1013;
|
||||
}
|
||||
}
|
||||
|
||||
if (press < 100)
|
||||
{
|
||||
// 2-digit pressure may have further data following
|
||||
press *= 100;
|
||||
if (!strncmp(m, "//", 2)) // not spec compliant!
|
||||
m += 2;
|
||||
else if (scanNumber(&m, &i, 2))
|
||||
press += i;
|
||||
}
|
||||
|
||||
if (*m == ',' || *m == '=') // ignore trailing comma, equals
|
||||
m++;
|
||||
|
||||
if ((unitProvided || valueProvided) && !scanBoundary(&m))
|
||||
return false;
|
||||
|
||||
// derive unit when not explicitly provided
|
||||
if (!unitProvided)
|
||||
factor = (press > 2000 ? 3386.388640341 / 100.0 : 100.0);
|
||||
|
||||
_pressure = (press * factor);
|
||||
_m = m;
|
||||
|
||||
return true;
|
||||
|
||||
/*if (!strncmp(m, "//", 2)) // not spec compliant!
|
||||
m += 2;
|
||||
else if (scanNumber(&m, &i, 2))
|
||||
press += i;
|
||||
|
@ -1155,7 +1216,7 @@ bool ReWebMetar::scanPressure()
|
|||
GfLogDebug("Pressure = %.3f\n", _pressure);
|
||||
_grpcount++;
|
||||
|
||||
return true;
|
||||
return true;*/
|
||||
}
|
||||
|
||||
static const char *runway_deposit[] =
|
||||
|
|
Loading…
Reference in a new issue