use core::fmt::Debug;
use usb_device::UsbError;
use usb_device::bus::UsbBus;
use usb_device::class::ControlIn;
use usb_device::descriptor::DescriptorWriter;
#[cfg(feature = "bbb")]
pub mod bbb;
pub const TRANSPORT_VENDOR_SPECIFIC: u8 = 0xFF;
pub trait Transport {
const PROTO: u8;
type Bus: UsbBus;
#[cfg(not(feature = "defmt"))]
type Error: Debug;
#[cfg(feature = "defmt")]
type Error: Debug + defmt::Format;
fn get_endpoint_descriptors(&self, writer: &mut DescriptorWriter) -> Result<(), UsbError>;
fn reset(&mut self);
fn control_in(&mut self, xfer: ControlIn<Self::Bus>);
fn poll(&mut self) -> Result<(), TransportError<Self::Error>>;
}
#[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,
}