3.1 KiB
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.
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:
Games being implemented:
- BeamNG.drive using the gobngsdk
Games to be implemented:
Roadmap
- Implement the interface for a data source
- Finish implementing BeamNG
- Configuration of the peripherals via ESDI
- Detection of the display
- Fuel Calculator
- LapTime Calculator
- A very long list useful stuff like flags, position, more info about other drivers, track conditions and so on so forth
- Dynamic data packets
- More roadmap entries
- Telemetry analysis tool
- Better user interface
Todos
- Add a way to check the unit of a given variable Expand on this concept by creating conversions for those units
- Remove all the
slog.loggerpassing and struct members and just configureslog.Loggeronce and use the default. Or think of something better - Do all the
NOTEs andBUGs - Whats common among the providers? Should abstract whats common
- Whats common with all the "streams" I have? Should abstract whats common
Development
Mockservers
To mock BeamNG.drive, I built
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
continueonto Terminal2 and go to Terminal1 to use the application normally until it hangs. - Go back to Terminal2 to and do a
Ctrl+cto capture the state and then check what went wrong by looking at thegoroutinesfor example.
pprof:
go tool pprof http://localhost:8001/debug/pprof/mutex- type
topto view the summary - type
webto view a graph version
- type
Shameless begging
Hey, doesn't hurt to try, its free either way: Buy me a coffee!