diff --git a/go.mod b/go.mod index a5d1d92..9202dca 100644 --- a/go.mod +++ b/go.mod @@ -8,8 +8,3 @@ require ( golang.org/x/text v0.19.0 gopkg.in/yaml.v3 v3.0.1 ) - -require ( - golang.org/x/lint v0.0.0-20241112194109-818c5a804067 // indirect - golang.org/x/tools v0.29.0 // indirect -) diff --git a/go.sum b/go.sum index 9c37840..6adf680 100644 --- a/go.sum +++ b/go.sum @@ -1,26 +1,9 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/lint v0.0.0-20241112194109-818c5a804067 h1:adDmSQyFTCiv19j015EGKJBoaa7ElV0Q1Wovb/4G7NA= -golang.org/x/lint v0.0.0-20241112194109-818c5a804067/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= -golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= -golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/irsdk_test.go b/irsdk_test.go new file mode 100644 index 0000000..f8f4d3c --- /dev/null +++ b/irsdk_test.go @@ -0,0 +1,46 @@ +package goirsdk + +import ( + "fmt" + "log" + "os" + "testing" + "time" +) + +func TestFunctionality(t *testing.T) { + input, err := os.Open("../testTelemetry/supercars_race_watkins_glenn.ibt") + if err != nil { + t.Fatal("Was unable to prepare telemetry file for testing.") + } + + i, err := Init(input, "", "") + defer i.Close() + + // Set up a loop to iterate our data + mainLoopTicker := time.NewTicker(time.Second / 60) + defer mainLoopTicker.Stop() + + for { + // Update the data that the SDK is holding with the next tick + _, err := i.Update(100 * time.Millisecond) + if err != nil { + log.Printf("could not update data: %v", err) + continue + } + + // Vehicle Movement data gathered from the names we can find on the + // telemetry_docs.pdf file + // - I wish to make this less verbose if possible + if _, ok := i.Vars.Vars["Gear"]; !ok { + log.Fatal("Field `Gear` doesn't exist") + } + + gear := int32(i.Vars.Vars["Gear"].Value.(int)) + + fmt.Printf("\033[?25l\033[2J\033[H") + fmt.Printf("Gear: %d\n", gear) + + <-mainLoopTicker.C + } +} diff --git a/variables.go b/variables.go index ad1ab4c..35b5cce 100644 --- a/variables.go +++ b/variables.go @@ -152,6 +152,18 @@ func (i *IBT) readData(buf []byte) error { v.Value = int(rbuf[0]) > 0 case IRSDK_int: v.Value = int(binary.LittleEndian.Uint32(rbuf)) + fmt.Printf("%s\n", v.Name) + if v.Name == "CarIdxPosition" { + fmt.Printf("CarIdXPosition: %d\n", v.Count) + for entry := range v.Count { + entryOffset := v.Offset + int32(entry)*int32(VarTypes[int(v.Type)].Size) + rbuf := buf[entryOffset : entryOffset+int32(VarTypes[int(v.Type)].Size)] + v := int(binary.LittleEndian.Uint32(rbuf)) + if v != 0 { + fmt.Printf("[%d] %v %v\n", entry, v, i.SessionInfo.DriverInfo.Drivers[entry].AbbrevName) + } + } + } case IRSDK_bitField: v.Value = fmt.Sprintf("0x%x", int(binary.LittleEndian.Uint32(rbuf))) case IRSDK_float: