server

package
v0.13.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2025 License: GPL-3.0 Imports: 43 Imported by: 0

Documentation

Index

Constants

View Source
const AcceptHandoffRPC = "Sim.AcceptHandoff"
View Source
const AcceptRedirectedHandoffRPC = "Sim.AcceptRedirectedHandoff"
View Source
const AcknowledgePointOutRPC = "Sim.AcknowledgePointOut"
View Source
const ActivateFlightPlanRPC = "Sim.ActivateFlightPlan"
View Source
const AddLocalRPC = "SimManager.AddLocal"
View Source
const AssociateFlightPlanRPC = "Sim.AssociateFlightPlan"
View Source
const BroadcastRPC = "SimManager.Broadcast"
View Source
const CancelHandoffRPC = "Sim.CancelHandoff"
View Source
const ConfigureATPARPC = "Sim.ConfigureATPA"
View Source
const ConnectRPC = "SimManager.Connect"
View Source
const ConnectToSimRPC = "SimManager.ConnectToSim"
View Source
const ConsolidateTCPRPC = "Sim.ConsolidateTCP"
View Source
const CreateArrivalRPC = "Sim.CreateArrival"
View Source
const CreateDepartureRPC = "Sim.CreateDeparture"
View Source
const CreateFlightPlanRPC = "Sim.CreateFlightPlan"
View Source
const CreateOverflightRPC = "Sim.CreateOverflight"
View Source
const CreateRestrictionAreaRPC = "Sim.CreateRestrictionArea"
View Source
const DeconsolidateTCPRPC = "Sim.DeconsolidateTCP"
View Source
const DeleteAircraftRPC = "Sim.DeleteAircraft"
View Source
const DeleteAllAircraftRPC = "Sim.DeleteAllAircraft"
View Source
const DeleteFlightPlanRPC = "Sim.DeleteFlightPlan"
View Source
const DeleteRestrictionAreaRPC = "Sim.DeleteRestrictionArea"
View Source
const FastForwardRPC = "Sim.FastForward"
View Source
const FlightPlanDirectRPC = "Sim.FlightPlanDirect"
View Source
const ForceQLRPC = "Sim.ForceQL"
View Source
const GetAircraftDisplayStateRPC = "Sim.GetAircraftDisplayState"
View Source
const GetAllVoicesRPC = "SimManager.GetAllVoices"
View Source
const GetAtmosGridRPC = "SimManager.GetAtmosGrid"
View Source
const GetMETARRPC = "SimManager.GetMETAR"
View Source
const GetPrecipURLRPC = "SimManager.GetPrecipURL"
View Source
const GetRunningSimsRPC = "SimManager.GetRunningSims"
View Source
const GetSerializeSimRPC = "SimManager.GetSerializeSim"
View Source
const GetStateUpdateRPC = "Sim.GetStateUpdate"
View Source
const GetTimeIntervalsRPC = "SimManager.GetTimeIntervals"
View Source
const GetVideoMapLibraryRPC = "Sim.GetVideoMapLibrary"
View Source
const GlobalMessageRPC = "Sim.GlobalMessage"
View Source
const HandoffTrackRPC = "Sim.HandoffTrack"
View Source
const LaunchAircraftRPC = "Sim.LaunchAircraft"
View Source
const ModifyFlightPlanRPC = "Sim.ModifyFlightPlan"
View Source
const NewSimRPC = "SimManager.NewSim"
View Source
const PointOutRPC = "Sim.PointOut"
View Source
const RecallPointOutRPC = "Sim.RecallPointOut"
View Source
const RedirectHandoffRPC = "Sim.RedirectHandoff"
View Source
const RejectPointOutRPC = "Sim.RejectPointOut"
View Source
const ReleaseDepartureRPC = "Sim.ReleaseDeparture"
View Source
const RepositionTrackRPC = "Sim.RepositionTrack"
View Source
const RequestFlightFollowingRPC = "Sim.RequestFlightFollowing"
View Source
const RunAircraftCommandsRPC = "Sim.RunAircraftCommands"
View Source
const SendRouteCoordinatesRPC = "Sim.SendRouteCoordinates"
View Source
const SetLaunchConfigRPC = "Sim.SetLaunchConfig"
View Source
const SetSimRateRPC = "Sim.SetSimRate"
View Source
const SetWaypointCommandsRPC = "Sim.SetWaypointCommands"
View Source
const SignOffRPC = "Sim.SignOff"
View Source
const TakeOrReturnLaunchControlRPC = "Sim.TakeOrReturnLaunchControl"
View Source
const TextToSpeechRPC = "SimManager.TextToSpeech"
View Source
const TogglePauseRPC = "Sim.TogglePause"
View Source
const TriggerEmergencyRPC = "Sim.TriggerEmergency"
View Source
const UpdateRestrictionAreaRPC = "Sim.UpdateRestrictionArea"
View Source
const ViceHTTPServerPort = 6502
View Source
const ViceRPCVersion = ViceSerializeVersion
View Source
const ViceSerializeVersion = 51

Version history 0-7 not explicitly recorded 8: STARSPane DCB improvements, added DCB font size control 9: correct STARSColors, so update brightness settings to compensate 10: stop being clever about JSON encoding Waypoint arrays to strings 11: expedite, intercept localizer, fix airspace serialization 12: set 0 DCB brightness to 50 (WAR not setting a default for it) 13: update departure handling for multi-controllers (and rename some members) 14: Aircraft ArrivalHandoffController -> WaypointHandoffController 15: audio engine rewrite 16: cleared/assigned alt for departures, minor nav changes 17: weather intensity default bool 18: STARS ATPA 19: runway waypoints now per-airport 20: "stars_config" and various scenario fields moved there, plus STARSFacilityAdaptation 21: STARS DCB drawing changes, so system list positions changed 22: draw points using triangles, remove some CommandBuffer commands 23: video map format update 24: packages, audio to platform, flight plan processing 25: remove ArrivalGroup/Index from Aircraft 26: make allow_long_scratchpad a single bool 27: rework prefs, videomaps 28: new departure flow 29: TFR cache 30: video map improvements 31: audio squelch for pilot readback 32: VFRs, custom spcs, pilot reported altitude, ... 33: VFRs v2 34: sim/server refactor, signon flow 35: VFRRunways in sim.State, METAR Wind struct changes 36: STARS center representation changes 37: rework STARS flight plan (et al) 38: rework STARS flight plan (et al) ongoing 39: speech v0.1 40: clean up what's transmitted server->client at initial connect/spawn, gob->msgpack 41: sim.State.SimStartTime 42: server.NewSimRequest.StartTime 43: WX rework (scrape, etc.) 44: store pane instances and split positions separately, rather than the entire DisplayNode hierarchy 45: Change STARSFacilityAdaptation to FacilityAdaptation 46: Remove token from video map fetch RPC, misc wx updates 47: pass PrimaryAirport to GetAtmosGrid RPC 48: release bump 49: STARS consolidation 50: rework State/StateUpdate management 51: preemptive before v0.13.3 release

View Source
const ViceServerAddress = "vice.pharr.org"
View Source
const ViceServerPort = 8000 + ViceRPCVersion

Variables

View Source
var (
	ErrControllerAlreadySignedIn = errors.New("Controller with that callsign already signed in")
	ErrDuplicateSimName          = errors.New("A sim with that name already exists")
	ErrInvalidCommandSyntax      = errors.New("Invalid command syntax")
	ErrInvalidControllerToken    = errors.New("Invalid controller token")
	ErrInvalidPassword           = errors.New("Invalid password")
	ErrInvalidSimConfiguration   = errors.New("Invalid SimConfiguration")
	ErrNoNamedSim                = errors.New("No Sim with that name")
	ErrNoSimForControllerToken   = errors.New("No Sim running for controller token")
	ErrRPCTimeout                = errors.New("RPC call timed out")
	ErrRPCVersionMismatch        = errors.New("Client and server RPC versions don't match")
	ErrServerDisconnected        = errors.New("Server disconnected")
	ErrTCWAlreadyOccupied        = errors.New("TCW is already occupied")
	ErrWeatherUnavailable        = errors.New("Unable to reach weather server")
)
View Source
var ErrMissingTTSCredentials = errors.New("VICE_GCS_CREDENTIALS not set")
View Source
var ErrTTSUnavailable = errors.New("TTS service unavailable")

Functions

func CreateLaunchConfig

func CreateLaunchConfig(scenario *scenario, scenarioGroup *scenarioGroup) sim.LaunchConfig

CreateLaunchConfig creates a properly initialized LaunchConfig from scenario data

func CreateNewSimConfiguration

func CreateNewSimConfiguration(catalog *ScenarioCatalog, scenarioGroup *scenarioGroup, scenarioName string) (*sim.NewSimConfiguration, error)

CreateNewSimConfiguration creates a NewSimConfiguration from scenario components

func LaunchServer

func LaunchServer(config ServerLaunchConfig, lg *log.Logger)

func LaunchServerAsync

func LaunchServerAsync(config ServerLaunchConfig, lg *log.Logger) (int, util.ErrorLogger, string)

func ListAllScenarios

func ListAllScenarios(scenarioFilename, videoMapFilename string, lg *log.Logger) ([]string, error)

ListAllScenarios returns a sorted list of all available scenarios in TRACON/scenario format

func LoadScenarioGroups

func LoadScenarioGroups(extraScenarioFilename string, extraVideoMapFilename string,
	e *util.ErrorLogger, lg *log.Logger) (map[string]map[string]*scenarioGroup, map[string]map[string]*ScenarioCatalog, map[string]*sim.VideoMapManifest, string)

LoadScenarioGroups loads all of the available scenarios, both from the scenarios/ directory in the source code distribution as well as, optionally, a scenario file provided on the command line. It doesn't try to do any sort of meaningful error handling but it does try to continue on in the presence of errors; all errors will be printed and the program will exit if there are any. We'd rather force any errors due to invalid scenario definitions to be fixed...

Returns: scenarioGroups, catalogs, mapManifests, extraScenarioErrors If the extra scenario file has errors, they are returned in extraScenarioErrors and that scenario is not loaded, but execution continues.

func MakeGCSProvider added in v0.13.0

func MakeGCSProvider(lg *log.Logger) (wx.Provider, error)

func MakeRPCProvider added in v0.13.0

func MakeRPCProvider(ctx context.Context, serverAddress string, lg *log.Logger) (wx.Provider, error)

func MakeResourcesWXProvider added in v0.13.0

func MakeResourcesWXProvider(lg *log.Logger) wx.Provider

func MakeWXProvider added in v0.13.0

func MakeWXProvider(ctx context.Context, serverAddress string, lg *log.Logger) (wx.Provider, error)

func NewGoogleTTSProvider

func NewGoogleTTSProvider(lg *log.Logger) (sim.TTSProvider, error)

func PostDeserializeFacilityAdaptation added in v0.13.0

func PostDeserializeFacilityAdaptation(s *sim.FacilityAdaptation, e *util.ErrorLogger, sg *scenarioGroup,
	manifest *sim.VideoMapManifest)

func TryDecodeError

func TryDecodeError(e error) error

func TryDecodeErrorString

func TryDecodeErrorString(s string) error

Types

type ACIDSpecifier

type ACIDSpecifier struct {
	ControllerToken string
	ACID            sim.ACID
}

type ATPAConfigArgs added in v0.13.3

type ATPAConfigArgs struct {
	ControllerToken string
	Op              sim.ATPAConfigOp
	VolumeId        string
}

type ATPAConfigResult added in v0.13.3

type ATPAConfigResult struct {
	SimStateUpdate
	Output string
}

type AcceptHandoffArgs

type AcceptHandoffArgs ACIDSpecifier

type ActivateFlightPlanArgs

type ActivateFlightPlanArgs struct {
	ControllerToken     string
	TrackCallsign       av.ADSBCallsign
	FpACID              sim.ACID
	FlightPlanSpecifier sim.FlightPlanSpecifier
}

type AircraftCommandsArgs

type AircraftCommandsArgs struct {
	ControllerToken string
	Callsign        av.ADSBCallsign
	Commands        string
	Multiple        bool
	ClickedTrack    bool
}

type AircraftCommandsResult

type AircraftCommandsResult struct {
	ErrorMessage   string
	RemainingInput string
}

If an RPC call returns an error, then the result argument is not returned(!?). So we don't use the error type for syntax errors...

type AircraftSpecifier

type AircraftSpecifier struct {
	ControllerToken string
	Callsign        av.ADSBCallsign
}

type AssociateFlightPlanArgs

type AssociateFlightPlanArgs struct {
	ControllerToken     string
	Callsign            av.ADSBCallsign
	FlightPlanSpecifier sim.FlightPlanSpecifier
}

type BroadcastMessage added in v0.13.3

type BroadcastMessage struct {
	Password string
	Message  string
}

type CancelHandoffArgs

type CancelHandoffArgs ACIDSpecifier

type ConnectResult

type ConnectResult struct {
	ScenarioCatalogs    map[string]map[string]*ScenarioCatalog
	RunningSims         map[string]*RunningSim
	HaveTTS             bool
	AvailableWXByTRACON map[string][]util.TimeInterval
}

type ConsolidateTCPArgs added in v0.13.3

type ConsolidateTCPArgs struct {
	ControllerToken string
	ReceivingTCW    sim.TCW
	SendingTCP      sim.TCP
	Type            sim.ConsolidationType
}

type CreateArrivalArgs

type CreateArrivalArgs struct {
	ControllerToken string
	Group           string
	Airport         string
}

type CreateDepartureArgs

type CreateDepartureArgs struct {
	ControllerToken string
	Airport         string
	Runway          string
	Category        string
	Rules           av.FlightRules
}

type CreateFlightPlanArgs

type CreateFlightPlanArgs struct {
	ControllerToken     string
	FlightPlanSpecifier sim.FlightPlanSpecifier
}

type CreateOverflightArgs

type CreateOverflightArgs struct {
	ControllerToken string
	Group           string
}

type CreateRestrictionAreaResultArgs

type CreateRestrictionAreaResultArgs struct {
	Index       int
	StateUpdate SimStateUpdate
}

type DeconsolidateTCPArgs added in v0.13.3

type DeconsolidateTCPArgs struct {
	ControllerToken string
	TCP             sim.TCP // TCP to deconsolidate (optional - if empty, deconsolidate user's own TCP)
}

type DeleteAircraftArgs

type DeleteAircraftArgs AircraftSpecifier

type DeleteAircraftListArgs

type DeleteAircraftListArgs struct {
	ControllerToken string
	Aircraft        []sim.Aircraft
}

type DeleteFlightPlanArgs

type DeleteFlightPlanArgs ACIDSpecifier

type FlightPlanDirectArgs added in v0.13.0

type FlightPlanDirectArgs struct {
	ControllerToken string
	ACID            sim.ACID
	Fix             string
}

type ForceQLArgs

type ForceQLArgs struct {
	ControllerToken string
	ACID            sim.ACID
	ToPosition      sim.ControlPosition
}

type GCSProvider added in v0.13.0

type GCSProvider struct {
	// contains filtered or unexported fields
}

func (*GCSProvider) GetAtmosGrid added in v0.13.0

func (g *GCSProvider) GetAtmosGrid(tracon string, t time.Time, primaryAirport string) (atmos *wx.AtmosByPointSOA, atmosTime time.Time, nextTime time.Time, err error)

func (*GCSProvider) GetAvailableTimeIntervals added in v0.13.0

func (g *GCSProvider) GetAvailableTimeIntervals() map[string][]util.TimeInterval

func (*GCSProvider) GetMETAR added in v0.13.0

func (g *GCSProvider) GetMETAR(airports []string) (map[string]wx.METARSOA, error)

func (*GCSProvider) GetPrecipURL added in v0.13.0

func (g *GCSProvider) GetPrecipURL(tracon string, t time.Time) (string, time.Time, error)

type GetAtmosArgs added in v0.13.0

type GetAtmosArgs struct {
	Facility       string
	Time           time.Time
	PrimaryAirport string
}

type GetAtmosResult added in v0.13.0

type GetAtmosResult struct {
	AtmosByPointSOA *wx.AtmosByPointSOA
	Time            time.Time
	NextTime        time.Time
}

type GlobalMessageArgs

type GlobalMessageArgs struct {
	ControllerToken string
	Message         string
}

type GoogleTTSProvider

type GoogleTTSProvider struct {
	// contains filtered or unexported fields
}

GoogleTTSProvider implements sim.TTSProvider using Google Cloud TTS

func (*GoogleTTSProvider) GetAllVoices

func (g *GoogleTTSProvider) GetAllVoices() sim.TTSVoicesFuture

func (*GoogleTTSProvider) TextToSpeech

func (g *GoogleTTSProvider) TextToSpeech(voice sim.Voice, text string) sim.TTSSpeechFuture

type HandoffArgs

type HandoffArgs struct {
	ControllerToken string
	ACID            sim.ACID
	ToPosition      sim.ControlPosition
}

type HeldDepartureArgs

type HeldDepartureArgs AircraftSpecifier

type JoinSimRequest added in v0.13.3

type JoinSimRequest struct {
	SimName             string
	TCW                 sim.TCW   // Which TCW to sign into
	SelectedTCPs        []sim.TCP // TCPs to consolidate (non-relief only)
	Initials            string    // Controller initials (e.g., "MP")
	Password            string
	Privileged          bool
	DisableTextToSpeech bool
	JoiningAsRelief     bool
}

type LaunchAircraftArgs

type LaunchAircraftArgs struct {
	ControllerToken string
	Aircraft        sim.Aircraft
	DepartureRunway string
}

type ModifyFlightPlanArgs

type ModifyFlightPlanArgs struct {
	ControllerToken     string
	FlightPlanSpecifier sim.FlightPlanSpecifier
	ACID                sim.ACID
}

type NewSimRequest added in v0.13.3

type NewSimRequest struct {
	Facility     string
	NewSimName   string
	GroupName    string
	ScenarioName string

	ScenarioSpec *ScenarioSpec
	StartTime    time.Time

	TFRs        []av.TFR
	Emergencies []sim.Emergency

	RequirePassword bool
	Password        string

	EnforceUniqueCallsignSuffix bool

	PilotErrorInterval float32

	Initials            string // Controller initials (e.g., "XX")
	Privileged          bool
	DisableTextToSpeech bool
}

func MakeNewSimRequest added in v0.13.3

func MakeNewSimRequest() NewSimRequest

type NewSimResult

type NewSimResult struct {
	SimState        *SimState
	ControllerToken string
	SpeechWSPort    int
}

type PointOutArgs

type PointOutArgs struct {
	ControllerToken string
	ACID            sim.ACID
	ToPosition      sim.ControlPosition
}

type PrecipURL added in v0.13.0

type PrecipURL struct {
	URL      string
	NextTime time.Time
}

type PrecipURLArgs added in v0.13.0

type PrecipURLArgs struct {
	Facility string
	Time     time.Time
}

type RPCProvider added in v0.13.0

type RPCProvider struct {
	// contains filtered or unexported fields
}

func (*RPCProvider) GetAtmosGrid added in v0.13.0

func (r *RPCProvider) GetAtmosGrid(facility string, t time.Time, primaryAirport string) (atmos *wx.AtmosByPointSOA, time time.Time, nextTime time.Time, err error)

func (*RPCProvider) GetAvailableTimeIntervals added in v0.13.0

func (r *RPCProvider) GetAvailableTimeIntervals() map[string][]util.TimeInterval

func (*RPCProvider) GetMETAR added in v0.13.0

func (r *RPCProvider) GetMETAR(airports []string) (map[string]wx.METARSOA, error)

func (*RPCProvider) GetPrecipURL added in v0.13.0

func (r *RPCProvider) GetPrecipURL(facility string, t time.Time) (string, time.Time, error)

type RemoteTTSProvider

type RemoteTTSProvider struct {
	// contains filtered or unexported fields
}

RemoteTTSProvider implements sim.TTSProvider by making RPC calls to a remote server

func NewRemoteTTSProvider

func NewRemoteTTSProvider(ctx context.Context, serverAddress string, lg *log.Logger) (*RemoteTTSProvider, error)

NewRemoteTTSProvider creates a new RemoteTTSProvider that connects to the specified server

func (*RemoteTTSProvider) GetAllVoices

func (r *RemoteTTSProvider) GetAllVoices() sim.TTSVoicesFuture

GetAllVoices returns all available voices from the remote server, cached after first call

func (*RemoteTTSProvider) TextToSpeech

func (r *RemoteTTSProvider) TextToSpeech(voice sim.Voice, text string) sim.TTSSpeechFuture

TextToSpeech converts text to speech using the remote server

type RepositionTrackArgs

type RepositionTrackArgs struct {
	ControllerToken string
	ACID            sim.ACID        // from
	Callsign        av.ADSBCallsign // to
	Position        math.Point2LL   // to
}

type ResourcesWXProvider added in v0.13.0

type ResourcesWXProvider struct {
	// contains filtered or unexported fields
}

ResourcesWXProvider implements the wx.Provider interface, providing information from the local resources directory (more or less intended for offline use of vice).

func (*ResourcesWXProvider) GetAtmosGrid added in v0.13.0

func (r *ResourcesWXProvider) GetAtmosGrid(tracon string, tGet time.Time, primaryAirport string) (*wx.AtmosByPointSOA, time.Time, time.Time, error)

func (*ResourcesWXProvider) GetAvailableTimeIntervals added in v0.13.0

func (r *ResourcesWXProvider) GetAvailableTimeIntervals() map[string][]util.TimeInterval

func (*ResourcesWXProvider) GetMETAR added in v0.13.0

func (r *ResourcesWXProvider) GetMETAR(airports []string) (map[string]wx.METARSOA, error)

func (*ResourcesWXProvider) GetPrecipURL added in v0.13.0

func (r *ResourcesWXProvider) GetPrecipURL(tracon string, t time.Time) (string, time.Time, error)

type RestrictionAreaArgs

type RestrictionAreaArgs struct {
	ControllerToken string
	Index           int
	RestrictionArea av.RestrictionArea
}

type RunningSim added in v0.13.3

type RunningSim struct {
	GroupName                    string
	ScenarioName                 string
	RequirePassword              bool
	ScenarioDefaultConsolidation map[sim.TCP][]sim.TCP
	CurrentConsolidation         map[sim.TCW]TCPConsolidation
}

type ScenarioCatalog added in v0.13.3

type ScenarioCatalog struct {
	Scenarios        map[string]*ScenarioSpec
	ControlPositions map[sim.TCP]*av.Controller
	DefaultScenario  string
	Facility         string
	ARTCC            string
	Area             string
	Airports         []string // ICAO codes of airports in this scenario group
}

Client-side info about the available scenarios.

func LookupScenario

func LookupScenario(tracon, scenarioName string, scenarioGroups map[string]map[string]*scenarioGroup, catalogs map[string]map[string]*ScenarioCatalog) (*ScenarioCatalog, *scenarioGroup, error)

LookupScenario finds a scenario configuration by TRACON/scenario name

type ScenarioSpec added in v0.13.3

type ScenarioSpec struct {
	ControllerConfiguration *sim.ControllerConfiguration
	PrimaryAirport          string
	MagneticVariation       float32
	WindSpecifier           *wx.WindSpecifier

	LaunchConfig sim.LaunchConfig

	DepartureRunways []sim.DepartureRunway
	ArrivalRunways   []sim.ArrivalRunway
}

func (*ScenarioSpec) AllAirports added in v0.13.3

func (s *ScenarioSpec) AllAirports() []string

type SendRouteCoordinatesArgs added in v0.13.0

type SendRouteCoordinatesArgs struct {
	ControllerToken string
	ACID            sim.ACID
}

type ServerLaunchConfig

type ServerLaunchConfig struct {
	Port          int // if 0, finds an open one
	ExtraScenario string
	ExtraVideoMap string
	ServerAddress string // address to use for remote TTS provider
	IsLocal       bool
}

type SetLaunchConfigArgs

type SetLaunchConfigArgs struct {
	ControllerToken string
	Config          sim.LaunchConfig
}

type SetSimRateArgs

type SetSimRateArgs struct {
	ControllerToken string
	Rate            float32
}

type SetWaypointCommandsArgs added in v0.13.0

type SetWaypointCommandsArgs struct {
	ControllerToken string
	Commands        string
}

type SimManager

type SimManager struct {
	// contains filtered or unexported fields
}

func NewSimManager

func NewSimManager(scenarioGroups map[string]map[string]*scenarioGroup, scenarioCatalogs map[string]map[string]*ScenarioCatalog,
	mapManifests map[string]*sim.VideoMapManifest, serverAddress string, isLocal bool, lg *log.Logger) *SimManager

func (*SimManager) Add

func (sm *SimManager) Add(session *simSession, result *NewSimResult, initialTCP sim.ControlPosition, initials string, instructor bool,
	prespawn bool, disableTextToSpeech bool) error

func (*SimManager) AddLocal

func (sm *SimManager) AddLocal(s *sim.Sim, result *NewSimResult) error

func (*SimManager) Broadcast

func (sm *SimManager) Broadcast(m *BroadcastMessage, _ *struct{}) error

func (*SimManager) Connect

func (sm *SimManager) Connect(version int, result *ConnectResult) error

func (*SimManager) ConnectToSim

func (sm *SimManager) ConnectToSim(req *JoinSimRequest, result *NewSimResult) error

func (*SimManager) GetAllVoices

func (sm *SimManager) GetAllVoices(_ struct{}, voices *[]sim.Voice) error

GetAllVoices returns all available voices for TTS

func (*SimManager) GetAtmosGrid added in v0.13.0

func (sm *SimManager) GetAtmosGrid(args GetAtmosArgs, result *GetAtmosResult) error

func (*SimManager) GetMETAR added in v0.13.0

func (sm *SimManager) GetMETAR(airports []string, result *map[string]wx.METARSOA) error

func (*SimManager) GetPrecipURL added in v0.13.0

func (sm *SimManager) GetPrecipURL(args PrecipURLArgs, result *PrecipURL) error

func (*SimManager) GetRunningSims

func (sm *SimManager) GetRunningSims(_ int, result *map[string]*RunningSim) error

func (*SimManager) GetSerializeSim

func (sm *SimManager) GetSerializeSim(token string, s *sim.Sim) error

func (*SimManager) GetSimStatus

func (sm *SimManager) GetSimStatus() []simStatus

func (*SimManager) GetStateUpdate

func (sm *SimManager) GetStateUpdate(token string) (*SimStateUpdate, error)

func (*SimManager) GetTTSStats

func (sm *SimManager) GetTTSStats() []ttsClientStats

func (*SimManager) GetTimeIntervals added in v0.13.0

func (sm *SimManager) GetTimeIntervals(_ struct{}, result *map[string][]util.TimeInterval) error

func (*SimManager) HandleSpeechWSConnection added in v0.13.0

func (sm *SimManager) HandleSpeechWSConnection(w http.ResponseWriter, r *http.Request)

func (*SimManager) LookupController

func (sm *SimManager) LookupController(token string) *controllerContext

func (*SimManager) NewSim

func (sm *SimManager) NewSim(req *NewSimRequest, result *NewSimResult) error

func (*SimManager) SignOff

func (sm *SimManager) SignOff(token string) error

func (*SimManager) TextToSpeech

func (sm *SimManager) TextToSpeech(req *TTSRequest, speechMp3 *[]byte) error

TextToSpeech converts text to speech and returns the audio data

func (*SimManager) UpdateTTSUsage

func (sm *SimManager) UpdateTTSUsage(ip, text string) error

type SimState added in v0.13.3

type SimState struct {
	sim.UserState

	// User-related items not managed by the Sim.
	UserTCW                             sim.TCW
	ActiveTCWs                          []sim.TCW
	ControllerVideoMaps                 []string
	ControllerDefaultVideoMaps          []string
	ControllerMonitoredBeaconCodeBlocks []av.Squawk
}

SimState wraps sim.UserState and adds server-specific fields.

type SimStateUpdate added in v0.13.3

type SimStateUpdate struct {
	sim.StateUpdate

	ActiveTCWs []sim.TCW
	Events     []sim.Event
}

SimStateUpdate wraps sim.StateUpdate and adds server-specific fields.

func (*SimStateUpdate) Apply added in v0.13.3

func (su *SimStateUpdate) Apply(state *SimState, eventStream *sim.EventStream)

Apply applies the update to the state, including server-specific fields. If eventStream is provided, events from the update are posted to it.

type TCPConsolidation added in v0.13.3

type TCPConsolidation struct {
	sim.TCPConsolidation
	Initials []string // Server-layer addition: initials of signed-in controllers
}

func (TCPConsolidation) IsOccupied added in v0.13.3

func (s TCPConsolidation) IsOccupied() bool

type TTSRequest

type TTSRequest struct {
	Voice    sim.Voice
	Text     string
	ClientIP string // Automatically populated by util.LoggingServerCodec
}

TTSRequest represents a text-to-speech request (shared between client and server)

type TriggerEmergencyArgs added in v0.13.2

type TriggerEmergencyArgs struct {
	ControllerToken string
	EmergencyName   string
}

type VideoMapsArgs

type VideoMapsArgs struct {
	Filename string
}

type VoiceAssigner added in v0.13.3

type VoiceAssigner struct {
	// contains filtered or unexported fields
}

VoiceAssigner manages the pool of available TTS voices and assigns them to aircraft callsigns. Each aircraft gets a consistent voice throughout the session.

func NewVoiceAssigner added in v0.13.3

func NewVoiceAssigner() *VoiceAssigner

NewVoiceAssigner creates a new VoiceAssigner.

func (*VoiceAssigner) GetVoice added in v0.13.3

func (va *VoiceAssigner) GetVoice(callsign av.ADSBCallsign) (sim.Voice, bool)

GetVoice returns the voice assigned to an aircraft, assigning one if needed. Returns empty string and false if no voices are available yet.

func (*VoiceAssigner) TryInit added in v0.13.3

func (va *VoiceAssigner) TryInit(tts sim.TTSProvider, lg *log.Logger) bool

TryInit attempts non-blocking initialization of the voice pool from the TTS provider. Returns true if the pool is ready for use.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL