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:
parent
b603344d69
commit
552aa5419f
5 changed files with 78 additions and 12 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue