usb-queue: Add flush utility

This commit is contained in:
Ben Gamari
2013-07-06 17:00:23 -04:00
parent 969647dbef
commit 8fdc22f8c8
2 changed files with 14 additions and 1 deletions

View File

@ -55,7 +55,7 @@ void usb_queue_init() {
}
t->next = NULL;
}
/* Allocate a transfer */
static usb_transfer_t* allocate_transfer()
{
@ -93,6 +93,17 @@ static void endpoint_add_transfer(
}
//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(
const usb_endpoint_t* const endpoint,

View File

@ -31,6 +31,8 @@ typedef struct _usb_transfer_t usb_transfer_t;
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(
const usb_endpoint_t* const endpoint,
void* const data,