Developer tools

Component test catalog.

Small, focused command-line programs for exercising Open Road Code one subsystem at a time. Each entry explains what the test exercises, the associated subsystem boundaries, where the test lives, and what hardware or external services it needs.

Dev machineHardwareService / network
TestDescriptionAssociated subsystem(s)Environment / hardwareSource location
>_Mock input adapters
mock_input_adapters_cli.py

Feeds mocked keyboard and rotary-encoder events through InputMapper and InputManager and prints the resulting UI actions. Useful for validating the complete input mapping/dispatch path without physical controls.

Input events · InputMapper · InputManager · UI actionsDev machine No external hardware.controllers/input/component_test/mock_input_adapters_cli.pymaster
Keyboard input adapter
keyboard_input_adapter_cli.py

Exercises the physical Linux keyboard path from KeyboardReader through KeyboardInputAdapter, input mapping, and UI-action dispatch. Accepts an optional Linux input-event device path.

Hardware I/O · keyboard · input adapter · mapping · UI actionsDev machine Linux keyboard/input device.controllers/input/component_test/keyboard_input_adapter_cli.pymaster
Keyboard reader
keyboard_cli.py

Reads keyboard events at the hardware-I/O boundary so key detection can be verified independently of controller and UI mapping logic.

Hardware I/O · keyboardDev machine Linux keyboard/input device.hardware_io/keyboard/component_test/keyboard_cli.pymaster
GPS reader
gps_cli.py

Exercises the GPS hardware-I/O reader and reports incoming position data, providing a focused check of the GNSS/NMEA acquisition path before navigation consumes it.

Hardware I/O · GPS/GNSS · NMEA · positioningHardware USB/UART GPS, or repository GPS emulator.hardware_io/gps/component_test/gps_cli.pymaster
IMU
imu_cli.py

Reads motion/orientation sensor data directly through the IMU hardware abstraction to verify I²C communication and sensor reporting independently of navigation.

Hardware I/O · I²C · IMU · motion/orientationHardware MPU-6050-compatible I²C IMU.hardware_io/imu/component_test/imu_cli.pymaster
Barometric sensor
barometric_cli.py

Exercises the environmental sensor adapter at the hardware boundary and reports pressure/temperature data before controller-level processing.

Hardware I/O · environmental · I²C · pressure · temperatureHardware BMP388/BMP390-class sensor for physical mode.hardware_io/environmental/component_test/barometric_cli.pymaster
Barometric controller
barometric_cli.py

Exercises the environmental controller layer, validating how raw barometric readings are exposed as controller state rather than testing only the sensor transport.

Environmental controller · barometric state · sensor adapterHardware BMP3xx sensor when using the real adapter.controllers/environmental/component_test/barometric_cli.pymaster
CANCAN frame parser
can_frame_cli.py

Exercises CAN frame representation/parsing with software data so protocol behavior can be checked without attaching a CAN interface or vehicle.

CAN protocol · frame parsing · automotive dataDev machine No CAN interface required.protocols/can/component_test/can_frame_cli.pymaster
OBDOBD-II protocol
obd2_protocol_cli.py

Exercises OBD-II command/PID protocol handling and decoding independently of a live vehicle connection. Suitable for protocol development with simulated responses.

OBD-II protocol · PID decoding · automotiveDev machine Simulated adapter supported.protocols/obd2/component_test/obd2_protocol_cli.pymaster
OBDELM327 device
elm327_cli.py

Talks directly to an ELM327-compatible adapter to verify the physical automotive transport and adapter command path.

Hardware I/O · automotive · ELM327 · OBD-II transportHardware ELM327-compatible OBD-II adapter.hardware_io/automotive/elm327/component_test/elm327_cli.pymaster
OBDOBD-II manager
obd2_cli.py

Exercises the controller-level OBD-II manager with live vehicle data, covering the path above the ELM327 transport and protocol layers.

Automotive controller · OBD-II · ELM327 · vehicle stateHardware ELM327 adapter and vehicle for live data.controllers/automotive/obd2/component_test/obd2_cli.pymaster
Spotify mock
spotify_mock_cli.py

Exercises Spotify/media controller behavior with mock playback state, allowing UI and controller development without an account or network dependency.

Spotify controller · media state · playbackDev machine No Spotify account or hardware.controllers/spotify/component_test/spotify_mock_cli.pymaster
Spotify Web API
spotify_web_api_cli.py

Exercises the real Spotify Web API controller, including authenticated playback-state retrieval and supported remote-control operations.

Spotify controller · Web API · OAuth · mediaService / network Internet and Spotify credentials.controllers/spotify/component_test/spotify_web_api_cli.pymaster
OAuth client
oauth_cli.py

Exercises the OAuth/PKCE authorization flow independently of a consuming media controller, useful for validating browser redirects, tokens, and credentials.

OAuth protocol · PKCE · browser authorizationService / network OAuth provider and browser.protocols/oauth/component_test/oauth_cli.pymaster
Image cache
image_cache_cli.py

Exercises image retrieval and caching independently of the UI, including local cache behavior and remote artwork download when a URL is used.

Image controller · cache · artwork/downloadDev machine Network only for remote images.controllers/image/component_test/image_cache_cli.pymaster
YouTube music video
youtube_music_video_cli.py

Exercises music-to-video lookup against YouTube so matching/search behavior can be tested separately from the Spotify and UI layers.

Video controller · YouTube · music matchingService / network Internet and configured API access.controllers/video/component_test/youtube_music_video_cli.pymaster
Spotify music video
spotify_music_video_controller_cli.py

Exercises the integration that takes Spotify track metadata and resolves a corresponding music video through the video controller.

Spotify · video controller · YouTube · media integrationService / network Internet and service credentials.controllers/video/component_test/spotify_music_video_controller_cli.pymaster
NAVNavigation controller
navigation_cli.py

Exercises navigation state generation from position and orientation sources. Simulated sources allow desktop development while GPS/IMU sources can be substituted for live integration.

Navigation controller · positioning · orientation · GPS/IMU sourcesDev machine Simulated sources; GPS/IMU optional for live mode.controllers/navigation/component_test/navigation_cli.pymaster
Radio controller
radio_controller_cli.py

Exercises the radio controller against its rig-control backend, validating tuning and mode control independently of the cockpit UI.

Radio controller · rigctl · SDRService / network rigctl backend; SDR for live RF.controllers/radio/component_test/radio_controller_cli.pymaster
SDR++ rigctl
sdrpp_rigctl_cli.py

Talks directly to the SDR++ rigctl server to isolate and verify the external SDR control interface before layering the OpenRoadCode radio controller above it.

Radio · SDR++ · rigctl transportService / network SDR++ rigctl server; SDR recommended.controllers/radio/component_test/sdrpp_rigctl_cli.pymaster
AUDAudio controller
audio_cli.py

Exercises system audio control from the command line, including the Linux PipeWire/PulseAudio-facing backend used for volume management.

Audio controller · PipeWire/PulseAudio · system volumeDev machine Linux audio stack.controllers/audio/component_test/audio_cli.pymaster
ZMQVehicle-state messaging
vehicle_state_*_cli.py

Runs the vehicle-state ZeroMQ publisher/subscriber tools to validate serialization, transport, endpoint configuration, and automotive telemetry contracts without launching the full UI.

Messaging · ZeroMQ · vehicle-state contracts · automotive telemetryDev machine Local ZeroMQ endpoints.messaging/component_test/vehicle_state_*_cli.pymaster
ZMQNavigation-state messaging
position_state_* / navigation_state_*_cli.py

Runs navigation/position ZeroMQ publisher and subscriber tools to verify public contracts and transport independently of navigation services and UI consumers.

Messaging · ZeroMQ · position/navigation contracts · navigation telemetryDev machine Local ZeroMQ endpoints; hardware optional for live publishers.messaging/component_test/position_state_*_cli.pymaster