Viking is a USB protocol for controlling the peripherals and IO pins of a microcontroller board for interfacing with external hardware.
It's designed for use with Signalspec, but is general-purpose and intended to be used with other languages like Rust and Python as well.
This repository provides the specification and design rationale, as well as the Rust reference implementation of the host-side library and constants shared between host and firmware.
Firmware for the following boards can be found in the viking-firmware repository: