Allow the AI Traffic controller to set a transponder code. This code is
used in ATC chatter, and writted to the property, so it can -in principle- be picked up by the radar.
This commit is contained in:
parent
b07eec93f1
commit
c478cdd35f
4 changed files with 34 additions and 2 deletions
|
@ -113,6 +113,9 @@ void FGAIAircraft::bind() {
|
|||
props->tie("controls/gear/gear-down",
|
||||
SGRawValueMethods<FGAIAircraft,bool>(*this,
|
||||
&FGAIAircraft::_getGearDown));
|
||||
props->tie("transponder-id",
|
||||
SGRawValueMethods<FGAIAircraft,const char*>(*this,
|
||||
&FGAIAircraft::_getTransponderCode));
|
||||
}
|
||||
|
||||
|
||||
|
@ -120,6 +123,7 @@ void FGAIAircraft::unbind() {
|
|||
FGAIBase::unbind();
|
||||
|
||||
props->untie("controls/gear/gear-down");
|
||||
props->untie("transponder-id");
|
||||
}
|
||||
|
||||
|
||||
|
@ -343,6 +347,11 @@ bool FGAIAircraft::_getGearDown() const {
|
|||
}
|
||||
|
||||
|
||||
const char * FGAIAircraft::_getTransponderCode() const {
|
||||
return transponderCode.c_str();
|
||||
}
|
||||
|
||||
|
||||
bool FGAIAircraft::loadNextLeg() {
|
||||
|
||||
int leg;
|
||||
|
|
|
@ -75,6 +75,9 @@ public:
|
|||
|
||||
virtual const char* getTypeString(void) const { return "aircraft"; }
|
||||
|
||||
string GetTransponderCode() { return transponderCode; };
|
||||
void SetTransponderCode(string tc) { transponderCode = tc;};
|
||||
|
||||
// included as performance data needs them, who else?
|
||||
inline PerformanceData* getPerformance() { return _performance; };
|
||||
inline bool onGround() const { return no_roll; };
|
||||
|
@ -133,6 +136,7 @@ private:
|
|||
|
||||
string acType;
|
||||
string company;
|
||||
string transponderCode;
|
||||
|
||||
int spinCounter;
|
||||
double prevSpeed;
|
||||
|
@ -142,6 +146,8 @@ private:
|
|||
|
||||
bool _getGearDown() const;
|
||||
|
||||
const char * _getTransponderCode() const;
|
||||
|
||||
bool reachedWaypoint;
|
||||
time_t timeElapsed;
|
||||
|
||||
|
|
|
@ -385,7 +385,9 @@ void FGATCController::transmit(FGTrafficRecord *rec, AtcMsgId msgId, AtcMsgDir m
|
|||
string fltType;
|
||||
string rwyClass;
|
||||
string SID;
|
||||
string transponderCode;
|
||||
FGAIFlightPlan *fp;
|
||||
string fltRules;
|
||||
switch (msgId) {
|
||||
case MSG_ANNOUNCE_ENGINE_START:
|
||||
text = sender + ". Ready to Start up";
|
||||
|
@ -416,8 +418,11 @@ void FGATCController::transmit(FGTrafficRecord *rec, AtcMsgId msgId, AtcMsgDir m
|
|||
SID = "fly runway heading ";
|
||||
}
|
||||
//snprintf(buffer, 7, "%3.2f", heading);
|
||||
fltRules = rec->getAircraft()->getTrafficRef()->getFlightRules();
|
||||
transponderCode = genTransponderCode(fltRules);
|
||||
rec->getAircraft()->SetTransponderCode(transponderCode);
|
||||
text = receiver + ". Start-up approved. " + atisInformation + " correct, runway " + activeRunway
|
||||
+ ", " + SID + ", squawk BBBB. " +
|
||||
+ ", " + SID + ", squawk " + transponderCode + ". " +
|
||||
"For push-back and taxi clearance call " + taxiFreqStr + ". " + sender + " control.";
|
||||
break;
|
||||
case MSG_DENY_ENGINE_START:
|
||||
|
@ -432,8 +437,9 @@ void FGATCController::transmit(FGTrafficRecord *rec, AtcMsgId msgId, AtcMsgDir m
|
|||
}
|
||||
taxiFreqStr = formatATCFrequency3_2(taxiFreq);
|
||||
activeRunway = rec->getAircraft()->GetFlightPlan()->getRunway();
|
||||
transponderCode = rec->getAircraft()->GetTransponderCode();
|
||||
text = receiver + ". Start-up approved. " + atisInformation + " correct, runway " +
|
||||
activeRunway + ", " + SID + ", squawk BBBB. " +
|
||||
activeRunway + ", " + SID + ", squawk " + transponderCode + ". " +
|
||||
"For push-back and taxi clearance call " + taxiFreqStr + ". " + sender;
|
||||
break;
|
||||
default:
|
||||
|
@ -461,6 +467,16 @@ string FGATCController::formatATCFrequency3_2(int freq) {
|
|||
return string(buffer);
|
||||
}
|
||||
|
||||
string FGATCController::genTransponderCode(string fltRules) {
|
||||
if (fltRules == "VFR") {
|
||||
return string("1200");
|
||||
} else {
|
||||
char buffer[5];
|
||||
snprintf(buffer, 5, "%d%d%d%d", rand() % 8, rand() % 8,rand() % 8, rand() % 8);
|
||||
return string(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
* class FGTowerController
|
||||
*
|
||||
|
|
|
@ -207,6 +207,7 @@ private:
|
|||
|
||||
|
||||
string formatATCFrequency3_2(int );
|
||||
string genTransponderCode(string fltRules);
|
||||
|
||||
public:
|
||||
typedef enum {
|
||||
|
|
Loading…
Add table
Reference in a new issue