X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2FATCDCL%2FATC.cxx;h=776ec34419e1a433d1aba6fbf8e6def7c0ebec3d;hb=1c5eb0fb3e66c5c3bcc021310c97ea6d208c4b84;hp=68963fe929f7e9ff571c5e7641f89e76ff75cc19;hpb=cf9a520a9f404e66cef7fd1955a62127e6d31f93;p=flightgear.git diff --git a/src/ATCDCL/ATC.cxx b/src/ATCDCL/ATC.cxx index 68963fe92..776ec3441 100644 --- a/src/ATCDCL/ATC.cxx +++ b/src/ATCDCL/ATC.cxx @@ -31,8 +31,8 @@ #include
#include
- - +#include +#include FGATC::FGATC() : _playing(false), @@ -51,7 +51,6 @@ FGATC::FGATC() : pending_transmission(""), _timeout(0), _pending(false), - _callback_code(0), _transmit(false), _transmitting(false), _counter(0.0), @@ -59,6 +58,7 @@ FGATC::FGATC() : { SGSoundMgr *smgr = globals->get_soundmgr(); _sgr = smgr->find("atc", true); + _sgr->tie_to_listener(); _volume = fgGetNode("/sim/sound/atc/volume", true); _enabled = fgGetNode("/sim/sound/atc/enabled", true); @@ -133,11 +133,6 @@ void FGATC::Update(double dt) { //Render(pending_transmission, ident, false); Render(pending_transmission); } - // Run the callback regardless of whether on same freq as user or not. - //cout << "_callback_code = " << _callback_code << '\n'; - if(_callback_code) { - ProcessCallback(_callback_code); - } _transmit = false; _transmitting = true; } else if(_transmitting) { @@ -186,51 +181,20 @@ void FGATC::NotifyTransmissionFinished(const string& rid) { } } -void FGATC::Transmit(int callback_code) { - SG_LOG(SG_ATC, SG_INFO, "Transmit called by " << ident << " " << _type << ", msg = " << pending_transmission); - _pending = true; - _callback_code = callback_code; - _timeout = 0.0; -} - -void FGATC::ConditionalTransmit(double timeout, int callback_code) { - SG_LOG(SG_ATC, SG_INFO, "Timed transmit called by " << ident << " " << _type << ", msg = " << pending_transmission); - _pending = true; - _callback_code = callback_code; - _timeout = timeout; -} - -void FGATC::ImmediateTransmit(int callback_code) { - SG_LOG(SG_ATC, SG_INFO, "Immediate transmit called by " << ident << " " << _type << ", msg = " << pending_transmission); - if(_display) { - //Render(pending_transmission, ident, false); - Render(pending_transmission); - // At the moment Render doesn't work except for ATIS - } - if(callback_code) { - ProcessCallback(callback_code); - } -} - -// Derived classes should override this. -void FGATC::ProcessCallback(int code) { -} - -void FGATC::AddPlane(const string& pid) { -} - -int FGATC::RemovePlane() { - return 0; -} - -void FGATC::SetData(ATCData* d) { - _type = d->type; - _geod = d->geod; - _cart = d->cart; - range = d->range; - ident = d->ident; - name = d->name; - freq = d->freq; +void FGATC::SetStation(flightgear::CommStation* sta) { + switch (sta->type()) { + case FGPositioned::FREQ_ATIS: _type = ATIS; break; + case FGPositioned::FREQ_AWOS: _type = AWOS; break; + default: + throw sg_exception("unsupported comm station type"); + } + + _geod = sta->geod(); + _cart = sta->cart(); + range = sta->rangeNm(); + ident = sta->airport()->ident(); + name = sta->airport()->name(); + freq = sta->freqKHz(); } // Render a transmission @@ -262,7 +226,7 @@ void FGATC::Render(string& msg, const float volume, _sgr->add(simple, refname); _sgr->play(refname, repeating); } catch ( sg_io_exception &e ) { - SG_LOG(SG_GENERAL, SG_ALERT, e.getFormattedMessage()); + SG_LOG(SG_ATC, SG_ALERT, e.getFormattedMessage()); } } } @@ -336,7 +300,7 @@ std::istream& operator >> ( std::istream& fin, ATCData& a ) a.type = INVALID; return fin >> skipeol; default: - SG_LOG(SG_GENERAL, SG_ALERT, "Warning - unknown type \'" << tp << "\' found whilst reading ATC frequency data!\n"); + SG_LOG(SG_ATC, SG_ALERT, "Warning - unknown type \'" << tp << "\' found whilst reading ATC frequency data!\n"); a.type = INVALID; return fin >> skipeol; }