Compare commits
2 Commits
5ac1a07c6b
...
29e5edde8a
Author | SHA1 | Date | |
---|---|---|---|
|
29e5edde8a | ||
|
137fcc78e5 |
|
@ -38,16 +38,14 @@ impl<const L: usize> UsbBus for UsbDevice<L> {
|
|||
|
||||
// If ep_aadr not provided, or current endpoint is allocated, try to find next free endpoint, otherwise return UsbError. //
|
||||
_ => {
|
||||
let index = self
|
||||
.ep_table
|
||||
let index = self.ep_table[1..]
|
||||
.iter()
|
||||
.enumerate()
|
||||
.skip(1)
|
||||
.find(|(index, ep)| {
|
||||
!ep.is_allocated && max_packet_size <= ENDPOINTS_ALLOC_LAYOUT[*index]
|
||||
})
|
||||
.ok_or(UsbError::EndpointOverflow)?
|
||||
.0;
|
||||
.map(|(index, _)| index)
|
||||
.ok_or(UsbError::EndpointOverflow)?;
|
||||
|
||||
EndpointAddress::from_parts(index, ep_dir)
|
||||
}
|
||||
|
|
|
@ -84,6 +84,7 @@ pub(crate) const ONE_MS_16_MGHZ: u32 = 16000;
|
|||
impl<const L: usize> UsbDevice<L> {
|
||||
#[inline]
|
||||
pub fn new(pll: PLL, usb: USB_DEVICE) -> UsbBusAllocator<Self> {
|
||||
if L > 1 {
|
||||
UsbBusAllocator::new(Self {
|
||||
pll: Mutex::new(pll),
|
||||
usb: Mutex::new(usb),
|
||||
|
@ -91,6 +92,9 @@ impl<const L: usize> UsbDevice<L> {
|
|||
pending_ins: Mutex::new(Cell::new(0u8)),
|
||||
dpram_already_used: 0,
|
||||
})
|
||||
} else {
|
||||
panic!("Endpoint table cannot be with length <= 1")
|
||||
}
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
|
|
Loading…
Reference in New Issue