Skip to content

codegoose/visor

 
 

Repository files navigation

visor

User interface for simulation racing hardware.

This software is meant to communicate with an Arduino microcontroller over USB and setup a ViGemBus driver-emulated gamepad so it can act as a proxy between steering wheel, pedal inputs and receiving programs. This allows the user to configure input slopes, deadzones, and other settings to fine-tune the inputs.

This fork of the original repo serves to document my solo work on the project. Though the source code for the so-called "MK4", "MK9" Arduino firmware that I also wrote is not publicly available.

The firmware was capable of registering itself over USB as a XYZ-axis & RAW communication device so that it could simultaneously send input axes to the computer, as well as receive input configuration commands from the user interface service. Received information was stored in the EEPROM and used to relay modified pedal inputs in real-time.

I create the user interface by leveraging an OpenGL 3.3 graphics context and immediate-mode GUI library that outputs vertex data that's rendered on the GPU. I hide the original hardware input device by interfacing with the HIDHide driver, then spawn a proxy gamepad device to represent the original via the ViGemBus driver.

The software also has the ability to read iRacing telemetry in real-time and display suspension and sway on the screen, among other things. I also did some tests related to automatically braking for the user if they were approaching a corner too fast. And it worked better than you'd think.

Also, somebody came in after me and added some of the most useless comments I've ever seen:

// Create an ArgumentParser object named "program" with the application name and version
static argparse::ArgumentParser program(VER_APP_NAME, VER_APP_VER);

That's why it's 70 commits behind.

Objects of Interest

Screenshot

Visor Screenshot

Old Demo Video

Visor Screenshot

About

User interface and device proxy for simulation racing hardware.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 49.9%
  • C 48.9%
  • Other 1.2%