From 2cb67b06b739d992b06b4b2d0a880b06775fdfd7 Mon Sep 17 00:00:00 2001 From: Dave Luff Date: Mon, 3 Jan 2011 01:19:01 +0000 Subject: [PATCH] ATIS fixes from John Denker --- src/ATCDCL/atis.cxx | 25 +++++++++++++++++-------- src/ATCDCL/atis_lexicon.hxx | 3 +++ src/ATCDCL/atis_remap.hxx | 1 + 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/ATCDCL/atis.cxx b/src/ATCDCL/atis.cxx index 26e7674a8..dfc1381c6 100644 --- a/src/ATCDCL/atis.cxx +++ b/src/ATCDCL/atis.cxx @@ -216,9 +216,12 @@ int FGATIS::GenTransmission(const int regen, const int special) { using namespace lex; string BRK = ".\n"; + string PAUSE = " / "; double tstamp = atof(fgGetString("sim/time/elapsed-sec")); - int interval = ATIS ? ATIS_interval : 2*minute; // AWOS updated frequently + int interval = _type == ATIS ? + ATIS_interval // ATIS updated hourly + : 2*minute; // AWOS updated more frequently int sequence = current_commlist->GetAtisSequence(ident, tstamp, interval, special); if (!regen && sequence > LTRS) { @@ -320,6 +323,9 @@ int FGATIS::GenTransmission(const int regen, const int special) { transmission += " " + at + " " + ConvertNumToSpokenDigits(buf) + BRK; } +// Sounds better with a pause in there: + transmission += PAUSE; + int did_some(0); int did_ceiling(0); @@ -431,21 +437,24 @@ int FGATIS::GenTransmission(const int regen, const int special) { transmission += ConvertNumToSpokenDigits(buf) + BRK; if (_type == ATIS /* as opposed to AWOS */) { - const FGAirport* apt = fgFindAirportID(ident); - assert(apt); - string rwy_no = apt->getActiveRunwayForUsage()->ident(); + const FGAirport* apt = fgFindAirportID(ident); + if (apt) { + string rwy_no = apt->getActiveRunwayForUsage()->ident(); if(rwy_no != "NN") { transmission += Landing_and_departing_runway + " "; transmission += ConvertRwyNumToSpokenString(rwy_no) + BRK; +#ifdef ATIS_TEST if (msg_OK) { msg_time = cur_time; - //cout << "In atis.cxx, r.rwy_no: " << rwy_no - // << " wind_dir: " << wind_dir << endl; + cout << "In atis.cxx, r.rwy_no: " << rwy_no + << " wind_dir: " << wind_dir << endl; } +#endif + } } transmission += On_initial_contact_advise_you_have_information + " "; transmission += phonetic_seq_string; - transmission += "... " + BRK; + transmission += "... " + BRK + PAUSE + PAUSE; } #ifdef ATIS_TEST cout << "**** ATIS active on:"; @@ -474,7 +483,7 @@ int FGATIS::GenTransmission(const int regen, const int special) { for (size_t where;;) { where = transmission.find_first_of(":."); if (where == string::npos) break; - transmission.replace(where, 1, " /_ "); + transmission.replace(where, 1, PAUSE); } return 1; } diff --git a/src/ATCDCL/atis_lexicon.hxx b/src/ATCDCL/atis_lexicon.hxx index 2284f1f95..37c2a03df 100644 --- a/src/ATCDCL/atis_lexicon.hxx +++ b/src/ATCDCL/atis_lexicon.hxx @@ -34,9 +34,12 @@ Q(hundred) Q(zero) Q(Temperature) Q(clear) +Q(isolated) +Q(few) Q(scattered) Q(broken) Q(overcast) +Q(thin) Q(Sky_condition) Q(Ceiling) Q(minus) diff --git a/src/ATCDCL/atis_remap.hxx b/src/ATCDCL/atis_remap.hxx index f679b70b9..c2341a2f0 100644 --- a/src/ATCDCL/atis_remap.hxx +++ b/src/ATCDCL/atis_remap.hxx @@ -3,6 +3,7 @@ REMAP(Rgnl, Regional) REMAP(Co, County) REMAP(Muni, Municipal) REMAP(Mem, Memorial) +REMAP(Meml, Memorial) REMAP(Apt, Airport) REMAP(Arpt, Airport) REMAP(Fld, Field)