Skip to the content.

How Detection of Flight State Works

This is a snapshot of v0.5.0 transitions, so it might evolve. It should answer most questions on ‘what fires when’.

State Transition Table

File to Play Things to Check Timing Logic
BoardingWelcome GSX Mode: IsOnGround=True AND IsGSXBoardingInProgress=True AND IsBeaconOn=False
Traditional Mode: IsOnGround=True AND IsLogoLightOn=True AND IsBeaconOn=False
Play once when GSX boarding starts OR logo light first turns on, then repeat every X minutes (configurable, default 5) until BoardingComplete
BoardingWelcomePilot Settings: BoardingWelcomePilot enabled AND BoardingWelcome played AND IsOnGround=True AND IsBeaconOn=False Play once after the initial BoardingWelcome during boarding (off by default)
BoardingMusic BoardingWelcome played AND BoardingComplete not played Loop continuously until BoardingComplete or next BoardingWelcome
BoardingComplete IsBeaconOn=True AND IsOnGround=True OR GSX Boarding complete (when GSX enabled) Play once when beacon first turned on OR GSX boarding completed (whichever happens first)
ArmDoors IsOnGround=True AND (IsEngineRunning=True OR GroundSpeed > 1) Play once when engines start or aircraft begins moving
PreSafetyBriefing ArmDoors played AND IsEngineRunning=True Wait for ArmDoors to finish playing
SafetyBriefing PreSafetyBriefing played Wait for PreSafetyBriefing to finish playing
CabinDimTakeoff SafetyBriefing played AND IsDaylight=False Wait for SafetyBriefing to finish playing + 10 seconds
CrewSeatsTakeoff IsOnGround=True AND (IsLandingLightOn=True OR IsStrobeLightOn=True) AND IsEngineRunning=True When landing lights (default) or strobe lights are turned on (takeoff imminent)
CallCabinSecureTakeoff CrewSeatsTakeoff played AND IsOnGround=True Wait for CrewSeatsTakeoff to finish playing + 5 seconds
AfterTakeoff AltitudeAGL > TakeoffDetectionAltitudeAGL (3,000 ft) AND IsOnGround=False Wait 2 minutes after takeoff detected (independent timing), configurable altitude
FastenSeatbelt Climb/Cruise Phase AND AfterTakeoff played AND Seatbelt Sign OFF→ON transition (CABIN SEATBELTS ALERT SWITCH or ANNUNCIATOR SWITCH binding) 2 Minute Cooldown (Repeatable)
Cruise Climb/Cruise/Descent Phases AND only plays the once per file Use the file naming convention of ‘CruiseElapsedXXPercent’ where XX represents the number % through the flight e.g. CruiseElapsed33Percent is 1/3rd through the flight time
DescentSeatbelts (AltitudeAGL < DescentDetectionAGL (10,000 ft) AND VerticalSpeed < -500) OR LandingLightJustTurnedOn=True When descending below configurable altitude OR when landing lights just turned on
CrewSeatsLanding AltitudeAGL < CrewSeatsLandingAGL (3,000 ft) AND VerticalSpeed < -300 AND IsLandingLightOn=True During final approach phase with landing lights on (configurable altitude threshold)
CallCabinSecureLanding CrewSeatsLanding played AND AltitudeAGL < CrewSeatsLandingAGL + 2000 (5,000 ft) Wait for CrewSeatsLanding to finish playing + 10 seconds (uses CrewSeatsLandingAGL + 2000ft)
AfterLanding IsOnGround=True AND (SpoilersDeployed=False OR GroundSpeed < 15) AND (previous phase was descent/approach OR descent announcements played) After landing and spoilers retracted OR ground speed below 15 knots
AfterLandingMusic AfterLanding completed AND DisembarkStarted not yet played. Loops continuously after AfterLanding completes. May be interrupted by DisarmDoors and then resumes (from offset if resume enabled). Stops when DisembarkStarted plays.
DisarmDoors AreEnginesOff=True AND IsParkingBrakeOn=True AND AfterLanding played Wait for AfterLanding to finish playing
DisembarkStarted DisarmDoors played AND (IsBeaconOn=False OR IsGSXDeboardingInProgress=True) Wait for DisarmDoors to finish playing

GSX Integration

The Universal Announcer now supports GSX (Ground Services eXtended) integration for more realistic boarding announcements. This feature must be enabled in the Settings → Integrations tab.

GSX SimVar Integration

When GSX integration is enabled, the system monitors three GSX simvars:

GSX Boarding State - L:FSDT_GSX_BOARDING_STATE:

GSX Refueling State - L:FSDT_GSX_REFUELING_STATE:

GSX Deboarding State - L:FSDT_GSX_DEBOARDING_STATE:

GSX Boarding Logic

When GSX integration is enabled:

When GSX integration is disabled:

Manual Flight State Override Menu

The Universal Announcer provides a comprehensive manual flight state override system accessible via the system tray menu. This allows users to jump to any flight phase and get appropriate announcements for that stage of flight.

Right-click the system tray icon → Flight State submenu

Control Options

Menu Option Description State Set
Resume Resume all announcements (only shown when stopped) Resumes automatic detection
Stop Stop all announcements (only shown when running) Pauses all announcements
Auto Return to automatic flight state detection null (automatic detection)
Restart Reset state machine to beginning of flight sequence Clears all played announcements

Flight Phase Options

Menu Option Flight State Announcements Marked as Played What You’ll Get Next
Preflight Preflight None BoardingWelcome when logo light turns on
Taxi Taxi BoardingWelcome, BoardingMusic, BoardingComplete ArmDoors when engines start or aircraft moves
Takeoff Takeoff BoardingWelcome, BoardingMusic, BoardingComplete, ArmDoors, PreSafetyBriefing, SafetyBriefing, CabinDimTakeoff CrewSeatsTakeoff when landing/strobe lights turn on
Climb Climb BoardingWelcome, BoardingMusic, BoardingComplete, ArmDoors, PreSafetyBriefing, SafetyBriefing, CabinDimTakeoff, CrewSeatsTakeoff, CallCabinSecureTakeoff AfterTakeoff after 2 minutes at altitude > TakeoffDetectionAltitudeAGL (3,000 ft)
Cruise Cruise All pre-cruise announcements (boarding through AfterTakeoff) FastenSeatbelt when seatbelt sign turns on, DescentSeatbelts when descending
Descent Descent All pre-descent announcements (boarding through AfterTakeoff) DescentSeatbelts when below DescentDetectionAGL (10,000 ft) OR when landing lights just turned on
Approach Approach All pre-approach announcements (boarding through AfterTakeoff) CrewSeatsLanding when below CrewSeatsLandingAGL (3,000 ft) with landing lights
Landing Landing All pre-landing announcements (boarding through CallCabinSecureLanding) AfterLanding when on ground with spoilers retracted
Done Done All announcements No further announcements (flight complete)