// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0

use crate::transport::nexus::Nexus;
use crate::transport::Transport;
use anyhow::Result;

use crate::backend::BackendOpts;

pub fn create(args: &BackendOpts) -> Result<Box<dyn Transport>> {
    Ok(Box::new(Nexus::new(
        args.usb_vid,
        args.usb_pid,
        args.usb_serial.clone(),
    )))
}
