From 8fdc22f8c8605fe576327b6ac61f0804fe18ee20 Mon Sep 17 00:00:00 2001 From: Ben Gamari Date: Sat, 6 Jul 2013 17:00:23 -0400 Subject: [PATCH] usb-queue: Add flush utility --- firmware/hackrf_usb/usb_queue.c | 13 ++++++++++++- firmware/hackrf_usb/usb_queue.h | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/firmware/hackrf_usb/usb_queue.c b/firmware/hackrf_usb/usb_queue.c index 79e00095..b595b4e7 100644 --- a/firmware/hackrf_usb/usb_queue.c +++ b/firmware/hackrf_usb/usb_queue.c @@ -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, diff --git a/firmware/hackrf_usb/usb_queue.h b/firmware/hackrf_usb/usb_queue.h index f6dc0203..90d59567 100644 --- a/firmware/hackrf_usb/usb_queue.h +++ b/firmware/hackrf_usb/usb_queue.h @@ -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,