Documentation
¶
Index ¶
- Constants
- Variables
- func DensityRatioAtAltitude(alt float32) float32
- func FixReadback(fix string) string
- func FormatAltitude(falt float32) string
- func IASToTAS(ias, altitude float32) float32
- func ParseARINC424(file []byte) (map[string]FAAAirport, map[string]Navaid, map[string]Fix, map[string][]Airway)
- func PlausibleFinalAltitude(fp *FlightPlan, perf AircraftPerformance, nmPerLongitude float32, ...) (altitude int)
- func PrintCIFPRoutes(airport string) error
- func PrintVideoMaps(path string, e *util.ErrorLogger)
- func SquawkIsSPC(squawk Squawk) (bool, string)
- func StringIsSPC(code string) bool
- func TASToIAS(tas, altitude float32) float32
- func TurnAngle(from, to float32, turn TurnMethod) float32
- type ARTCC
- type ATIS
- type ATPAVolume
- type AdaptationFix
- type AdaptationFixes
- type Aircraft
- func (ac *Aircraft) ATPAVolume() *ATPAVolume
- func (ac *Aircraft) AircraftPerformance() AircraftPerformance
- func (ac *Aircraft) Altitude() float32
- func (ac *Aircraft) ArrivalAirportElevation() float32
- func (ac *Aircraft) ArrivalAirportLocation() math.Point2LL
- func (ac *Aircraft) AssignAltitude(altitude int, afterSpeed bool) []RadioTransmission
- func (ac *Aircraft) AssignHeading(heading int, turn TurnMethod) []RadioTransmission
- func (ac *Aircraft) AssignSpeed(speed int, afterAltitude bool) []RadioTransmission
- func (ac *Aircraft) AtFixCleared(fix, approach string) []RadioTransmission
- func (ac *Aircraft) CancelApproachClearance() []RadioTransmission
- func (ac *Aircraft) Check(lg *log.Logger)
- func (ac *Aircraft) ClearedApproach(id string, lg *log.Logger) []RadioTransmission
- func (ac *Aircraft) ClearedStraightInApproach(id string) []RadioTransmission
- func (ac *Aircraft) ClimbViaSID() []RadioTransmission
- func (ac *Aircraft) ContactMessage(reportingPoints []ReportingPoint) string
- func (ac *Aircraft) ContactTower(controllers map[string]*Controller, lg *log.Logger) []RadioTransmission
- func (ac *Aircraft) CrossFixAt(fix string, ar *AltitudeRestriction, speed int) []RadioTransmission
- func (ac *Aircraft) DepartFixDirect(fixa, fixb string) []RadioTransmission
- func (ac *Aircraft) DepartFixHeading(fix string, hdg int) []RadioTransmission
- func (ac *Aircraft) DepartOnCourse(lg *log.Logger)
- func (ac *Aircraft) DepartureAirportElevation() float32
- func (ac *Aircraft) DepartureAirportLocation() math.Point2LL
- func (ac *Aircraft) DescendViaSTAR() []RadioTransmission
- func (ac *Aircraft) DirectFix(fix string) []RadioTransmission
- func (ac *Aircraft) DistanceAlongRoute(fix string) (float32, error)
- func (ac *Aircraft) DistanceToEndOfApproach() (float32, error)
- func (ac *Aircraft) ExpectApproach(id string, ap *Airport, lg *log.Logger) []RadioTransmission
- func (ac *Aircraft) ExpediteClimb() []RadioTransmission
- func (ac *Aircraft) ExpediteDescent() []RadioTransmission
- func (ac *Aircraft) FlyPresentHeading() []RadioTransmission
- func (ac *Aircraft) GS() float32
- func (ac *Aircraft) GoAround() []RadioTransmission
- func (ac *Aircraft) HandleControllerDisconnect(callsign string, primaryController string)
- func (ac *Aircraft) Heading() float32
- func (ac *Aircraft) IAS() float32
- func (ac *Aircraft) InitializeArrival(ap *Airport, arr *Arrival, arrivalHandoffController string, goAround bool, ...) error
- func (ac *Aircraft) InitializeDeparture(ap *Airport, departureAirport string, dep *Departure, runway string, ...) error
- func (ac *Aircraft) InitializeOverflight(of *Overflight, controller string, nmPerLongitude float32, ...) error
- func (ac *Aircraft) InterceptLocalizer() []RadioTransmission
- func (ac *Aircraft) IsAirborne() bool
- func (ac *Aircraft) IsAssociated() bool
- func (ac *Aircraft) MVAsApply() bool
- func (ac *Aircraft) MagneticVariation() float32
- func (ac *Aircraft) MaintainMaximumForward() []RadioTransmission
- func (ac *Aircraft) MaintainSlowestPractical() []RadioTransmission
- func (ac *Aircraft) NavSummary(lg *log.Logger) string
- func (ac *Aircraft) NewFlightPlan(r FlightRules, acType, dep, arr string) *FlightPlan
- func (ac *Aircraft) NmPerLongitude() float32
- func (ac *Aircraft) OnApproach(checkAltitude bool) bool
- func (ac *Aircraft) OnExtendedCenterline(maxNmDeviation float32) bool
- func (ac *Aircraft) Position() math.Point2LL
- func (ac *Aircraft) RouteIncludesFix(fix string) bool
- func (ac *Aircraft) SayAltitude() []RadioTransmission
- func (ac *Aircraft) SayHeading() []RadioTransmission
- func (ac *Aircraft) SaySpeed() []RadioTransmission
- func (ac *Aircraft) TAS() float32
- func (ac *Aircraft) ToggleSPCOverride(spc string)
- func (ac *Aircraft) TransferTracks(from, to string)
- func (ac *Aircraft) TurnLeft(deg int) []RadioTransmission
- func (ac *Aircraft) TurnRight(deg int) []RadioTransmission
- func (ac *Aircraft) Update(wind WindModel, simlg *log.Logger) *Waypoint
- func (ac *Aircraft) Waypoints() []Waypoint
- type AircraftPerformance
- type Airline
- type Airport
- type AirspaceVolume
- type AirspaceVolumeType
- type Airway
- type AirwayDirection
- type AirwayFix
- type AirwayLevel
- type AltitudeRestriction
- type Approach
- type ApproachRegion
- func (ar *ApproachRegion) FarPoint(nmPerLongitude, magneticVariation float32) [2]float32
- func (ar *ApproachRegion) GetLateralGeometry(nmPerLongitude, magneticVariation float32) (line [2]math.Point2LL, quad [4]math.Point2LL)
- func (ar *ApproachRegion) Inside(p math.Point2LL, alt float32, nmPerLongitude, magneticVariation float32) (lateral, vertical bool)
- func (ar *ApproachRegion) NearPoint(nmPerLongitude, magneticVariation float32) [2]float32
- func (ar *ApproachRegion) TryMakeGhost(callsign string, track RadarTrack, heading float32, scratchpad string, ...) *GhostAircraft
- type ApproachType
- type Arrival
- type ArrivalAirline
- type Controller
- type ConvergingRunways
- type DMEArc
- type DeferredHeading
- type Departure
- type DepartureAirline
- type ERAMAdaptation
- type ExitRoute
- type FAAAirport
- type Fix
- type FleetAircraft
- type FlightPlan
- type FlightRules
- type FlightState
- type FlightStrip
- type FlyRacetrackPT
- type FlyStandard45PT
- type Frequency
- type GhostAircraft
- type InterceptLocalizerState
- type LoadedVideoMaps
- type Locator
- type METAR
- type MVA
- type MVAExterior
- type MVAHorizontalProjection
- type MVAInterior
- type MVALinearRing
- type MVAPatches
- type MVAPolygonPatch
- type MVASurface
- type MagneticGrid
- type MultiUserController
- type Nav
- func (nav *Nav) AssignAltitude(alt float32, afterSpeed bool) PilotResponse
- func (nav *Nav) AssignHeading(hdg float32, turn TurnMethod) PilotResponse
- func (nav *Nav) AssignSpeed(speed float32, afterAltitude bool) PilotResponse
- func (nav *Nav) AssignedHeading() (float32, bool)
- func (nav *Nav) AtFixCleared(fix, id string) PilotResponse
- func (nav *Nav) CancelApproachClearance() PilotResponse
- func (nav *Nav) Check(lg *log.Logger)
- func (nav *Nav) ClimbViaSID() PilotResponse
- func (nav *Nav) ContactMessage(reportingPoints []ReportingPoint, star string) string
- func (nav *Nav) CrossFixAt(fix string, ar *AltitudeRestriction, speed int) PilotResponse
- func (nav *Nav) DepartFixDirect(fixa string, fixb string) PilotResponse
- func (nav *Nav) DepartFixHeading(fix string, hdg float32) PilotResponse
- func (nav *Nav) DepartOnCourse(alt float32, exit string)
- func (nav *Nav) DepartureMessage() string
- func (nav *Nav) DescendViaSTAR() PilotResponse
- func (nav *Nav) DirectFix(fix string) PilotResponse
- func (nav *Nav) DistanceAlongRoute(fix string) (float32, error)
- func (nav *Nav) EnqueueHeading(h NavHeading)
- func (nav *Nav) ExpectApproach(airport *Airport, id string, runwayWaypoints map[string]WaypointArray, ...) PilotResponse
- func (nav *Nav) ExpediteClimb() PilotResponse
- func (nav *Nav) ExpediteDescent() PilotResponse
- func (nav *Nav) FlyPresentHeading() PilotResponse
- func (nav *Nav) GoAround() PilotResponse
- func (nav *Nav) InterceptLocalizer(airport string) PilotResponse
- func (nav *Nav) IsAirborne() bool
- func (nav *Nav) LocalizerHeading(wind WindModel, lg *log.Logger) (heading float32, turn TurnMethod, rate float32)
- func (nav *Nav) MaintainMaximumForward() PilotResponse
- func (nav *Nav) MaintainSlowestPractical() PilotResponse
- func (nav *Nav) OnApproach(checkAltitude bool) bool
- func (nav *Nav) OnExtendedCenterline(maxNmDeviation float32) bool
- func (nav *Nav) SayAltitude() PilotResponse
- func (nav *Nav) SayHeading() PilotResponse
- func (nav *Nav) SaySpeed() PilotResponse
- func (nav *Nav) Summary(fp FlightPlan, lg *log.Logger) string
- func (nav *Nav) TAS() float32
- func (nav *Nav) TargetAltitude(lg *log.Logger) (alt, rate float32)
- func (nav *Nav) TargetHeading(wind WindModel, lg *log.Logger) (heading float32, turn TurnMethod, rate float32)
- func (nav *Nav) TargetSpeed(lg *log.Logger) (float32, float32)
- func (nav *Nav) Update(wind WindModel, lg *log.Logger) *Waypoint
- type NavAltitude
- type NavApproach
- type NavFixAssignment
- type NavHeading
- type NavSpeed
- type Navaid
- type Overflight
- type OverflightAirline
- type PTType
- type PilotResponse
- type ProcedureTurn
- type RacetrackPTEntry
- type RadarSite
- type RadarTrack
- type RadioTransmission
- type RadioTransmissionType
- type RedirectedHandoff
- type ReportingPoint
- type Runway
- type SPC
- type STAR
- type SplitConfiguration
- type SplitConfigurationSet
- type Squawk
- type SquawkCodePool
- type StaticDatabase
- type TRACON
- type TransponderMode
- type TurnMethod
- type VideoMap
- type VideoMapLibrary
- func (ml *VideoMapLibrary) AddFile(filesystem fs.FS, filename string, referenced map[string]interface{}, ...)
- func (ml VideoMapLibrary) AvailableFiles() []string
- func (ml VideoMapLibrary) AvailableMaps(filename string) []string
- func (ml *VideoMapLibrary) GetMap(filename, mapname string) (*VideoMap, error)
- func (ml VideoMapLibrary) HaveFile(filename string) bool
- func (ml VideoMapLibrary) HaveMap(filename, mapname string) bool
- type Waypoint
- type WaypointArray
- func (w WaypointArray) CheckApproach(e *util.ErrorLogger, controllers map[string]*Controller)
- func (w WaypointArray) CheckArrival(e *util.ErrorLogger, ctrl map[string]*Controller)
- func (w WaypointArray) CheckDeparture(e *util.ErrorLogger, controllers map[string]*Controller)
- func (w WaypointArray) CheckOverflight(e *util.ErrorLogger, ctrl map[string]*Controller)
- func (wslice WaypointArray) Encode() string
- func (w WaypointArray) RouteString() string
- func (w *WaypointArray) UnmarshalJSON(b []byte) error
- type WaypointCrossingConstraint
- type Wind
- type WindModel
Constants ¶
const ( RadioTransmissionContact = iota // Messages initiated by the pilot RadioTransmissionReadback // Reading back an instruction RadioTransmissionUnexpected // Something urgent or unusual )
const ( ILSApproach = iota RNAVApproach ChartedVisualApproach )
const ( UNKNOWN = iota IFR VFR DVFR SVFR )
const ( Standby = iota Charlie )
const ( AirspaceVolumePolygon = iota AirspaceVolumeCircle )
const ( RouteBasedFix = "route" ZoneBasedFix = "zone" )
const ( NotIntercepting = iota InitialHeading TurningToJoin HoldingLocalizer )
const ( TurnClosest = iota // default TurnLeft TurnRight )
const ( PTStateApproaching = iota PTStateTurningOutbound PTStateFlyingOutbound PTStateTurningInbound PTStateFlyingInbound // parallel entry only )
const ( PT45StateApproaching = iota PT45StateTurningOutbound PT45StateFlyingOutbound PT45StateTurningAway PT45StateFlyingAway PT45StateTurningIn PT45StateFlyingIn PT45StateTurningToIntercept )
const ( PTUndefined = iota PTRacetrack PTStandard45 )
const ( DirectEntryShortTurn = iota DirectEntryLongTurn ParallelEntry TeardropEntry )
const ( AirwayLevelAll = iota AirwayLevelLow AirwayLevelHigh )
const ( AirwayDirectionAny = iota AirwayDirectionForward AirwayDirectionBackward )
const ARINC424LineLength = 134 // 132 chars + \r + \n
const MaxIAS = 290
const MaximumRate = 100000
const StandardTurnRate = 3
Variables ¶
var ( ErrClearedForUnexpectedApproach = errors.New("Cleared for unexpected approach") ErrFixNotInRoute = errors.New("Fix not in aircraft's route") ErrInvalidAltitude = errors.New("Altitude above aircraft's ceiling") ErrInvalidApproach = errors.New("Invalid approach") ErrInvalidController = errors.New("Invalid controller") ErrInvalidFacility = errors.New("Invalid facility") ErrInvalidHeading = errors.New("Invalid heading") ErrNoAircraftForCallsign = errors.New("No aircraft exists with specified callsign") ErrNoController = errors.New("No controller with that callsign") ErrNoERAMFacility = errors.New("No ERAM facility exists") ErrNoFlightPlan = errors.New("No flight plan has been filed for aircraft") ErrNoMatchingFix = errors.New("No matching fix") ErrNoMoreAvailableSquawkCodes = errors.New("No more available squawk codes") ErrNoSTARSFacility = errors.New("No STARS Facility in ERAM computer") ErrNoValidArrivalFound = errors.New("Unable to find a valid arrival") ErrNoValidDepartureFound = errors.New("Unable to find a valid departure") ErrNotBeingHandedOffToMe = errors.New("Aircraft not being handed off to current controller") ErrNotClearedForApproach = errors.New("Aircraft has not been cleared for an approach") ErrNotFlyingRoute = errors.New("Aircraft is not currently flying its assigned route") ErrNotPointedOutToMe = errors.New("Aircraft not being pointed out to current controller") ErrOtherControllerHasTrack = errors.New("Another controller is already tracking the aircraft") ErrSquawkCodeAlreadyAssigned = errors.New("Squawk code has already been assigned") ErrSquawkCodeNotManagedByPool = errors.New("Squawk code is not managed by this pool") ErrSquawkCodeUnassigned = errors.New("Squawk code has not been assigned") ErrUnableCommand = errors.New("Unable") ErrUnknownAircraftType = errors.New("Unknown aircraft type") ErrUnknownAirport = errors.New("Unknown airport") ErrUnknownApproach = errors.New("Unknown approach") ErrUnknownRunway = errors.New("Unknown runway") )
Functions ¶
func DensityRatioAtAltitude ¶
returns the ratio of air density at the given altitude (in feet) to the air density at sea level, subject to assuming the standard atmosphere.
func FixReadback ¶
func FormatAltitude ¶
func ParseARINC424 ¶
func PlausibleFinalAltitude ¶
func PlausibleFinalAltitude(fp *FlightPlan, perf AircraftPerformance, nmPerLongitude float32, magneticVariation float32) (altitude int)
func PrintCIFPRoutes ¶
func PrintVideoMaps ¶
func PrintVideoMaps(path string, e *util.ErrorLogger)
func SquawkIsSPC ¶
SquawkIsSPC returns true if the given beacon code is a SPC. The second return value is a string giving the two-letter abbreviated SPC it corresponds to.
func StringIsSPC ¶
func TurnAngle ¶
func TurnAngle(from, to float32, turn TurnMethod) float32
Types ¶
type ATPAVolume ¶
type ATPAVolume struct {
Id string // Unique identifier, set after deserialization
ThresholdString string `json:"runway_threshold"`
Threshold math.Point2LL
Heading float32 `json:"heading"`
MaxHeadingDeviation float32 `json:"max_heading_deviation"`
Floor float32 `json:"floor"`
Ceiling float32 `json:"ceiling"`
Length float32 `json:"length"`
LeftWidth float32 `json:"left_width"`
RightWidth float32 `json:"right_width"`
FilteredScratchpads []string `json:"filtered_scratchpads"`
ExcludedScratchpads []string `json:"excluded_scratchpads"`
Enable25nmApproach bool `json:"enable_2.5nm"`
Dist25nmApproach float32 `json:"2.5nm_distance"`
}
type AdaptationFix ¶
type AdaptationFixes ¶
type AdaptationFixes []AdaptationFix
func (AdaptationFixes) Fix ¶
func (fixes AdaptationFixes) Fix(altitude string) (AdaptationFix, error)
type Aircraft ¶
type Aircraft struct {
// This is ADS-B callsign of the aircraft. Just because different the
// callsign in the flight plan can be different across multiple STARS
// facilities, so two different facilities can show different
// callsigns; however, the ADS-B callsign is transmitted from the
// aircraft and would be the same to all facilities.
Callsign string
Scratchpad string
SecondaryScratchpad string
Squawk Squawk // actually squawking
Mode TransponderMode
TempAltitude int
FlightPlan *FlightPlan
PointOutHistory []string
// STARS-related state that is globally visible
TrackingController string // Who has the radar track
ControllingController string // Who has control; not necessarily the same as TrackingController
HandoffTrackController string // Handoff offered but not yet accepted
GlobalLeaderLineDirection *math.CardinalOrdinalDirection
RedirectedHandoff RedirectedHandoff
SPCOverride string
// The controller who gave approach clearance
ApproachController string
Strip FlightStrip
// nil -> unset/unspecified.
Nav Nav
// Departure related state
DepartureContactAltitude float32
DepartureContactController string
// Arrival-related state
GoAroundDistance *float32
STAR string
STARRunwayWaypoints map[string]WaypointArray
GotContactTower bool
// Who to try to hand off to at a waypoint with /ho
WaypointHandoffController string
}
func (*Aircraft) ATPAVolume ¶
func (ac *Aircraft) ATPAVolume() *ATPAVolume
func (*Aircraft) AircraftPerformance ¶
func (ac *Aircraft) AircraftPerformance() AircraftPerformance
func (*Aircraft) ArrivalAirportElevation ¶
func (*Aircraft) ArrivalAirportLocation ¶ added in v0.11.2
func (*Aircraft) AssignAltitude ¶
func (ac *Aircraft) AssignAltitude(altitude int, afterSpeed bool) []RadioTransmission
func (*Aircraft) AssignHeading ¶
func (ac *Aircraft) AssignHeading(heading int, turn TurnMethod) []RadioTransmission
func (*Aircraft) AssignSpeed ¶
func (ac *Aircraft) AssignSpeed(speed int, afterAltitude bool) []RadioTransmission
func (*Aircraft) AtFixCleared ¶
func (ac *Aircraft) AtFixCleared(fix, approach string) []RadioTransmission
func (*Aircraft) CancelApproachClearance ¶
func (ac *Aircraft) CancelApproachClearance() []RadioTransmission
func (*Aircraft) ClearedApproach ¶
func (ac *Aircraft) ClearedApproach(id string, lg *log.Logger) []RadioTransmission
func (*Aircraft) ClearedStraightInApproach ¶
func (ac *Aircraft) ClearedStraightInApproach(id string) []RadioTransmission
func (*Aircraft) ClimbViaSID ¶
func (ac *Aircraft) ClimbViaSID() []RadioTransmission
func (*Aircraft) ContactMessage ¶
func (ac *Aircraft) ContactMessage(reportingPoints []ReportingPoint) string
func (*Aircraft) ContactTower ¶
func (ac *Aircraft) ContactTower(controllers map[string]*Controller, lg *log.Logger) []RadioTransmission
func (*Aircraft) CrossFixAt ¶
func (ac *Aircraft) CrossFixAt(fix string, ar *AltitudeRestriction, speed int) []RadioTransmission
func (*Aircraft) DepartFixDirect ¶
func (ac *Aircraft) DepartFixDirect(fixa, fixb string) []RadioTransmission
func (*Aircraft) DepartFixHeading ¶
func (ac *Aircraft) DepartFixHeading(fix string, hdg int) []RadioTransmission
func (*Aircraft) DepartOnCourse ¶
func (*Aircraft) DepartureAirportElevation ¶
func (*Aircraft) DepartureAirportLocation ¶ added in v0.11.2
func (*Aircraft) DescendViaSTAR ¶
func (ac *Aircraft) DescendViaSTAR() []RadioTransmission
func (*Aircraft) DirectFix ¶
func (ac *Aircraft) DirectFix(fix string) []RadioTransmission
func (*Aircraft) DistanceAlongRoute ¶
func (*Aircraft) DistanceToEndOfApproach ¶
func (*Aircraft) ExpectApproach ¶
func (*Aircraft) ExpediteClimb ¶
func (ac *Aircraft) ExpediteClimb() []RadioTransmission
func (*Aircraft) ExpediteDescent ¶
func (ac *Aircraft) ExpediteDescent() []RadioTransmission
func (*Aircraft) FlyPresentHeading ¶
func (ac *Aircraft) FlyPresentHeading() []RadioTransmission
func (*Aircraft) GoAround ¶
func (ac *Aircraft) GoAround() []RadioTransmission
func (*Aircraft) HandleControllerDisconnect ¶
func (*Aircraft) InitializeArrival ¶
func (*Aircraft) InitializeDeparture ¶
func (*Aircraft) InitializeOverflight ¶ added in v0.11.2
func (*Aircraft) InterceptLocalizer ¶
func (ac *Aircraft) InterceptLocalizer() []RadioTransmission
func (*Aircraft) IsAirborne ¶
func (*Aircraft) IsAssociated ¶
func (*Aircraft) MagneticVariation ¶
func (*Aircraft) MaintainMaximumForward ¶
func (ac *Aircraft) MaintainMaximumForward() []RadioTransmission
func (*Aircraft) MaintainSlowestPractical ¶
func (ac *Aircraft) MaintainSlowestPractical() []RadioTransmission
func (*Aircraft) NewFlightPlan ¶
func (ac *Aircraft) NewFlightPlan(r FlightRules, acType, dep, arr string) *FlightPlan
func (*Aircraft) NmPerLongitude ¶
func (*Aircraft) OnApproach ¶
func (*Aircraft) OnExtendedCenterline ¶
func (*Aircraft) RouteIncludesFix ¶
func (*Aircraft) SayAltitude ¶
func (ac *Aircraft) SayAltitude() []RadioTransmission
func (*Aircraft) SayHeading ¶
func (ac *Aircraft) SayHeading() []RadioTransmission
func (*Aircraft) SaySpeed ¶
func (ac *Aircraft) SaySpeed() []RadioTransmission
func (*Aircraft) ToggleSPCOverride ¶
func (*Aircraft) TransferTracks ¶
func (*Aircraft) TurnLeft ¶
func (ac *Aircraft) TurnLeft(deg int) []RadioTransmission
func (*Aircraft) TurnRight ¶
func (ac *Aircraft) TurnRight(deg int) []RadioTransmission
type AircraftPerformance ¶
type AircraftPerformance struct {
Name string `json:"name"`
ICAO string `json:"icao"`
// engines, weight class, category
WeightClass string `json:"weightClass"`
Ceiling float32 `json:"ceiling"`
Engine struct {
AircraftType string `json:"type"`
} `json:"engines"`
Rate struct {
Climb float32 `json:"climb"` // ft / minute; reduce by 500 after alt 5000 if this is >=2500
Descent float32 `json:"descent"`
Accelerate float32 `json:"accelerate"` // kts / 2 seconds
Decelerate float32 `json:"decelerate"`
} `json:"rate"`
Category struct {
SRS int `json:"srs"`
LAHSO int `json:"lahso"`
CWT string `json:"cwt"`
}
Runway struct {
Takeoff float32 `json:"takeoff"` // nm
Landing float32 `json:"landing"` // nm
} `json:"runway"`
Speed struct {
Min float32 `json:"min"`
V2 float32 `json:"v2"`
Landing float32 `json:"landing"`
CruiseTAS float32 `json:"cruise"`
CruiseMach float32 `json:"cruiseM"`
MaxTAS float32 `json:"max"`
MaxMach float32 `json:"maxM"`
} `json:"speed"`
}
type Airport ¶
type Airport struct {
Location math.Point2LL
TowerListIndex int `json:"tower_list"`
Name string `json:"name"`
Approaches map[string]*Approach `json:"approaches,omitempty"`
Departures []Departure `json:"departures,omitempty"`
// Optional: initial tracking controller, for cases where a virtual
// controller has the initial track.
DepartureController string `json:"departure_controller"`
ExitCategories map[string]string `json:"exit_categories"`
// runway -> (exit -> route)
DepartureRoutes map[string]map[string]ExitRoute `json:"departure_routes"`
ApproachRegions map[string]*ApproachRegion `json:"approach_regions"`
ConvergingRunways []ConvergingRunways `json:"converging_runways"`
ATPAVolumes map[string]*ATPAVolume `json:"atpa_volumes"`
OmitArrivalScratchpad bool `json:"omit_arrival_scratchpad"`
}
func (*Airport) PostDeserialize ¶
type AirspaceVolume ¶
type AirspaceVolume struct {
Name string `json:"name"`
Type AirspaceVolumeType `json:"type"`
Floor int `json:"floor"`
Ceiling int `json:"ceiling"`
// Polygon
Vertices []math.Point2LL `json:"vertices"`
// Circle
Center math.Point2LL `json:"center"`
Radius float32 `json:"radius"`
}
func (*AirspaceVolume) GenerateDrawCommands ¶
func (a *AirspaceVolume) GenerateDrawCommands(cb *renderer.CommandBuffer, nmPerLongitude float32)
type AirspaceVolumeType ¶
type AirspaceVolumeType int
func (*AirspaceVolumeType) MarshalJSON ¶
func (t *AirspaceVolumeType) MarshalJSON() ([]byte, error)
func (*AirspaceVolumeType) UnmarshalJSON ¶
func (t *AirspaceVolumeType) UnmarshalJSON(b []byte) error
type AirwayDirection ¶ added in v0.11.1
type AirwayDirection int
type AirwayFix ¶ added in v0.11.1
type AirwayFix struct {
Fix string
Level AirwayLevel
Direction AirwayDirection
}
type AirwayLevel ¶ added in v0.11.1
type AirwayLevel int
type AltitudeRestriction ¶
type AltitudeRestriction struct {
// We treat 0 as "unset", which works naturally for the bottom but
// requires occasional care at the top.
Range [2]float32
}
func ParseAltitudeRestriction ¶
func ParseAltitudeRestriction(s string) (*AltitudeRestriction, error)
ParseAltitudeRestriction parses an altitude restriction in the compact text format used in scenario definition files.
func (AltitudeRestriction) ClampRange ¶
func (a AltitudeRestriction) ClampRange(r [2]float32) ([2]float32, bool)
ClampRange limits a range of altitudes to satisfy the altitude restriction; the returned Boolean indicates whether the ranges overlapped.
func (AltitudeRestriction) Encoded ¶
func (a AltitudeRestriction) Encoded() string
Encoded returns the restriction in the encoded form in which it is specified in scenario configuration files, e.g. "5000+" for "at or above 5000".
func (AltitudeRestriction) Summary ¶
func (a AltitudeRestriction) Summary() string
Summary returns a human-readable summary of the altitude restriction.
func (AltitudeRestriction) TargetAltitude ¶
func (a AltitudeRestriction) TargetAltitude(alt float32) float32
func (*AltitudeRestriction) UnmarshalJSON ¶
func (a *AltitudeRestriction) UnmarshalJSON(b []byte) error
type Approach ¶
type Approach struct {
Id string `json:"cifp_id"`
FullName string `json:"full_name"`
Type ApproachType `json:"type"`
Runway string `json:"runway"`
Waypoints []WaypointArray `json:"waypoints"`
TowerController string `json:"tower_controller"`
}
type ApproachRegion ¶
type ApproachRegion struct {
Runway string // set during deserialization
HeadingTolerance float32 `json:"heading_tolerance"`
ReferenceLineHeading float32 `json:"reference_heading"`
ReferenceLineLength float32 `json:"reference_length"`
ReferencePointAltitude float32 `json:"reference_altitude"`
ReferencePoint math.Point2LL `json:"reference_point"`
// lateral qualification region
NearDistance float32 `json:"near_distance"`
NearHalfWidth float32 `json:"near_half_width"`
FarHalfWidth float32 `json:"far_half_width"`
RegionLength float32 `json:"region_length"`
// vertical qualification region
DescentPointDistance float32 `json:"descent_distance"`
DescentPointAltitude float32 `json:"descent_altitude"`
AboveAltitudeTolerance float32 `json:"above_altitude_tolerance"`
BelowAltitudeTolerance float32 `json:"below_altitude_tolerance"`
ScratchpadPatterns []string `json:"scratchpad_patterns"`
}
func (*ApproachRegion) FarPoint ¶
func (ar *ApproachRegion) FarPoint(nmPerLongitude, magneticVariation float32) [2]float32
func (*ApproachRegion) GetLateralGeometry ¶
func (*ApproachRegion) NearPoint ¶
func (ar *ApproachRegion) NearPoint(nmPerLongitude, magneticVariation float32) [2]float32
func (*ApproachRegion) TryMakeGhost ¶
func (ar *ApproachRegion) TryMakeGhost(callsign string, track RadarTrack, heading float32, scratchpad string, forceGhost bool, offset float32, leaderDirection math.CardinalOrdinalDirection, runwayIntersection [2]float32, nmPerLongitude float32, magneticVariation float32, other *ApproachRegion) *GhostAircraft
type ApproachType ¶
type ApproachType int
func (ApproachType) MarshalJSON ¶
func (at ApproachType) MarshalJSON() ([]byte, error)
func (ApproachType) String ¶
func (at ApproachType) String() string
func (*ApproachType) UnmarshalJSON ¶
func (at *ApproachType) UnmarshalJSON(b []byte) error
type Arrival ¶
type Arrival struct {
Waypoints WaypointArray `json:"waypoints"`
RunwayWaypoints map[string]map[string]WaypointArray `json:"runway_waypoints"` // Airport -> runway -> waypoints
SpawnWaypoint string `json:"spawn"` // if "waypoints" aren't specified
CruiseAltitude float32 `json:"cruise_altitude"`
Route string `json:"route"`
STAR string `json:"star"`
InitialController string `json:"initial_controller"`
InitialAltitude float32 `json:"initial_altitude"`
AssignedAltitude float32 `json:"assigned_altitude"`
InitialSpeed float32 `json:"initial_speed"`
SpeedRestriction float32 `json:"speed_restriction"`
ExpectApproach string `json:"expect_approach"`
Scratchpad string `json:"scratchpad"`
SecondaryScratchpad string `json:"secondary_scratchpad"`
Description string `json:"description"`
CoordinationFix string `json:"coordination_fix"`
// Airport -> arrival airlines
Airlines map[string][]ArrivalAirline `json:"airlines"`
}
func (Arrival) GetRunwayWaypoints ¶
func (a Arrival) GetRunwayWaypoints(airport, rwy string) WaypointArray
func (*Arrival) PostDeserialize ¶
func (ar *Arrival) PostDeserialize(loc Locator, nmPerLongitude float32, magneticVariation float32, airports map[string]*Airport, controlPositions map[string]*Controller, e *util.ErrorLogger)
type ArrivalAirline ¶
type Controller ¶
type Controller struct {
Callsign string // Not provided in scenario JSON
FullName string `json:"full_name"`
Frequency Frequency `json:"frequency"`
SectorId string `json:"sector_id"` // e.g. N56, 2J, ...
Scope string `json:"scope_char"` // For tracked a/c on the scope--e.g., T
IsHuman bool // Not provided in scenario JSON
FacilityIdentifier string `json:"facility_id"` // For example the "N" in "N4P" showing the N90 TRACON
ERAMFacility bool `json:"eram_facility"` // To weed out N56 and N4P being the same fac
Facility string `json:"facility"` // So we can get the STARS facility from a controller
DefaultAirport string `json:"default_airport"` // only required if CRDA is a thing
}
type ConvergingRunways ¶
type ConvergingRunways struct {
Runways [2]string `json:"runways"`
TieSymbol string `json:"tie_symbol"`
StaggerSymbol string `json:"stagger_symbol"`
TieOffset float32 `json:"tie_offset"`
LeaderDirectionStrings [2]string `json:"leader_directions"`
LeaderDirections [2]math.CardinalOrdinalDirection // not in JSON, set during deserialize
RunwayIntersection math.Point2LL // not in JSON, set during deserialize
}
type DMEArc ¶
type DMEArc struct {
Fix string
Center math.Point2LL
Radius float32
Length float32
InitialHeading float32
Clockwise bool
}
Can either be specified with (Fix,Radius), or (Length,Clockwise); the remaining fields are then derived from those.
type DeferredHeading ¶
type DeferredHeading struct {
// Time is just plain old wallclock time; it should be sim time, but a
// lot of replumbing would be required to have that available where
// needed. The downsides are minor: 1. On quit and resume, any pending
// assignments will generally be followed immediately, and 2. if the
// sim rate is increased, the delay will end up being longer than
// intended.
Time time.Time
Heading NavHeading
}
DeferredHeading stores a heading assignment from the controller and the time at which to start executing it; this time is set to be a few seconds after the controller issues it in order to model the delay before pilots start to follow assignments.
type Departure ¶
type Departure struct {
Exit string `json:"exit"`
Destination string `json:"destination"`
Altitude int `json:"altitude,omitempty"`
Route string `json:"route"`
RouteWaypoints WaypointArray // not specified in user JSON
Airlines []DepartureAirline `json:"airlines"`
Scratchpad string `json:"scratchpad"` // optional
SecondaryScratchpad string `json:"secondary_scratchpad"` // optional
}
type DepartureAirline ¶
type ERAMAdaptation ¶
type ERAMAdaptation struct {
ARTCC string // not in JSON
CoordinationFixes map[string]AdaptationFixes `json:"coordination_fixes"`
}
func (ERAMAdaptation) AdaptationFixForAltitude ¶
func (ea ERAMAdaptation) AdaptationFixForAltitude(fix string, altitude string) *AdaptationFix
func (ERAMAdaptation) FixForRouteAndAltitude ¶
func (ea ERAMAdaptation) FixForRouteAndAltitude(route string, altitude string) *AdaptationFix
type ExitRoute ¶
type ExitRoute struct {
SID string `json:"sid"`
AssignedAltitude int `json:"assigned_altitude"`
ClearedAltitude int `json:"cleared_altitude"`
SpeedRestriction int `json:"speed_restriction"`
Waypoints WaypointArray `json:"waypoints"`
Description string `json:"description"`
// optional, control position to handoff to at a /ho
HandoffController string `json:"handoff_controller"`
}
type FAAAirport ¶
type FAAAirport struct {
Id string
Name string
Elevation int
Location math.Point2LL
Runways []Runway
Approaches map[string][]WaypointArray
STARs map[string]STAR
ARTCC string
}
func (FAAAirport) ValidRunways ¶
func (ap FAAAirport) ValidRunways() string
type FleetAircraft ¶
type FlightPlan ¶
type FlightPlan struct {
Callsign string
Rules FlightRules
AircraftType string
CruiseSpeed int
AssignedSquawk Squawk // from ATC
// An ECID (CID) are three alpha-numeric characters (eg. 971, 43A,
// etc.) and is what ERAM assigns to a track to act as another way to
// identify that track. To execute commands, controllers may use the
// ECID instead of the aircrafts callsign.
ECID string
DepartureAirport string
DepartTimeEst int
DepartTimeActual int
Altitude int
ArrivalAirport string
Hours, Minutes int
FuelHours, FuelMinutes int
AlternateAirport string
Exit string
Route string
Remarks string
}
func (FlightPlan) BaseType ¶
func (fp FlightPlan) BaseType() string
func (FlightPlan) TypeWithoutSuffix ¶
func (fp FlightPlan) TypeWithoutSuffix() string
type FlightRules ¶
type FlightRules int
func (FlightRules) String ¶
func (f FlightRules) String() string
type FlightState ¶
type FlightState struct {
InitialDepartureClimb bool
DepartureAirportLocation math.Point2LL
DepartureAirportElevation float32
ArrivalAirport Waypoint
ArrivalAirportLocation math.Point2LL
ArrivalAirportElevation float32
MagneticVariation float32
NmPerLongitude float32
Position math.Point2LL
Heading float32
Altitude float32
IAS, GS float32 // speeds...
}
func (FlightState) LogValue ¶
func (fs FlightState) LogValue() slog.Value
func (*FlightState) Summary ¶
func (fs *FlightState) Summary() string
type FlightStrip ¶
type FlyRacetrackPT ¶
type FlyRacetrackPT struct {
ProcedureTurn *ProcedureTurn
Fix string
FixLocation math.Point2LL
Entry RacetrackPTEntry
InboundHeading float32
OutboundHeading float32
OutboundTurnRate float32
OutboundTurnMethod TurnMethod
OutboundLegLength float32
State int
}
func MakeFlyRacetrackPT ¶
func MakeFlyRacetrackPT(nav *Nav, wp []Waypoint) *FlyRacetrackPT
func (*FlyRacetrackPT) GetAltitude ¶
func (fp *FlyRacetrackPT) GetAltitude(nav *Nav) (float32, bool)
func (*FlyRacetrackPT) GetHeading ¶
func (fp *FlyRacetrackPT) GetHeading(nav *Nav, wind WindModel, lg *log.Logger) (float32, TurnMethod, float32)
type FlyStandard45PT ¶
type FlyStandard45PT struct {
ProcedureTurn *ProcedureTurn
Fix string
FixLocation math.Point2LL
InboundHeading float32 // fix->airport
AwayHeading float32 // outbound + 45 offset
State int
SecondsRemaining int
}
func MakeFlyStandard45PT ¶
func MakeFlyStandard45PT(nav *Nav, wp []Waypoint) *FlyStandard45PT
func (*FlyStandard45PT) GetHeading ¶
func (fp *FlyStandard45PT) GetHeading(nav *Nav, wind WindModel, lg *log.Logger) (float32, TurnMethod, float32)
type Frequency ¶
type Frequency int
Frequencies are scaled by 1000 and then stored in integers.
func NewFrequency ¶
type GhostAircraft ¶
type InterceptLocalizerState ¶
type InterceptLocalizerState int
type LoadedVideoMaps ¶
type LoadedVideoMaps struct {
// contains filtered or unexported fields
}
type METAR ¶
type METAR struct {
AirportICAO string
Time string
Auto bool
Wind string
Weather string
Altimeter string
Rmk string
}
func ParseMETAR ¶
type MVA ¶
type MVAExterior ¶
type MVAExterior struct {
LinearRing MVALinearRing `xml:"LinearRing"`
}
type MVAHorizontalProjection ¶
type MVAHorizontalProjection struct {
Surface MVASurface `xml:"Surface"`
}
type MVAInterior ¶
type MVAInterior struct {
LinearRing MVALinearRing `xml:"LinearRing"`
}
type MVALinearRing ¶
type MVALinearRing struct {
PosList string `xml:"posList"`
}
func (MVALinearRing) Vertices ¶
func (r MVALinearRing) Vertices() [][2]float32
type MVAPatches ¶
type MVAPatches struct {
PolygonPatch MVAPolygonPatch `xml:"PolygonPatch"`
}
type MVAPolygonPatch ¶
type MVAPolygonPatch struct {
Exterior MVAExterior `xml:"exterior"`
Interiors []MVAInterior `xml:"interior"`
}
type MVASurface ¶
type MVASurface struct {
Patches MVAPatches `xml:"patches"`
}
type MagneticGrid ¶
type MultiUserController ¶
type MultiUserController struct {
Primary bool `json:"primary"`
BackupController string `json:"backup"`
Departures []string `json:"departures"`
Arrivals []string `json:"arrivals"` // TEMPORARY for inbound flows transition
InboundFlows []string `json:"inbound_flows"`
}
func (*MultiUserController) IsDepartureController ¶
func (c *MultiUserController) IsDepartureController(ap, rwy, sid string) bool
func (*MultiUserController) IsInboundController ¶ added in v0.11.2
func (c *MultiUserController) IsInboundController(group string) bool
type Nav ¶
type Nav struct {
// the pilot has not yet started to follow. Note that only a single
// such assignment is stored; if the controller issues a first heading
// and then a second shortly afterward, before the first has been
// followed, it's fine for the second to override it.
DeferredHeading *DeferredHeading
}
State related to navigation. Pointers are used for optional values; nil -> unset/unspecified.
func MakeArrivalNav ¶
func MakeArrivalNav(arr *Arrival, fp FlightPlan, perf AircraftPerformance, nmPerLongitude float32, magneticVariation float32, lg *log.Logger) *Nav
func MakeDepartureNav ¶
func MakeDepartureNav(fp FlightPlan, perf AircraftPerformance, assignedAlt, clearedAlt, speedRestriction int, wp []Waypoint, nmPerLongitude float32, magneticVariation float32, lg *log.Logger) *Nav
func MakeOverflightNav ¶ added in v0.11.2
func MakeOverflightNav(of *Overflight, fp FlightPlan, perf AircraftPerformance, nmPerLongitude float32, magneticVariation float32, lg *log.Logger) *Nav
func (*Nav) AssignAltitude ¶
func (nav *Nav) AssignAltitude(alt float32, afterSpeed bool) PilotResponse
func (*Nav) AssignHeading ¶
func (nav *Nav) AssignHeading(hdg float32, turn TurnMethod) PilotResponse
func (*Nav) AssignSpeed ¶
func (nav *Nav) AssignSpeed(speed float32, afterAltitude bool) PilotResponse
func (*Nav) AssignedHeading ¶
AssignedHeading returns the aircraft's current heading assignment, if any, regardless of whether the pilot has yet started following it.
func (*Nav) AtFixCleared ¶
func (nav *Nav) AtFixCleared(fix, id string) PilotResponse
func (*Nav) CancelApproachClearance ¶
func (nav *Nav) CancelApproachClearance() PilotResponse
func (*Nav) ClimbViaSID ¶
func (nav *Nav) ClimbViaSID() PilotResponse
func (*Nav) ContactMessage ¶
func (nav *Nav) ContactMessage(reportingPoints []ReportingPoint, star string) string
func (*Nav) CrossFixAt ¶
func (nav *Nav) CrossFixAt(fix string, ar *AltitudeRestriction, speed int) PilotResponse
func (*Nav) DepartFixDirect ¶
func (nav *Nav) DepartFixDirect(fixa string, fixb string) PilotResponse
func (*Nav) DepartFixHeading ¶
func (nav *Nav) DepartFixHeading(fix string, hdg float32) PilotResponse
func (*Nav) DepartOnCourse ¶
func (*Nav) DepartureMessage ¶
func (*Nav) DescendViaSTAR ¶
func (nav *Nav) DescendViaSTAR() PilotResponse
func (*Nav) DirectFix ¶
func (nav *Nav) DirectFix(fix string) PilotResponse
func (*Nav) EnqueueHeading ¶
func (nav *Nav) EnqueueHeading(h NavHeading)
EnqueueHeading enqueues the given heading assignment to be followed a few seconds in the future. It should only be called for heading changes due to controller instructions to the pilot and never in cases where the autopilot is changing the heading assignment.
func (*Nav) ExpectApproach ¶
func (nav *Nav) ExpectApproach(airport *Airport, id string, runwayWaypoints map[string]WaypointArray, lg *log.Logger) PilotResponse
func (*Nav) ExpediteClimb ¶
func (nav *Nav) ExpediteClimb() PilotResponse
func (*Nav) ExpediteDescent ¶
func (nav *Nav) ExpediteDescent() PilotResponse
func (*Nav) FlyPresentHeading ¶
func (nav *Nav) FlyPresentHeading() PilotResponse
func (*Nav) GoAround ¶
func (nav *Nav) GoAround() PilotResponse
func (*Nav) InterceptLocalizer ¶
func (nav *Nav) InterceptLocalizer(airport string) PilotResponse
func (*Nav) IsAirborne ¶
func (*Nav) LocalizerHeading ¶
func (*Nav) MaintainMaximumForward ¶
func (nav *Nav) MaintainMaximumForward() PilotResponse
func (*Nav) MaintainSlowestPractical ¶
func (nav *Nav) MaintainSlowestPractical() PilotResponse
func (*Nav) OnApproach ¶
func (*Nav) OnExtendedCenterline ¶
OnExtendedCenterline checks if the flight position is less than maxNmDeviation from the infinite line defined by the assigned approach localizer
func (*Nav) SayAltitude ¶
func (nav *Nav) SayAltitude() PilotResponse
func (*Nav) SayHeading ¶
func (nav *Nav) SayHeading() PilotResponse
func (*Nav) SaySpeed ¶
func (nav *Nav) SaySpeed() PilotResponse
func (*Nav) Summary ¶
func (nav *Nav) Summary(fp FlightPlan, lg *log.Logger) string
Full human-readable summary of nav state for use when paused and mouse hover on the scope
func (*Nav) TargetHeading ¶
type NavAltitude ¶
type NavAltitude struct {
// restriction at the way point; we keep trying until we get there (or
// are given another instruction..)
Restriction *AltitudeRestriction
}
type NavApproach ¶
type NavApproach struct {
}
type NavFixAssignment ¶
type NavFixAssignment struct {
Altitude *AltitudeRestriction
Speed *float32
}
Fix *Waypoint
Heading *float32
}
}
type NavHeading ¶
type NavHeading struct {
}
type Overflight ¶ added in v0.11.2
type Overflight struct {
Waypoints WaypointArray `json:"waypoints"`
InitialAltitude float32 `json:"initial_altitude"`
CruiseAltitude float32 `json:"cruise_altitude"`
AssignedAltitude float32 `json:"assigned_altitude"`
InitialSpeed float32 `json:"initial_speed"`
AssignedSpeed float32 `json:"assigned_speed"`
SpeedRestriction float32 `json:"speed_restriction"`
InitialController string `json:"initial_controller"`
Scratchpad string `json:"scratchpad"`
SecondaryScratchpad string `json:"secondary_scratchpad"`
Description string `json:"description"`
Airlines []OverflightAirline `json:"airlines"`
}
func (*Overflight) PostDeserialize ¶ added in v0.11.2
func (of *Overflight) PostDeserialize(loc Locator, nmPerLongitude float32, magneticVariation float32, airports map[string]*Airport, controlPositions map[string]*Controller, e *util.ErrorLogger)
type OverflightAirline ¶ added in v0.11.2
type PilotResponse ¶
type ProcedureTurn ¶
type ProcedureTurn struct {
Type PTType
RightTurns bool
ExitAltitude int `json:",omitempty"`
MinuteLimit float32 `json:",omitempty"`
NmLimit float32 `json:",omitempty"`
Entry180NoPT bool `json:",omitempty"`
}
func (*ProcedureTurn) SelectRacetrackEntry ¶
func (pt *ProcedureTurn) SelectRacetrackEntry(inboundHeading float32, aircraftFixHeading float32) RacetrackPTEntry
type RacetrackPTEntry ¶
type RacetrackPTEntry int
func (RacetrackPTEntry) MarshalJSON ¶
func (e RacetrackPTEntry) MarshalJSON() ([]byte, error)
func (RacetrackPTEntry) String ¶
func (e RacetrackPTEntry) String() string
func (*RacetrackPTEntry) UnmarshalJSON ¶
func (e *RacetrackPTEntry) UnmarshalJSON(b []byte) error
type RadarSite ¶
type RadarSite struct {
Char string `json:"char"`
PositionString string `json:"position"`
Position math.Point2LL // not in JSON, set during deserialize
Elevation int32 `json:"elevation"`
PrimaryRange int32 `json:"primary_range"`
SecondaryRange int32 `json:"secondary_range"`
SlopeAngle float32 `json:"slope_angle"`
SilenceAngle float32 `json:"silence_angle"`
}
type RadarTrack ¶
type RadioTransmission ¶
type RadioTransmission struct {
Controller string
Message string
Type RadioTransmissionType
}
type RadioTransmissionType ¶
type RadioTransmissionType int
func (RadioTransmissionType) String ¶
func (r RadioTransmissionType) String() string
type RedirectedHandoff ¶
type RedirectedHandoff struct {
OriginalOwner string // Controller callsign
Redirector []string // Controller callsign
RedirectedTo string // Controller callsign
}
func (*RedirectedHandoff) AddRedirector ¶
func (rd *RedirectedHandoff) AddRedirector(ctrl *Controller)
func (*RedirectedHandoff) GetLastRedirector ¶
func (rd *RedirectedHandoff) GetLastRedirector() string
func (*RedirectedHandoff) ShouldFallbackToHandoff ¶
func (rd *RedirectedHandoff) ShouldFallbackToHandoff(ctrl, octrl string) bool
func (*RedirectedHandoff) ShowRDIndicator ¶
func (rd *RedirectedHandoff) ShowRDIndicator(callsign string, RDIndicatorEnd time.Time) bool
type ReportingPoint ¶
type STAR ¶
type STAR struct {
Transitions map[string]WaypointArray
RunwayWaypoints map[string]WaypointArray
}
func (STAR) Check ¶
func (s STAR) Check(e *util.ErrorLogger)
func (STAR) GetWaypointsFrom ¶
func (s STAR) GetWaypointsFrom(fix string) WaypointArray
func (STAR) HasWaypoint ¶
type SplitConfiguration ¶
type SplitConfiguration map[string]*MultiUserController
callsign -> controller contig
func (SplitConfiguration) GetDepartureController ¶
func (sc SplitConfiguration) GetDepartureController(airport, runway, sid string) (string, error)
func (SplitConfiguration) GetInboundController ¶ added in v0.11.2
func (sc SplitConfiguration) GetInboundController(group string) (string, error)
func (SplitConfiguration) ResolveController ¶
func (sc SplitConfiguration) ResolveController(callsign string, active func(callsign string) bool) (string, error)
ResolveController takes a controller callsign and returns the signed-in controller that is responsible for that position (possibly just the provided callsign).
type SplitConfigurationSet ¶
type SplitConfigurationSet map[string]SplitConfiguration
split -> config
func (SplitConfigurationSet) GetConfiguration ¶
func (sc SplitConfigurationSet) GetConfiguration(split string) (SplitConfiguration, error)
func (SplitConfigurationSet) GetPrimaryController ¶
func (sc SplitConfigurationSet) GetPrimaryController(split string) (string, error)
func (SplitConfigurationSet) Len ¶
func (sc SplitConfigurationSet) Len() int
func (SplitConfigurationSet) Splits ¶
func (sc SplitConfigurationSet) Splits() []string
type SquawkCodePool ¶ added in v0.11.2
type SquawkCodePool struct {
First, Last Squawk // inclusive range of codes
GetOffset int
// Available squawk codes are represented by a bitset
AssignedBits []uint64
}
func MakeCompleteSquawkCodePool ¶ added in v0.11.2
func MakeCompleteSquawkCodePool() *SquawkCodePool
func MakeSquawkBankCodePool ¶ added in v0.11.2
func MakeSquawkBankCodePool(bank int) *SquawkCodePool
func (*SquawkCodePool) Claim ¶ added in v0.11.2
func (p *SquawkCodePool) Claim(code Squawk) error
func (*SquawkCodePool) Get ¶ added in v0.11.2
func (p *SquawkCodePool) Get() (Squawk, error)
func (*SquawkCodePool) IsAssigned ¶ added in v0.11.2
func (p *SquawkCodePool) IsAssigned(code Squawk) bool
func (*SquawkCodePool) NumAvailable ¶ added in v0.11.2
func (p *SquawkCodePool) NumAvailable() int
func (*SquawkCodePool) Return ¶ added in v0.11.2
func (p *SquawkCodePool) Return(code Squawk) error
type StaticDatabase ¶
type StaticDatabase struct {
Airports map[string]FAAAirport
Fixes map[string]Fix
Airways map[string][]Airway
Callsigns map[string]string // 3 letter -> callsign
AircraftTypeAliases map[string]string
AircraftPerformance map[string]AircraftPerformance
Airlines map[string]Airline
MagneticGrid MagneticGrid
ARTCCs map[string]ARTCC
ERAMAdaptations map[string]ERAMAdaptation
TRACONs map[string]TRACON
MVAs map[string][]MVA // TRACON -> MVAs
}
var DB *StaticDatabase
func (*StaticDatabase) CheckAirline ¶
func (db *StaticDatabase) CheckAirline(icao, fleet string, e *util.ErrorLogger)
func (StaticDatabase) LookupWaypoint ¶
func (d StaticDatabase) LookupWaypoint(f string) (math.Point2LL, bool)
type TransponderMode ¶
type TransponderMode int
func (TransponderMode) String ¶
func (t TransponderMode) String() string
type TurnMethod ¶
type TurnMethod int
func (TurnMethod) String ¶
func (t TurnMethod) String() string
type VideoMap ¶
type VideoMap struct {
Label string
Group int // 0 -> A, 1 -> B
Name string
Id int
Lines [][]math.Point2LL
CommandBuffer renderer.CommandBuffer
}
Note: this should match ViceMapSpec in crc2vice (except for the command buffer)
type VideoMapLibrary ¶
type VideoMapLibrary struct {
// contains filtered or unexported fields
}
VideoMapLibrary maintains a collection of video maps loaded from multiple files. Video maps are loaded on demand.
func MakeVideoMapLibrary ¶
func MakeVideoMapLibrary() *VideoMapLibrary
func (*VideoMapLibrary) AddFile ¶
func (ml *VideoMapLibrary) AddFile(filesystem fs.FS, filename string, referenced map[string]interface{}, e *util.ErrorLogger)
AddFile adds a video map to the library. referenced encodes which maps in the file are actually used; the loading code uses this information to skip the work of generating CommandBuffers for unused video maps.
func (VideoMapLibrary) AvailableFiles ¶
func (ml VideoMapLibrary) AvailableFiles() []string
func (VideoMapLibrary) AvailableMaps ¶
func (ml VideoMapLibrary) AvailableMaps(filename string) []string
func (*VideoMapLibrary) GetMap ¶
func (ml *VideoMapLibrary) GetMap(filename, mapname string) (*VideoMap, error)
func (VideoMapLibrary) HaveFile ¶
func (ml VideoMapLibrary) HaveFile(filename string) bool
func (VideoMapLibrary) HaveMap ¶
func (ml VideoMapLibrary) HaveMap(filename, mapname string) bool
type Waypoint ¶
type Waypoint struct {
Fix string `json:"fix"`
Location math.Point2LL // not provided in scenario JSON; derived from fix
AltitudeRestriction *AltitudeRestriction `json:"altitude_restriction,omitempty"`
Speed int `json:"speed,omitempty"`
Heading int `json:"heading,omitempty"` // outbound heading after waypoint
ProcedureTurn *ProcedureTurn `json:"pt,omitempty"`
NoPT bool `json:"nopt,omitempty"`
Handoff bool `json:"handoff,omitempty"`
PointOut string `json:"pointout,omitempty"`
FlyOver bool `json:"flyover,omitempty"`
Delete bool `json:"delete,omitempty"`
Arc *DMEArc `json:"arc,omitempty"`
IAF, IF, FAF bool // not provided in scenario JSON; derived from fix
Airway string // when parsing waypoints, this is set if we're on an airway after the fix
OnSID, OnSTAR bool // set during deserialization
}
type WaypointArray ¶
type WaypointArray []Waypoint
func (WaypointArray) CheckApproach ¶
func (w WaypointArray) CheckApproach(e *util.ErrorLogger, controllers map[string]*Controller)
func (WaypointArray) CheckArrival ¶
func (w WaypointArray) CheckArrival(e *util.ErrorLogger, ctrl map[string]*Controller)
func (WaypointArray) CheckDeparture ¶
func (w WaypointArray) CheckDeparture(e *util.ErrorLogger, controllers map[string]*Controller)
func (WaypointArray) CheckOverflight ¶ added in v0.11.2
func (w WaypointArray) CheckOverflight(e *util.ErrorLogger, ctrl map[string]*Controller)
func (WaypointArray) Encode ¶
func (wslice WaypointArray) Encode() string
func (WaypointArray) RouteString ¶ added in v0.11.2
func (w WaypointArray) RouteString() string
func (*WaypointArray) UnmarshalJSON ¶
func (w *WaypointArray) UnmarshalJSON(b []byte) error