client

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2024 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EVENT_FLAG_DEFAULT             DWORD = 0x00
	EVENT_FLAG_FAST_REPEAT_TIMER         = 0x01
	EVENT_FLAG_SLOW_REPEAT_TIMER         = 0x02
	EVENT_FLAG_GROUPID_IS_PRIORITY       = 0x10
)
View Source
const (
	SIMCONNECT_EXCEPTION_NONE                              RecvExceptionID = 0
	SIMCONNECT_EXCEPTION_ERROR                                             = 1
	SIMCONNECT_EXCEPTION_SIZE_MISMATCH                                     = 2
	SIMCONNECT_EXCEPTION_UNRECOGNIZED_ID                                   = 3
	SIMCONNECT_EXCEPTION_UNOPENED                                          = 4
	SIMCONNECT_EXCEPTION_VERSION_MISMATCH                                  = 5
	SIMCONNECT_EXCEPTION_TOO_MANY_GROUPS                                   = 6
	SIMCONNECT_EXCEPTION_NAME_UNRECOGNIZED                                 = 7
	SIMCONNECT_EXCEPTION_TOO_MANY_EVENT_NAMES                              = 8
	SIMCONNECT_EXCEPTION_EVENT_ID_DUPLICATE                                = 9
	SIMCONNECT_EXCEPTION_TOO_MANY_MAPS                                     = 10
	SIMCONNECT_EXCEPTION_TOO_MANY_OBJECTS                                  = 11
	SIMCONNECT_EXCEPTION_TOO_MANY_REQUESTS                                 = 12
	SIMCONNECT_EXCEPTION_WEATHER_INVALID_PORT                              = 13
	SIMCONNECT_EXCEPTION_WEATHER_INVALID_METAR                             = 14
	SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_GET_OBSERVATION                 = 15
	SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_CREATE_STATION                  = 16
	SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_REMOVE_STATION                  = 17
	SIMCONNECT_EXCEPTION_INVALID_DATA_TYPE                                 = 18
	SIMCONNECT_EXCEPTION_INVALID_DATA_SIZE                                 = 19
	SIMCONNECT_EXCEPTION_DATA_ERROR                                        = 20
	SIMCONNECT_EXCEPTION_INVALID_ARRAY                                     = 21
	SIMCONNECT_EXCEPTION_CREATE_OBJECT_FAILED                              = 22
	SIMCONNECT_EXCEPTION_LOAD_FLIGHTPLAN_FAILED                            = 23
	SIMCONNECT_EXCEPTION_OPERATION_INVALID_FOR_OJBECT_TYPE                 = 24
	SIMCONNECT_EXCEPTION_ILLEGAL_OPERATION                                 = 25
	SIMCONNECT_EXCEPTION_ALREADY_SUBSCRIBED                                = 26
	SIMCONNECT_EXCEPTION_INVALID_ENUM                                      = 27
	SIMCONNECT_EXCEPTION_DEFINITION_ERROR                                  = 28
	SIMCONNECT_EXCEPTION_DUPLICATE_ID                                      = 29
	SIMCONNECT_EXCEPTION_DATUM_ID                                          = 30
	SIMCONNECT_EXCEPTION_OUT_OF_BOUNDS                                     = 31
	SIMCONNECT_EXCEPTION_ALREADY_CREATED                                   = 32
	SIMCONNECT_EXCEPTION_OBJECT_OUTSIDE_REALITY_BUBBLE                     = 33
	SIMCONNECT_EXCEPTION_OBJECT_CONTAINER                                  = 34
	SIMCONNECT_EXCEPTION_OBJECT_AI                                         = 35
	SIMCONNECT_EXCEPTION_OBJECT_ATC                                        = 36
	SIMCONNECT_EXCEPTION_OBJECT_SCHEDULE                                   = 37
)
View Source
const E_FAIL uint32 = 0x80004005

Variables

This section is empty.

Functions

func LoadNewDefaultDLL

func LoadNewDefaultDLL(path string) error

LoadNewDefaultDLL loads a new default DLL to be used with all connections

Types

type DWORD

type DWORD uint32
const (
	DATATYPE_INVALID      DWORD = iota // invalid data type
	DATATYPE_INT32                     // 32-bit integer number
	DATATYPE_INT64                     // 64-bit integer number
	DATATYPE_FLOAT32                   // 32-bit floating-point number (float)
	DATATYPE_FLOAT64                   // 64-bit floating-point number (double)
	DATATYPE_STRING8                   // 8-byte string
	DATATYPE_STRING32                  // 32-byte string
	DATATYPE_STRING64                  // 64-byte string
	DATATYPE_STRING128                 // 128-byte string
	DATATYPE_STRING256                 // 256-byte string
	DATATYPE_STRING260                 // 260-byte string
	DATATYPE_STRINGV                   // variable-length string
	DATATYPE_INITPOSITION              // see SIMCONNECT_DATA_INITPOSITION
	DATATYPE_MARKERSTATE               // see SIMCONNECT_DATA_MARKERSTATE
	DATATYPE_WAYPOINT                  // see SIMCONNECT_DATA_WAYPOINT
	DATATYPE_LATLONALT                 // see SIMCONNECT_DATA_LATLONALT
	DATATYPE_XYZ                       // see SIMCONNECT_DATA_XYZ

	DATATYPE_MAX // enum limit
)
const (
	TEXT_TYPE_SCROLL_BLACK DWORD = iota
	TEXT_TYPE_SCROLL_WHITE
	TEXT_TYPE_SCROLL_RED
	TEXT_TYPE_SCROLL_GREEN
	TEXT_TYPE_SCROLL_BLUE
	TEXT_TYPE_SCROLL_YELLOW
	TEXT_TYPE_SCROLL_MAGENTA
	TEXT_TYPE_SCROLL_CYAN
)
const (
	TEXT_TYPE_PRINT_BLACK DWORD = iota + 0x0100
	TEXT_TYPE_PRINT_WHITE
	TEXT_TYPE_PRINT_RED
	TEXT_TYPE_PRINT_GREEN
	TEXT_TYPE_PRINT_BLUE
	TEXT_TYPE_PRINT_YELLOW
	TEXT_TYPE_PRINT_MAGENTA
	TEXT_TYPE_PRINT_CYAN
)
const (
	RECV_ID_NULL DWORD = iota
	RECV_ID_EXCEPTION
	RECV_ID_OPEN
	RECV_ID_QUIT
	RECV_ID_EVENT
	RECV_ID_EVENT_OBJECT_ADDREMOVE
	RECV_ID_EVENT_FILENAME
	RECV_ID_EVENT_FRAME
	RECV_ID_SIMOBJECT_DATA
	RECV_ID_SIMOBJECT_DATA_BYTYPE
	RECV_ID_WEATHER_OBSERVATION
	RECV_ID_CLOUD_STATE
	RECV_ID_ASSIGNED_OBJECT_ID
	RECV_ID_RESERVED_KEY
	RECV_ID_CUSTOM_ACTION
	RECV_ID_SYSTEM_STATE
	RECV_ID_CLIENT_DATA
	RECV_ID_EVENT_WEATHER_MODE
	RECV_ID_AIRPORT_LIST
	RECV_ID_VOR_LIST
	RECV_ID_NDB_LIST
	RECV_ID_WAYPOINT_LIST
	RECV_ID_EVENT_MULTIPLAYER_SERVER_STARTED
	RECV_ID_EVENT_MULTIPLAYER_CLIENT_STARTED
	RECV_ID_EVENT_MULTIPLAYER_SESSION_ENDED
	RECV_ID_EVENT_RACE_END
	RECV_ID_EVENT_RACE_LAP

	RECV_ID_PICK
)
const (
	SIMOBJECT_TYPE_USER DWORD = iota
	SIMOBJECT_TYPE_ALL
	SIMOBJECT_TYPE_AIRCRAFT
	SIMOBJECT_TYPE_HELICOPTER
	SIMOBJECT_TYPE_BOAT
	SIMOBJECT_TYPE_GROUND
)
const (
	FACILITY_LIST_TYPE_AIRPORT DWORD = iota
	FACILITY_LIST_TYPE_WAYPOINT
	FACILITY_LIST_TYPE_NDB
	FACILITY_LIST_TYPE_VOR
	FACILITY_LIST_TYPE_COUNT // invalid
)
const GROUP_PRIORITY_DEFAULT DWORD = 2000000000 // default priority
const GROUP_PRIORITY_HIGHEST DWORD = 1 // highest priority

Notification Group priority values

const GROUP_PRIORITY_HIGHEST_MASKABLE DWORD = 10000000 // highest priority that allows events to be masked
const GROUP_PRIORITY_LOWEST DWORD = 4000000000 // priorities lower than this will be ignored
const GROUP_PRIORITY_STANDARD DWORD = 1900000000 // standard priority
const OBJECT_ID_USER DWORD = 0 // proxy value for User vehicle ObjectID
const SIMCONNECT_EVENT_FLAG_DEFAULT DWORD = 0x00000000

Event flag values

const SIMCONNECT_EVENT_FLAG_FAST_REPEAT_TIMER DWORD = 0x00000001 // set event repeat timer to simulate fast repeat
const SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY DWORD = 0x00000010 // interpret GroupID parameter as priority value
const SIMCONNECT_EVENT_FLAG_SLOW_REPEAT_TIMER DWORD = 0x00000002 // set event repeat timer to simulate slow repeat
const TEXT_TYPE_MENU DWORD = 0x0200
const UNUSED DWORD = 0xffffffff // special value to indicate unused event, ID

type DataFacilityAirport

type DataFacilityAirport struct {
	Icao      [9]byte // ICAO of the object
	Latitude  float64 // degrees
	Longitude float64 // degrees
	Altitude  float64 // meters
}

type DataFacilityWaypoint

type DataFacilityWaypoint struct {
	DataFacilityAirport
	MagVar float64 // Magvar in degrees
}

type Recv

type Recv struct {
	Size    DWORD
	Version DWORD
	ID      DWORD
}

type RecvEvent

type RecvEvent struct {
	Recv
	//static const DWORD UNKNOWN_GROUP = DWORD_MAX;
	GroupID DWORD
	EventID DWORD
	Data    DWORD // uEventID-dependent context
}

type RecvEventError

type RecvEventError RecvEvent

func (RecvEventError) Error

func (e RecvEventError) Error() string

type RecvException

type RecvException struct {
	Recv
	Exception DWORD // see SIMCONNECT_EXCEPTION
	//static const DWORD UNKNOWN_SENDID = 0;
	SendID DWORD // see SimConnect_GetLastSentPacketID
	//static const DWORD UNKNOWN_INDEX = DWORD_MAX;
	Index DWORD // index of parameter that was source of error
}

func (RecvException) Error

func (e RecvException) Error() string

type RecvExceptionID

type RecvExceptionID uint32

type RecvFacilityAirportList

type RecvFacilityAirportList struct {
	RecvFacilityList
	List [1]DataFacilityAirport
}

type RecvFacilityList

type RecvFacilityList struct {
	Recv
	RequestID   DWORD
	ArraySize   DWORD
	EntryNumber DWORD // when the array of items is too big for one send, which send this is (0..dwOutOf-1)
	OutOf       DWORD // total number of transmissions the list is chopped into
}

type RecvFacilityWaypointList

type RecvFacilityWaypointList struct {
	RecvFacilityList
	List [1]DataFacilityWaypoint
}

type RecvOpen

type RecvOpen struct {
	Recv
	ApplicationName         [256]byte
	ApplicationVersionMajor DWORD
	ApplicationVersionMinor DWORD
	ApplicationBuildMajor   DWORD
	ApplicationBuildMinor   DWORD
	SimConnectVersionMajor  DWORD
	SimConnectVersionMinor  DWORD
	SimConnectBuildMajor    DWORD
	SimConnectBuildMinor    DWORD
	Reserved1               DWORD
	Reserved2               DWORD
}

func (RecvOpen) Error

func (e RecvOpen) Error() string

type RecvSimobjectData

type RecvSimobjectData struct {
	Recv
	RequestID DWORD
	ObjectID  DWORD
	DefineID  DWORD
	Flags     DWORD // SIMCONNECT_DATA_REQUEST_FLAG

	DefineCount DWORD // data count (number of datums, *not* byte count)
	// contains filtered or unexported fields
}

type RecvSimobjectDataByType

type RecvSimobjectDataByType struct {
	RecvSimobjectData
}

type SimConnect

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

SimConnect is the main struct for connecting to SimConnect

func New

func New(name string, opts ...SimConnectOption) (*SimConnect, error)

New creates a new SimConnect connection

func (*SimConnect) AddClientEventToNotificationGroup

func (s *SimConnect) AddClientEventToNotificationGroup(groupID, eventID DWORD) error

func (*SimConnect) AddToDataDefinition

func (s *SimConnect) AddToDataDefinition(defineID DWORD, name, unit string, dataType DWORD) error

derefDataType returns the SimConnect data type for a Go type

func (*SimConnect) Close

func (s *SimConnect) Close() error

Close closes the SimConnect connection

func (*SimConnect) GetDefineID

func (s *SimConnect) GetDefineID(a interface{}) DWORD

GetDefineID returns the define ID for a struct

func (*SimConnect) GetEventID

func (s *SimConnect) GetEventID() DWORD

GetEventID returns a new event ID

func (*SimConnect) GetNextDispatch

func (s *SimConnect) GetNextDispatch() (unsafe.Pointer, int32, error)

func (*SimConnect) MapClientEventToSimEvent

func (s *SimConnect) MapClientEventToSimEvent(eventID DWORD, eventName string) error

func (*SimConnect) MenuAddItem

func (s *SimConnect) MenuAddItem(menuItem string, menuEventID, Data DWORD) error

func (*SimConnect) MenuDeleteItem

func (s *SimConnect) MenuDeleteItem(menuItem string, menuEventID, Data DWORD) error

func (*SimConnect) RegisterDataDefinition

func (s *SimConnect) RegisterDataDefinition(a interface{}) error

RegisterDataDefinition registers a struct for data definition

func (*SimConnect) RequestDataOnSimObject

func (s *SimConnect) RequestDataOnSimObject(requestID, defineID, objectID, period, flags, origin, interval, limit DWORD) error

func (*SimConnect) RequestDataOnSimObjectType

func (s *SimConnect) RequestDataOnSimObjectType(requestID, defineID, radius, simobjectType DWORD) error

func (*SimConnect) RequestFacilitiesList

func (s *SimConnect) RequestFacilitiesList(facilityType, requestID DWORD) error

func (*SimConnect) SetData

func (s *SimConnect) SetData(fr any) error

SetData currently only supports float64 fields

func (*SimConnect) SetDataOnSimObject

func (s *SimConnect) SetDataOnSimObject(defineID, simobjectType, flags, arrayCount, size DWORD, buf unsafe.Pointer) error

func (*SimConnect) SetNotificationGroupPriority

func (s *SimConnect) SetNotificationGroupPriority(groupID, priority DWORD) error

func (*SimConnect) ShowText

func (s *SimConnect) ShowText(textType DWORD, duration float64, eventID DWORD, text string) error

func (*SimConnect) SubscribeToFacilities

func (s *SimConnect) SubscribeToFacilities(facilityType, requestID DWORD) error

func (*SimConnect) SubscribeToSystemEvent

func (s *SimConnect) SubscribeToSystemEvent(eventID DWORD, eventName string) error

func (*SimConnect) TransmitClientEvent

func (s *SimConnect) TransmitClientEvent(objectID, eventID, dwData, groupID, flags DWORD) error

func (*SimConnect) UnsubscribeToFacilities

func (s *SimConnect) UnsubscribeToFacilities(facilityType DWORD) error

type SimConnectOption

type SimConnectOption func(*SimConnect)

SimConnectOption is a function that sets options on the SimConnect

func WithDLLPath

func WithDLLPath(path string) SimConnectOption

WithDLLPath sets the path to the SimConnect DLL

func WithLogger

func WithLogger(l *slog.Logger) SimConnectOption

WithLogger sets the logger for the SimConnect

Jump to

Keyboard shortcuts

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