Documentation
¶
Index ¶
- Constants
- Variables
- func CreateLaunchConfig(scenario *scenario, scenarioGroup *scenarioGroup) sim.LaunchConfig
- func CreateNewSimConfiguration(catalog *ScenarioCatalog, scenarioGroup *scenarioGroup, scenarioName string) (*sim.NewSimConfiguration, error)
- func LaunchServer(config ServerLaunchConfig, lg *log.Logger)
- func LaunchServerAsync(config ServerLaunchConfig, lg *log.Logger) (int, util.ErrorLogger, string)
- func ListAllScenarios(scenarioFilename, videoMapFilename string, lg *log.Logger) ([]string, error)
- func LoadScenarioGroups(extraScenarioFilename string, extraVideoMapFilename string, skipVideoMaps bool, ...) (map[string]map[string]*scenarioGroup, map[string]map[string]*ScenarioCatalog, ...)
- func MakeGCSProvider(lg *log.Logger) (wx.Provider, error)
- func MakeRPCProvider(ctx context.Context, serverAddress string, lg *log.Logger) (wx.Provider, error)
- func MakeResourcesWXProvider(lg *log.Logger) wx.Provider
- func MakeWXProvider(ctx context.Context, serverAddress string, lg *log.Logger) (wx.Provider, error)
- func NewGoogleTTSProvider(lg *log.Logger) (sim.TTSProvider, error)
- func PostDeserializeFacilityAdaptation(s *sim.FacilityAdaptation, e *util.ErrorLogger, sg *scenarioGroup, ...)
- func SynthesizeSpeechWithTimeout(va *VoiceAssigner, tts sim.TTSProvider, callsign av.ADSBCallsign, ...) *sim.PilotSpeech
- func TryDecodeError(e error) error
- func TryDecodeErrorString(s string) error
- type ACIDSpecifier
- type ATPAConfigArgs
- type ATPAConfigResult
- type AcceptHandoffArgs
- type ActivateFlightPlanArgs
- type AircraftCommandsArgs
- type AircraftCommandsResult
- type AircraftSpecifier
- type AssociateFlightPlanArgs
- type BroadcastMessage
- type CancelHandoffArgs
- type ConnectResult
- type ConsolidateTCPArgs
- type CreateArrivalArgs
- type CreateDepartureArgs
- type CreateFlightPlanArgs
- type CreateOverflightArgs
- type CreateRestrictionAreaResultArgs
- type DeconsolidateTCPArgs
- type DeleteAircraftArgs
- type DeleteAircraftListArgs
- type DeleteFlightPlanArgs
- type FlightPlanDirectArgs
- type ForceQLArgs
- type GCSProvider
- type GetAtmosArgs
- type GetAtmosResult
- type GlobalMessageArgs
- type GoogleTTSProvider
- type HandoffArgs
- type HeldDepartureArgs
- type JoinSimRequest
- type LaunchAircraftArgs
- type ModifyFlightPlanArgs
- type NewSimRequest
- type NewSimResult
- type PointOutArgs
- type PrecipURL
- type PrecipURLArgs
- type RPCProvider
- type RemoteTTSProvider
- type RepositionTrackArgs
- type RequestContactArgs
- type RequestContactResult
- type ResourcesWXProvider
- type RestrictionAreaArgs
- type RunningSim
- type STTBugReportArgs
- type STTLogArgs
- type ScenarioCatalog
- type ScenarioSpec
- type SendRouteCoordinatesArgs
- type ServerLaunchConfig
- type SetLaunchConfigArgs
- type SetSimRateArgs
- type SetWaypointCommandsArgs
- type SimManager
- func (sm *SimManager) Add(session *simSession, result *NewSimResult, initialTCP sim.ControlPosition, ...) error
- func (sm *SimManager) AddLocal(s *sim.Sim, result *NewSimResult) error
- func (sm *SimManager) Broadcast(m *BroadcastMessage, _ *struct{}) error
- func (sm *SimManager) Connect(version int, result *ConnectResult) error
- func (sm *SimManager) ConnectToSim(req *JoinSimRequest, result *NewSimResult) error
- func (sm *SimManager) GetAllVoices(_ struct{}, voices *[]sim.Voice) error
- func (sm *SimManager) GetAtmosGrid(args GetAtmosArgs, result *GetAtmosResult) error
- func (sm *SimManager) GetPrecipURL(args PrecipURLArgs, result *PrecipURL) error
- func (sm *SimManager) GetRunningSims(_ int, result *map[string]*RunningSim) error
- func (sm *SimManager) GetSerializeSim(token string, s *sim.Sim) error
- func (sm *SimManager) GetSimStatus() []simStatus
- func (sm *SimManager) GetStateUpdate(token string) (*SimStateUpdate, error)
- func (sm *SimManager) GetTTSStats() []ttsClientStats
- func (sm *SimManager) HandleSpeechWSConnection(w http.ResponseWriter, r *http.Request)
- func (sm *SimManager) LookupController(token string) *controllerContext
- func (sm *SimManager) NewSim(req *NewSimRequest, result *NewSimResult) error
- func (sm *SimManager) ReportCrash(report *log.CrashReport, _ *struct{}) error
- func (sm *SimManager) ReportSTTLog(args *STTLogArgs, _ *struct{}) error
- func (sm *SimManager) ReportWhisperBenchmark(report *WhisperBenchmarkReport, _ *struct{}) error
- func (sm *SimManager) SignOff(token string) error
- func (sm *SimManager) TextToSpeech(req *TTSRequest, speechMp3 *[]byte) error
- func (sm *SimManager) UpdateTTSUsage(ip, text string) error
- type SimState
- type SimStateUpdate
- type TCPConsolidation
- type TTSRequest
- type TriggerEmergencyArgs
- type VideoMapsArgs
- type VoiceAssigner
- type WhisperBenchmarkReport
- type WhisperBenchmarkResult
Constants ¶
const AcceptHandoffRPC = "Sim.AcceptHandoff"
const AcceptRedirectedHandoffRPC = "Sim.AcceptRedirectedHandoff"
const AcknowledgePointOutRPC = "Sim.AcknowledgePointOut"
const ActivateFlightPlanRPC = "Sim.ActivateFlightPlan"
const AddLocalRPC = "SimManager.AddLocal"
const AssociateFlightPlanRPC = "Sim.AssociateFlightPlan"
const BroadcastRPC = "SimManager.Broadcast"
const CancelHandoffRPC = "Sim.CancelHandoff"
const ConfigureATPARPC = "Sim.ConfigureATPA"
const ConnectRPC = "SimManager.Connect"
const ConnectToSimRPC = "SimManager.ConnectToSim"
const ConsolidateTCPRPC = "Sim.ConsolidateTCP"
const CreateArrivalRPC = "Sim.CreateArrival"
const CreateDepartureRPC = "Sim.CreateDeparture"
const CreateFlightPlanRPC = "Sim.CreateFlightPlan"
const CreateOverflightRPC = "Sim.CreateOverflight"
const CreateRestrictionAreaRPC = "Sim.CreateRestrictionArea"
const DeconsolidateTCPRPC = "Sim.DeconsolidateTCP"
const DeleteAircraftRPC = "Sim.DeleteAircraft"
const DeleteAllAircraftRPC = "Sim.DeleteAllAircraft"
const DeleteFlightPlanRPC = "Sim.DeleteFlightPlan"
const DeleteRestrictionAreaRPC = "Sim.DeleteRestrictionArea"
const FastForwardRPC = "Sim.FastForward"
const FlightPlanDirectRPC = "Sim.FlightPlanDirect"
const ForceQLRPC = "Sim.ForceQL"
const GetAircraftDisplayStateRPC = "Sim.GetAircraftDisplayState"
const GetAllVoicesRPC = "SimManager.GetAllVoices"
const GetAtmosGridRPC = "SimManager.GetAtmosGrid"
const GetPrecipURLRPC = "SimManager.GetPrecipURL"
const GetRunningSimsRPC = "SimManager.GetRunningSims"
const GetSerializeSimRPC = "SimManager.GetSerializeSim"
const GetStateUpdateRPC = "Sim.GetStateUpdate"
const GetVideoMapLibraryRPC = "Sim.GetVideoMapLibrary"
const GlobalMessageRPC = "Sim.GlobalMessage"
const HandoffTrackRPC = "Sim.HandoffTrack"
const LaunchAircraftRPC = "Sim.LaunchAircraft"
const ModifyFlightPlanRPC = "Sim.ModifyFlightPlan"
const NewSimRPC = "SimManager.NewSim"
const PointOutRPC = "Sim.PointOut"
const RecallPointOutRPC = "Sim.RecallPointOut"
const RedirectHandoffRPC = "Sim.RedirectHandoff"
const RejectPointOutRPC = "Sim.RejectPointOut"
const ReleaseDepartureRPC = "Sim.ReleaseDeparture"
const ReportSTTBugRPC = "Sim.ReportSTTBug"
const ReportSTTLogRPC = "SimManager.ReportSTTLog"
const ReportWhisperBenchmarkRPC = "SimManager.ReportWhisperBenchmark"
const RepositionTrackRPC = "Sim.RepositionTrack"
const RequestContactTransmissionRPC = "Sim.RequestContactTransmission"
const RequestFlightFollowingRPC = "Sim.RequestFlightFollowing"
const RunAircraftCommandsRPC = "Sim.RunAircraftCommands"
const SendRouteCoordinatesRPC = "Sim.SendRouteCoordinates"
const SetLaunchConfigRPC = "Sim.SetLaunchConfig"
const SetSimRateRPC = "Sim.SetSimRate"
const SetWaypointCommandsRPC = "Sim.SetWaypointCommands"
const SignOffRPC = "Sim.SignOff"
const TakeOrReturnLaunchControlRPC = "Sim.TakeOrReturnLaunchControl"
const TextToSpeechRPC = "SimManager.TextToSpeech"
const TogglePauseRPC = "Sim.TogglePause"
const TriggerEmergencyRPC = "Sim.TriggerEmergency"
const UpdateRestrictionAreaRPC = "Sim.UpdateRestrictionArea"
const ViceHTTPServerPort = 6502
const ViceRPCVersion = ViceSerializeVersion
const ViceSerializeVersion = 58
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 52: STT 53: local STT 54: Move ControllerFrequency from NASFlightPlan to Aircraft 55: STT logging 56: STT iteration 57: rework contact radio transmission management 58: STT fin rev?
const ViceServerAddress = "vice.pharr.org"
const ViceServerPort = 8000 - 50 + ViceRPCVersion
Variables ¶
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") )
var ErrMissingTTSCredentials = errors.New("VICE_GCS_CREDENTIALS not set")
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 ¶
ListAllScenarios returns a sorted list of all available scenarios in TRACON/scenario format
func LoadScenarioGroups ¶
func LoadScenarioGroups(extraScenarioFilename string, extraVideoMapFilename string, skipVideoMaps bool, 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...
If skipVideoMaps is true, video map manifests are not loaded and video map validation is skipped. This is useful for CLI tools that don't need video maps.
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 MakeRPCProvider ¶ added in v0.13.0
func MakeResourcesWXProvider ¶ added in v0.13.0
func MakeWXProvider ¶ added in v0.13.0
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 SynthesizeSpeechWithTimeout ¶ added in v0.14.0
func SynthesizeSpeechWithTimeout(va *VoiceAssigner, tts sim.TTSProvider, callsign av.ADSBCallsign, transmissionType av.RadioTransmissionType, text string, simTime time.Time, timeout time.Duration, lg *log.Logger) *sim.PilotSpeech
SynthesizeSpeechWithTimeout synchronously synthesizes speech with the given timeout. Returns a PilotSpeech struct on success, nil on timeout or error. This is used for synchronous readback synthesis in RunAircraftCommands.
func TryDecodeError ¶
func TryDecodeErrorString ¶
Types ¶
type ACIDSpecifier ¶
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
EnableTTS bool // Whether to synthesize readback audio
WhisperDuration time.Duration // Time from PTT release to whisper completion (zero for keyboard input)
AudioDuration time.Duration // Duration of the recorded audio (zero for keyboard input)
WhisperTranscript string // Raw whisper transcript (empty for keyboard input)
WhisperProcessor string // Description of the processor running whisper (GPU model or CPU info)
WhisperModel string
AircraftContext map[string]stt.Aircraft // Aircraft context used for STT decoding (for logging)
STTDebugLogs []string // Local STT processing logs (for logging)
}
type AircraftCommandsResult ¶
type AircraftCommandsResult struct {
ErrorMessage string
RemainingInput string
ReadbackQueued bool // True if a readback TTS was queued for delivery
}
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 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 CreateArrivalArgs ¶
type CreateDepartureArgs ¶
type CreateFlightPlanArgs ¶
type CreateFlightPlanArgs struct {
ControllerToken string
FlightPlanSpecifier sim.FlightPlanSpecifier
}
type CreateOverflightArgs ¶
type CreateRestrictionAreaResultArgs ¶
type CreateRestrictionAreaResultArgs struct {
Index int
StateUpdate SimStateUpdate
}
type DeconsolidateTCPArgs ¶ added in v0.13.3
type DeleteAircraftArgs ¶
type DeleteAircraftArgs AircraftSpecifier
type DeleteAircraftListArgs ¶
type DeleteFlightPlanArgs ¶
type DeleteFlightPlanArgs ACIDSpecifier
type FlightPlanDirectArgs ¶ added in v0.13.0
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 (*GCSProvider) GetPrecipURL ¶ added in v0.13.0
type GetAtmosArgs ¶ added in v0.13.0
type GetAtmosResult ¶ added in v0.13.0
type GlobalMessageArgs ¶
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 LaunchAircraftArgs ¶
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
}
func MakeNewSimRequest ¶ added in v0.13.3
func MakeNewSimRequest() NewSimRequest
type NewSimResult ¶
type PointOutArgs ¶
type PointOutArgs struct {
ControllerToken string
ACID sim.ACID
ToPosition sim.ControlPosition
}
type PrecipURLArgs ¶ added in v0.13.0
type RPCProvider ¶ added in v0.13.0
type RPCProvider struct {
// contains filtered or unexported fields
}
func (*RPCProvider) GetAtmosGrid ¶ added in v0.13.0
func (*RPCProvider) GetPrecipURL ¶ added in v0.13.0
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 RequestContactArgs ¶ added in v0.14.0
type RequestContactArgs struct {
ControllerToken string
}
type RequestContactResult ¶ added in v0.14.0
type RequestContactResult struct {
ContactSpeech *sim.PilotSpeech // Synthesized contact speech, or nil if none pending
}
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 (*ResourcesWXProvider) GetPrecipURL ¶ added in v0.13.0
type RestrictionAreaArgs ¶
type RestrictionAreaArgs struct {
ControllerToken string
Index int
RestrictionArea av.RestrictionArea
}
type RunningSim ¶ added in v0.13.3
type STTBugReportArgs ¶ added in v0.14.0
type STTBugReportArgs struct {
ControllerToken string
PrevTranscript string // Transcript of the previous transmission
PrevCommand string // Decoded command from previous transmission
AircraftContext map[string]stt.Aircraft // Aircraft context used for decoding
DebugLogs []string // Debug log lines from the decode
UserExplanation string // User's explanation of the issue
ReportTime time.Time
// GPU and performance information
GPUInfo whisper.GPUInfo // GPU acceleration status and devices
WhisperModelName string // Name of the whisper model being used
RecentDurations []time.Duration // Recent whisper transcription durations
IsSlowPerformance bool // True if this is an automatic slow performance report
}
STTBugReportArgs contains data for an STT bug report.
type STTLogArgs ¶ added in v0.14.0
type STTLogArgs struct {
Callsign string
Commands string
WhisperDuration time.Duration
AudioDuration time.Duration
WhisperTranscript string
WhisperProcessor string
WhisperModel string
AircraftContext map[string]stt.Aircraft
STTDebugLogs []string
}
STTLogArgs contains STT command data for logging (sent by local sim clients).
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 ServerLaunchConfig ¶
type SetLaunchConfigArgs ¶
type SetLaunchConfigArgs struct {
ControllerToken string
Config sim.LaunchConfig
}
type SetSimRateArgs ¶
type SetWaypointCommandsArgs ¶ added in v0.13.0
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) 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) 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) HandleSpeechWSConnection ¶ added in v0.13.0
func (sm *SimManager) HandleSpeechWSConnection(w http.ResponseWriter, r *http.Request)
HandleSpeechWSConnection handles WebSocket connections for async speech delivery.
func (*SimManager) LookupController ¶
func (sm *SimManager) LookupController(token string) *controllerContext
func (*SimManager) NewSim ¶
func (sm *SimManager) NewSim(req *NewSimRequest, result *NewSimResult) error
func (*SimManager) ReportCrash ¶ added in v0.14.0
func (sm *SimManager) ReportCrash(report *log.CrashReport, _ *struct{}) error
ReportCrash receives crash reports from clients and logs them. This RPC does not require a controller token.
func (*SimManager) ReportSTTLog ¶ added in v0.14.0
func (sm *SimManager) ReportSTTLog(args *STTLogArgs, _ *struct{}) error
ReportSTTLog receives STT command data from local sim clients and logs it.
func (*SimManager) ReportWhisperBenchmark ¶ added in v0.14.0
func (sm *SimManager) ReportWhisperBenchmark(report *WhisperBenchmarkReport, _ *struct{}) error
ReportWhisperBenchmark receives whisper benchmark results from clients and logs them.
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
UserIsPrivileged bool // Whether this user has elevated privileges (can control any aircraft)
}
SimState wraps sim.UserState and adds server-specific fields.
type SimStateUpdate ¶ added in v0.13.3
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 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.
type WhisperBenchmarkReport ¶ added in v0.14.0
type WhisperBenchmarkReport struct {
DeviceName string // GPU/device description from whisper.ProcessorDescription()
SelectedModel string
Results []WhisperBenchmarkResult
}
WhisperBenchmarkReport contains the full benchmark results from a client.
type WhisperBenchmarkResult ¶ added in v0.14.0
type WhisperBenchmarkResult struct {
ModelName string
LatencyMs int64
Status string // "selected", "acceptable", "too_slow", "failed", "skipped"
}
WhisperBenchmarkResult contains benchmark results for a single model.