usb-queue: Add flush utility
This commit is contained in:
@ -94,6 +94,17 @@ static void endpoint_add_transfer(
|
|||||||
//enable_irqs();
|
//enable_irqs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void usb_queue_flush_endpoint(const usb_endpoint_t* const endpoint)
|
||||||
|
{
|
||||||
|
uint_fast8_t index = USB_ENDPOINT_INDEX(endpoint->address);
|
||||||
|
//FIXME disable_irqs();
|
||||||
|
while (endpoint_transfers[index]) {
|
||||||
|
usb_transfer_t * transfer = endpoint_transfers[index];
|
||||||
|
endpoint_transfers[index] = transfer->next;
|
||||||
|
free_transfer(transfer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void usb_transfer_schedule(
|
void usb_transfer_schedule(
|
||||||
const usb_endpoint_t* const endpoint,
|
const usb_endpoint_t* const endpoint,
|
||||||
void* const data,
|
void* const data,
|
||||||
|
@ -31,6 +31,8 @@ typedef struct _usb_transfer_t usb_transfer_t;
|
|||||||
|
|
||||||
typedef void (*transfer_completion_cb)(usb_transfer_t*, unsigned int);
|
typedef void (*transfer_completion_cb)(usb_transfer_t*, unsigned int);
|
||||||
|
|
||||||
|
void usb_queue_flush_endpoint(const usb_endpoint_t* const endpoint);
|
||||||
|
|
||||||
void usb_endpoint_schedule(
|
void usb_endpoint_schedule(
|
||||||
const usb_endpoint_t* const endpoint,
|
const usb_endpoint_t* const endpoint,
|
||||||
void* const data,
|
void* const data,
|
||||||
|
Reference in New Issue
Block a user