vitaly 0.1.32

VIA/Vial API client and cli tool for guiless keyboard configuration.
Documentation
use crate::protocol;
use anyhow::{Result, anyhow};
use hidapi::{DeviceInfo, HidApi};

pub fn run(api: &HidApi, device: &DeviceInfo) -> Result<()> {
    let device_path = device.path();
    let dev = api.open_path(device_path)?;
    let capabilities = protocol::scan_capabilities(&dev)?;
    if capabilities.vial_version != 0 {
        let status = protocol::get_locked_status(&dev)?;
        if status.locked {
            return Err(anyhow!(
                "Keyboard is locked you can unlock it by running subcommand 'lock -u' to unlock it"
            ));
        }
    }
    protocol::bootloader_jump(&dev)?;
    Ok(())
}