use core::fmt::Debug;
use usb_device::bus::UsbBus;
use usb_device::class::ControlIn;
use usb_device::descriptor::DescriptorWriter;
use usb_device::UsbError;
#[cfg(feature = "bbb")]
pub mod bbb;
pub const TRANSPORT_VENDOR_SPECIFIC: u8 = 0xFF;
pub trait Transport {
const PROTO: u8;
type Bus: UsbBus;
fn get_endpoint_descriptors(&self, writer: &mut DescriptorWriter) -> Result<(), UsbError>;
fn reset(&mut self);
fn control_in(&mut self, xfer: ControlIn<Self::Bus>);
}
#[derive(Debug)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum TransportError<E: Debug> {
Usb(UsbError),
Error(E),
}
#[repr(u8)]
#[derive(Default, Copy, Clone)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum CommandStatus {
#[default]
Passed = 0x00,
Failed = 0x01,
PhaseError = 0x02,
}