From: Durk Talsma Date: Wed, 10 Aug 2011 19:39:28 +0000 (+0200) Subject: Some fine tuning of the ATC messages related to ground to tower transfer. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=552aa5419f8b04d353d5504f9f01e197857da4ad;p=flightgear.git Some fine tuning of the ATC messages related to ground to tower transfer. Removal of obsolete debugging messages. Let's hope I caught them all. --- diff --git a/src/AIModel/AIAircraft.cxx b/src/AIModel/AIAircraft.cxx index e5c37c8c8..3791585ec 100644 --- a/src/AIModel/AIAircraft.cxx +++ b/src/AIModel/AIAircraft.cxx @@ -570,7 +570,7 @@ void FGAIAircraft::scheduleForATCTowerDepartureControl(int state) { towerController->announcePosition(getID(), fp, fp->getCurrentWaypoint()->getRouteIndex(), _getLatitude(), _getLongitude(), hdg, speed, altitude_ft, trafficRef->getRadius(), leg, this); - cerr << "Scheduling " << trafficRef->getCallSign() << " for takeoff " << endl; + //cerr << "Scheduling " << trafficRef->getCallSign() << " for takeoff " << endl; } } } @@ -815,7 +815,7 @@ bool FGAIAircraft::handleAirportEndPoints(FGAIWaypoint* prev, time_t now) { fp->incrementLeg(); } if (prev->contains(string("DepartureHold"))) { - cerr << "Passing point DepartureHold" << endl; + //cerr << "Passing point DepartureHold" << endl; scheduleForATCTowerDepartureControl(2); } diff --git a/src/ATC/atcdialog.cxx b/src/ATC/atcdialog.cxx index 41de936af..eb9533fbb 100644 --- a/src/ATC/atcdialog.cxx +++ b/src/ATC/atcdialog.cxx @@ -36,7 +36,7 @@ FGATCDialogNew *currentATCDialog; static bool doATCDialog(const SGPropertyNode* arg) { - cerr << "Running doATCDialog" << endl; + //cerr << "Running doATCDialog" << endl; currentATCDialog->PopupDialog(); return(true); } diff --git a/src/ATC/trafficcontrol.cxx b/src/ATC/trafficcontrol.cxx index b80fcdefa..8025fe6f7 100644 --- a/src/ATC/trafficcontrol.cxx +++ b/src/ATC/trafficcontrol.cxx @@ -502,10 +502,12 @@ void FGATCController::transmit(FGTrafficRecord * rec, AtcMsgId msgId, string sender, receiver; int stationFreq = 0; int taxiFreq = 0; + int towerFreq = 0; int freqId = 0; string atisInformation; string text; string taxiFreqStr; + string towerFreqStr; double heading = 0; string activeRunway; string fltType; @@ -534,6 +536,9 @@ void FGATCController::transmit(FGTrafficRecord * rec, AtcMsgId msgId, taxiFreq = rec->getAircraft()->getTrafficRef()->getDepartureAirport()-> getDynamics()->getGroundFrequency(2); + towerFreq = + rec->getAircraft()->getTrafficRef()->getDepartureAirport()-> + getDynamics()->getTowerFrequency(2); receiver = rec->getAircraft()->getTrafficRef()->getDepartureAirport()-> getName() + "-Ground"; @@ -673,7 +678,37 @@ void FGATCController::transmit(FGTrafficRecord * rec, AtcMsgId msgId, case MSG_ACKNOWLEDGE_RESUME_TAXI: text = receiver + ". Continuing Taxi. " + sender; break; + case MSG_REPORT_RUNWAY_HOLD_SHORT: + activeRunway = rec->getAircraft()->GetFlightPlan()->getRunway(); + //activeRunway = "test"; + text = receiver + ". Holding short runway " + + activeRunway + + ". " + sender; + //text = "test1"; + //cerr << "1 Currently at leg " << rec->getLeg() << endl; + break; + case MSG_ACKNOWLEDGE_REPORT_RUNWAY_HOLD_SHORT: + activeRunway = rec->getAircraft()->GetFlightPlan()->getRunway(); + text = receiver + "Roger. Holding short runway " + // + activeRunway + + ". " + sender; + //text = "test2"; + //cerr << "2 Currently at leg " << rec->getLeg() << endl; + break; + case MSG_SWITCH_TOWER_FREQUENCY: + towerFreqStr = formatATCFrequency3_2(towerFreq); + text = receiver + "Contact Tower at " + towerFreqStr + ". " + sender; + //text = "test3"; + //cerr << "3 Currently at leg " << rec->getLeg() << endl; + break; + case MSG_ACKNOWLEDGE_SWITCH_TOWER_FREQUENCY: + towerFreqStr = formatATCFrequency3_2(towerFreq); + text = receiver + "Roger, switching to tower at " + towerFreqStr + ". " + sender; + //text = "test4"; + //cerr << "4 Currently at leg " << rec->getLeg() << endl; + break; default: + //text = "test3"; text = text + sender + ". Transmitting unknown Message"; break; } @@ -795,7 +830,7 @@ void FGTowerController::announcePosition(int id, rwy->addToDepartureCue(ref); } - cerr << ref->getTrafficRef()->getCallSign() << " You are number " << rwy->getDepartureCueSize() << " for takeoff " << endl; + //cerr << ref->getTrafficRef()->getCallSign() << " You are number " << rwy->getDepartureCueSize() << " for takeoff " << endl; } else { i->setPositionAndHeading(lat, lon, heading, speed, alt); } diff --git a/src/ATC/trafficcontrol.hxx b/src/ATC/trafficcontrol.hxx index 98e85d220..62e87007e 100644 --- a/src/ATC/trafficcontrol.hxx +++ b/src/ATC/trafficcontrol.hxx @@ -273,7 +273,13 @@ public: MSG_HOLD_POSITION, MSG_ACKNOWLEDGE_HOLD_POSITION, MSG_RESUME_TAXI, - MSG_ACKNOWLEDGE_RESUME_TAXI } AtcMsgId; + MSG_ACKNOWLEDGE_RESUME_TAXI, + MSG_REPORT_RUNWAY_HOLD_SHORT, + MSG_ACKNOWLEDGE_REPORT_RUNWAY_HOLD_SHORT, + MSG_SWITCH_TOWER_FREQUENCY, + MSG_ACKNOWLEDGE_SWITCH_TOWER_FREQUENCY + } AtcMsgId; + typedef enum { ATC_AIR_TO_GROUND, ATC_GROUND_TO_AIR } AtcMsgDir; diff --git a/src/Airports/groundnetwork.cxx b/src/Airports/groundnetwork.cxx index 3cd3148e5..a642a7768 100644 --- a/src/Airports/groundnetwork.cxx +++ b/src/Airports/groundnetwork.cxx @@ -541,8 +541,12 @@ void FGGroundNetwork::signOff(int id) * 1 = "Acknowledge "Hold position * 2 = "Acknowledge "Resume taxi". * 3 = "Issue TaxiClearance" - * 4 = =Acknowledge Taxi Clearance" - * + * 4 = Acknowledge Taxi Clearance" + * 5 = Post acknowlegde taxiclearance: Start taxiing + * 6 = Report runway + * 7 = Acknowledge report runway + * 8 = Switch tower frequency + * 9 = Acknowledge switch tower frequency *************************************************************************************************************************/ bool FGGroundNetwork::checkTransmissionState(int minState, int maxState, TrafficVectorIterator i, time_t now, AtcMsgId msgId, AtcMsgDir msgDir) @@ -556,7 +560,7 @@ bool FGGroundNetwork::checkTransmissionState(int minState, int maxState, Traffic if (n == 0) { trans_num->setIntValue(-1); // PopupCallback(n); - cerr << "Selected transmission message " << n << endl; + //cerr << "Selected transmission message " << n << endl; FGATCManager *atc = (FGATCManager*) globals->get_subsystem("atc"); atc->getATCDialog()->removeEntry(1); } else { @@ -648,7 +652,6 @@ void FGGroundNetwork::updateAircraftInformation(int id, double lat, double lon, } } - } /** @@ -914,14 +917,14 @@ void FGGroundNetwork::checkHoldPosition(int id, double lat, } if (current->getState() == 0) { if ((origStatus != currStatus) && available) { - cerr << "Issueing hold short instrudtion " << currStatus << " " << available << endl; + //cerr << "Issueing hold short instrudtion " << currStatus << " " << available << endl; if (currStatus == true) { // No has a hold short instruction transmit(&(*current), MSG_HOLD_POSITION, ATC_GROUND_TO_AIR, true); - cerr << "Transmittin hold short instrudtion " << currStatus << " " << available << endl; + //cerr << "Transmittin hold short instrudtion " << currStatus << " " << available << endl; current->setState(1); } else { transmit(&(*current), MSG_RESUME_TAXI, ATC_GROUND_TO_AIR, true); - cerr << "Transmittig resume instrudtion " << currStatus << " " << available << endl; + //cerr << "Transmittig resume instrudtion " << currStatus << " " << available << endl; current->setState(2); } lastTransmission = now; @@ -930,7 +933,13 @@ void FGGroundNetwork::checkHoldPosition(int id, double lat, // So set back to original status //cerr << "Current state " << current->getState() << endl; } + } + // 6 = Report runway + // 7 = Acknowledge report runway + // 8 = Switch tower frequency + //9 = Acknowledge switch tower frequency + //int state = current->getState(); if (checkTransmissionState(1,1, current, now, MSG_ACKNOWLEDGE_HOLD_POSITION, ATC_AIR_TO_GROUND)) { current->setState(0); @@ -940,6 +949,22 @@ void FGGroundNetwork::checkHoldPosition(int id, double lat, current->setState(0); current->setHoldPosition(false); } + if (current->getAircraft()->getTakeOffStatus() && (current->getState() == 0)) { + //cerr << "Scheduling " << current->getAircraft()->getCallSign() << " for hold short" << endl; + current->setState(6); + } + if (checkTransmissionState(6,6, current, now, MSG_REPORT_RUNWAY_HOLD_SHORT, ATC_AIR_TO_GROUND)) { + } + if (checkTransmissionState(7,7, current, now, MSG_ACKNOWLEDGE_REPORT_RUNWAY_HOLD_SHORT, ATC_GROUND_TO_AIR)) { + } + if (checkTransmissionState(8,8, current, now, MSG_SWITCH_TOWER_FREQUENCY, ATC_GROUND_TO_AIR)) { + } + if (checkTransmissionState(9,9, current, now, MSG_ACKNOWLEDGE_SWITCH_TOWER_FREQUENCY, ATC_AIR_TO_GROUND)) { + } + + + + //current->setState(0); } /**