// Package esdi will have the domain logic for our desktop interface package esdi import ( "log" "time" "github.com/ESilva15/goirsdk" "github.com/tarm/serial" ) type ESDI struct { SerialConfig *serial.Config SerialConn *serial.Port irsdk *goirsdk.IBT data SimulationData dataPacket DataPacket // Source GameSource } func (e *ESDI) Close() { err := e.SerialConn.Close() if err != nil { log.Fatalf("couldn't close serial connection: %v", err) } } func ESDIInit(port string, baud int) (ESDI, error) { sConfig := &serial.Config{ Name: port, Baud: baud, ReadTimeout: time.Millisecond * 1000, } // Open the serial port sPort, err := serial.OpenPort(sConfig) if err != nil { return ESDI{}, err } // return ESDI{sConfig, sPort, nil}, nil return ESDI{sConfig, sPort, nil, SimulationData{}, DataPacket{}}, nil // return ESDI{nil, nil, nil, SimulationData{}, DataPacket{}}, nil } func RunLiveTelemetry(port string, output string, session string) { esdi, err := ESDIInit(port, 115200) if err != nil { log.Fatalf("Failed to get Desktop Interface: %v", err) } // irsdk, err := iracing.Init(nil, outputFile, sessionFile) // if err != nil { // log.Fatalf("Failed to create iRacing interface: %v", err) // } irsdk, err := goirsdk.Init(goirsdk.Options{}) if err != nil { log.Fatalf("Failed to create irsdk instance: %v\n", err) } esdi.irsdk = irsdk esdi.telemetry() } func RunOfflineTelemetry(port string, input string, output string, session string) { // esdi, err := ESDIInit(port, 115200) // if err != nil { // log.Fatalf("Failed to get Desktop Interface: %v", err) // } // // irsdk, err := iracing.Init(input, output, session) // if err != nil { // log.Fatalf("Failed to create iRacing interface: %v", err) // } // // esdi.irsdk = irsdk.SDK // // esdi.telemetry() }