ATC Commands

Injected traffic (TaxiWithInjector, ArrivalWithInjector) waits at clearance gates when the request asks for it (TaxiRequest.HoldForClearances, ArrivalRequest.HoldForClearance / HoldAtCrossings); otherwise each gate clears itself after a short, varied wait. A clearance given before its gate means no stop there. Every command is safe to call from any goroutine; progress arrives on Events() (TaxiEvent, ArrivalEvent).

The airport map gives all of them from the aircraft cards and logs them in ICAO phraseology.

Departures (TaxiController)

Command When What happens Events
ClearPushback() TaxiAwaitingPushback Pushback (tug if Tug is set), tail onto the taxiway the taxi-out leaves by TaxiPushback, then TaxiAwaitingTaxi
HoldPushback(on) before the push has begun (beacon not on) Keeps the aircraft on its stand, even when cleared, until HoldPushback(false): a ground stop, such as the Traffic Manager’s AdviceHold none
ClearToTaxi() awaiting taxi, taxiing, holding at a crossing Taxi to the holding point; removes a ClearUpTo limit or a hold position TaxiTaxiing, TaxiHoldingShort (HoldingShortOf = the runway)
ClearUpTo(node) before or during the taxi Taxi and hold with the nose gear on node (“taxi via A, hold short of B”). A limit already behind when the taxi starts holds the aircraft and reports ErrNotOnRoute AtLimit, LimitNode
HoldPosition() taxiing, lining up Stops as soon as comfortably possible (HoldPositionDecel) and waits for ClearToTaxi / ClearUpTo AtLimit with LimitNode −1
ClearToCross() holding short of a runway to cross Crosses; strobes and landing lights on between the hold-short lines TaxiTaxiing
ClearToLineUp() holding short of the departure runway Lines up and waits TaxiLiningUp, TaxiLinedUp
ClearForTakeoff() holding short or lined up Take-off (rolling if not lined up yet), hand-over to MSFS AI at ClimbHandoverFt, then the SID (TaxiRequest.Departure) TaxiDeparting, TaxiComplete
AbortTakeoff() lined up / lining up: cancels the take-off clearance. On the roll before V1 (RotateKts − V1MarginKts): rejects Brakes at RejectDecel to a stop, vacates at the next exit ahead and taxis back to the holding point for new clearances. Past V1: ErrTooLate, the take-off continues TaxiTaxiing, TaxiHoldingShort
Cancel() any time Removes the aircraft TaxiCancelled

Arrivals (ArrivalController)

Command When What happens Events
AbsorbDelay(delay) MSFS AI on the STAR, before the final Slower on the rest of the STAR, then a dog-leg; returns what is left for a hold (Losing a delay) none
EnterHold(hold, altFt) / HoldAltitude(altFt) / LeaveHold() on the STAR / holding Enters the hold at a fix (HoldFix), changes level in the stack, goes on along the STAR (Holding) none
GoAround() injected final, before touchdown Climbs out; MSFS AI flies a left-hand circuit (GoAroundClimbNm, GoAroundOffsetNm, GoAroundHeightFt) back to the join point, where the injected approach takes over again. Still on the STAR: nothing to do. On the runway: ErrTooLate ArrivalApproaching, then the approach again
ClearToTaxi() after landing, taxiing Taxi to the stand; removes a limit or a hold position ArrivalTaxiing, ArrivalParking, ArrivalParked
ClearUpTo(node) after landing, taxiing Progressive taxi, as for departures AtLimit, LimitNode
HoldPosition() taxiing Stops and waits for ClearToTaxi / ClearUpTo AtLimit
ClearToCross() holding short of a runway to cross Crosses ArrivalTaxiing
Cancel() any time Removes the aircraft ArrivalCancelled

Without a clearance

Aircraft keep their distance by themselves: a taxiing aircraft stops behind traffic on its path (TrafficGapMeters), and where two routes cross or merge the one further from the conflict gives way (Ground traffic). The controller’s commands come on top of that.

Errors

Error Meaning
ErrNotInjected The command needs an injected controller
ErrNotTaxiing Hold position for an aircraft not moving on the ground
ErrNotApplicable The command does not fit the phase
ErrTooLate Past V1, or already on the runway for a go-around
ErrNotOnRoute A ClearUpTo node not ahead on the route
ErrNotOnProcedure AbsorbDelay or EnterHold for an arrival not flying its STAR
ErrHolding AbsorbDelay while the arrival holds
ErrNotHolding HoldAltitude or LeaveHold for an arrival not in a hold