82 lines
1.9 KiB
Go
82 lines
1.9 KiB
Go
// 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(nil, output, session)
|
|
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()
|
|
}
|