1
0
Fork 0

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.
This commit is contained in:
Durk Talsma 2011-08-10 21:39:28 +02:00
parent b603344d69
commit 552aa5419f
5 changed files with 78 additions and 12 deletions

View file

@ -570,7 +570,7 @@ void FGAIAircraft::scheduleForATCTowerDepartureControl(int state) {
towerController->announcePosition(getID(), fp, fp->getCurrentWaypoint()->getRouteIndex(), towerController->announcePosition(getID(), fp, fp->getCurrentWaypoint()->getRouteIndex(),
_getLatitude(), _getLongitude(), hdg, speed, altitude_ft, _getLatitude(), _getLongitude(), hdg, speed, altitude_ft,
trafficRef->getRadius(), leg, this); 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(); fp->incrementLeg();
} }
if (prev->contains(string("DepartureHold"))) { if (prev->contains(string("DepartureHold"))) {
cerr << "Passing point DepartureHold" << endl; //cerr << "Passing point DepartureHold" << endl;
scheduleForATCTowerDepartureControl(2); scheduleForATCTowerDepartureControl(2);
} }

View file

@ -36,7 +36,7 @@
FGATCDialogNew *currentATCDialog; FGATCDialogNew *currentATCDialog;
static bool doATCDialog(const SGPropertyNode* arg) { static bool doATCDialog(const SGPropertyNode* arg) {
cerr << "Running doATCDialog" << endl; //cerr << "Running doATCDialog" << endl;
currentATCDialog->PopupDialog(); currentATCDialog->PopupDialog();
return(true); return(true);
} }

View file

@ -502,10 +502,12 @@ void FGATCController::transmit(FGTrafficRecord * rec, AtcMsgId msgId,
string sender, receiver; string sender, receiver;
int stationFreq = 0; int stationFreq = 0;
int taxiFreq = 0; int taxiFreq = 0;
int towerFreq = 0;
int freqId = 0; int freqId = 0;
string atisInformation; string atisInformation;
string text; string text;
string taxiFreqStr; string taxiFreqStr;
string towerFreqStr;
double heading = 0; double heading = 0;
string activeRunway; string activeRunway;
string fltType; string fltType;
@ -534,6 +536,9 @@ void FGATCController::transmit(FGTrafficRecord * rec, AtcMsgId msgId,
taxiFreq = taxiFreq =
rec->getAircraft()->getTrafficRef()->getDepartureAirport()-> rec->getAircraft()->getTrafficRef()->getDepartureAirport()->
getDynamics()->getGroundFrequency(2); getDynamics()->getGroundFrequency(2);
towerFreq =
rec->getAircraft()->getTrafficRef()->getDepartureAirport()->
getDynamics()->getTowerFrequency(2);
receiver = receiver =
rec->getAircraft()->getTrafficRef()->getDepartureAirport()-> rec->getAircraft()->getTrafficRef()->getDepartureAirport()->
getName() + "-Ground"; getName() + "-Ground";
@ -673,7 +678,37 @@ void FGATCController::transmit(FGTrafficRecord * rec, AtcMsgId msgId,
case MSG_ACKNOWLEDGE_RESUME_TAXI: case MSG_ACKNOWLEDGE_RESUME_TAXI:
text = receiver + ". Continuing Taxi. " + sender; text = receiver + ". Continuing Taxi. " + sender;
break; 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: default:
//text = "test3";
text = text + sender + ". Transmitting unknown Message"; text = text + sender + ". Transmitting unknown Message";
break; break;
} }
@ -795,7 +830,7 @@ void FGTowerController::announcePosition(int id,
rwy->addToDepartureCue(ref); 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 { } else {
i->setPositionAndHeading(lat, lon, heading, speed, alt); i->setPositionAndHeading(lat, lon, heading, speed, alt);
} }

View file

@ -273,7 +273,13 @@ public:
MSG_HOLD_POSITION, MSG_HOLD_POSITION,
MSG_ACKNOWLEDGE_HOLD_POSITION, MSG_ACKNOWLEDGE_HOLD_POSITION,
MSG_RESUME_TAXI, 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 { typedef enum {
ATC_AIR_TO_GROUND, ATC_AIR_TO_GROUND,
ATC_GROUND_TO_AIR } AtcMsgDir; ATC_GROUND_TO_AIR } AtcMsgDir;

View file

@ -541,8 +541,12 @@ void FGGroundNetwork::signOff(int id)
* 1 = "Acknowledge "Hold position * 1 = "Acknowledge "Hold position
* 2 = "Acknowledge "Resume taxi". * 2 = "Acknowledge "Resume taxi".
* 3 = "Issue TaxiClearance" * 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, bool FGGroundNetwork::checkTransmissionState(int minState, int maxState, TrafficVectorIterator i, time_t now, AtcMsgId msgId,
AtcMsgDir msgDir) AtcMsgDir msgDir)
@ -556,7 +560,7 @@ bool FGGroundNetwork::checkTransmissionState(int minState, int maxState, Traffic
if (n == 0) { if (n == 0) {
trans_num->setIntValue(-1); trans_num->setIntValue(-1);
// PopupCallback(n); // PopupCallback(n);
cerr << "Selected transmission message " << n << endl; //cerr << "Selected transmission message " << n << endl;
FGATCManager *atc = (FGATCManager*) globals->get_subsystem("atc"); FGATCManager *atc = (FGATCManager*) globals->get_subsystem("atc");
atc->getATCDialog()->removeEntry(1); atc->getATCDialog()->removeEntry(1);
} else { } 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 (current->getState() == 0) {
if ((origStatus != currStatus) && available) { 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 if (currStatus == true) { // No has a hold short instruction
transmit(&(*current), MSG_HOLD_POSITION, ATC_GROUND_TO_AIR, true); 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); current->setState(1);
} else { } else {
transmit(&(*current), MSG_RESUME_TAXI, ATC_GROUND_TO_AIR, true); 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); current->setState(2);
} }
lastTransmission = now; lastTransmission = now;
@ -930,7 +933,13 @@ void FGGroundNetwork::checkHoldPosition(int id, double lat,
// So set back to original status // So set back to original status
//cerr << "Current state " << current->getState() << endl; //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(); //int state = current->getState();
if (checkTransmissionState(1,1, current, now, MSG_ACKNOWLEDGE_HOLD_POSITION, ATC_AIR_TO_GROUND)) { if (checkTransmissionState(1,1, current, now, MSG_ACKNOWLEDGE_HOLD_POSITION, ATC_AIR_TO_GROUND)) {
current->setState(0); current->setState(0);
@ -940,6 +949,22 @@ void FGGroundNetwork::checkHoldPosition(int id, double lat,
current->setState(0); current->setState(0);
current->setHoldPosition(false); 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);
} }
/** /**