78 lines
2.6 KiB
Markdown
78 lines
2.6 KiB
Markdown
# ESDI
|
|
ESDI stands for "ESilva Desktop Interface" iirc, or "rAcElaBs aT hOmE"
|
|
|
|
This tool collects data from popular racing simulators (for now), to pass it to
|
|
peripherals (or a peripheral, only made one so far). This is the currently
|
|
available peripheral: [CDashDisplay](https://github.com/ESilva15/CDashDisplay).
|
|
|
|
If anyone finds this project useful for anything at all it would be pretty cool.
|
|
My main goal is to learn and have some fun.
|
|
|
|
Currently it can read from a `.ibt` file or live telemetry from iRacing.
|
|
It can only be ran from the terminal:
|
|
`go run . offline -p <port> -i <ibt-file>`
|
|

|
|
|
|
|
|
or to view the live data:
|
|
`go run . live -p <port>`
|
|
|
|
|
|
Games implemented so far:
|
|
- [iRacing](https://www.iracing.com/) using the [goirsdk](https://github.com/ESilva15/goirsdk)
|
|
|
|
<!-- Games being implemented: -->
|
|
<!-- - [BeamNG.drive](https://www.beamng.com/game/) using the [gobngsdk](https://github.com/ESilva15/gobngsdk) -->
|
|
<!---->
|
|
<!-- Games to be implemented: -->
|
|
<!-- - [Assetto Corsa](https://assettocorsa.gg/) -->
|
|
|
|
|
|
## Roadmap
|
|
- [X] Implement the interface for a data source
|
|
- [ ] Configuration of the peripherals via ESDI
|
|
- [ ] Detection of the display
|
|
- [ ] LapTime Calculator
|
|
- [ ] A very long list useful stuff like flags, position, more info about
|
|
other drivers, track conditions and so on so forth
|
|
- [ ] Telemetry analysis tool
|
|
- [ ] Better user interface
|
|
|
|
|
|
## Development
|
|
### Mockservers
|
|
To mock [BeamNG.drive](https://www.beamng.com/game/), I built
|
|
[BeaMNGMockOg](https://github.com/ESilva15/BeamNGMockOg) (should have though longer
|
|
about the name).
|
|
You create a recording by launching the BeamNG and then launching the mockserver with:
|
|
`BeamNGMockOg record -a 127.0.0.1 -p 4443 -o output.bin`.
|
|
|
|
To replay the recording:
|
|
`BeamNGMockOg replay [--loop] -a 127.0.0.1 -p 4443 -i input.bin`
|
|
|
|
### Troubleshooting
|
|
#### Can't see BeamNG data coming through
|
|
Use, for example, `tcpdump -i any udp port <port> -X` to check if any data is available.
|
|
|
|
|
|
### Debugging
|
|
#### Freezes:
|
|
Using delve:
|
|
- Launch Terminal1 with `dlv debug . --headless --listen=:2345 -- tui`
|
|
- Launch Terminal2 and connect to with with `dlv connect :2345`
|
|
- Type `continue` onto Terminal2 and go to Terminal1 to use the application
|
|
normally until it hangs.
|
|
- Go back to Terminal2 to and do a `Ctrl+c` to capture the state and then check
|
|
what went wrong by looking at the `goroutines` for example.
|
|
|
|
pprof:
|
|
- `go tool pprof http://localhost:8001/debug/pprof/mutex`
|
|
- type `top` to view the summary
|
|
- type `web` to view a graph version
|
|
|
|
|
|
## Shameless begging
|
|
Hey, doesn't hurt to try, its free either way:
|
|
[Buy me a coffee!](buymeacoffee.com/ESilva_15)
|
|
|