From ccc424e21fa801f85bcc6ac97eb4a3f4be3f5e63 Mon Sep 17 00:00:00 2001 From: Mike Walters Date: Wed, 27 Jul 2016 00:42:29 +0100 Subject: [PATCH] Cleanup scan_mode usb transfer logic --- firmware/hackrf_usb/usb_api_scan.c | 39 +++++++++++++++--------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/firmware/hackrf_usb/usb_api_scan.c b/firmware/hackrf_usb/usb_api_scan.c index f4abc02f..7d079391 100644 --- a/firmware/hackrf_usb/usb_api_scan.c +++ b/firmware/hackrf_usb/usb_api_scan.c @@ -70,43 +70,42 @@ void scan_mode(void) { unsigned int blocks_queued = 0; unsigned int phase = 0; + uint8_t *buffer; + bool transfer = false; + while(transceiver_mode() != TRANSCEIVER_MODE_OFF) { // Set up IN transfer of buffer 0. - if ( usb_bulk_buffer_offset >= 16384 - && phase == 1 - && transceiver_mode() != TRANSCEIVER_MODE_OFF) { - usb_transfer_schedule_block( - (transceiver_mode() == TRANSCEIVER_MODE_RX) - ? &usb_endpoint_bulk_in : &usb_endpoint_bulk_out, - &usb_bulk_buffer[0x0000], - 0x4000, - NULL, NULL - ); + if ( usb_bulk_buffer_offset >= 16384 && phase == 1) { + transfer = true; + buffer = &usb_bulk_buffer[0x0000]; phase = 0; blocks_queued++; } // Set up IN transfer of buffer 1. - if ( usb_bulk_buffer_offset < 16384 - && phase == 0 - && transceiver_mode() != TRANSCEIVER_MODE_OFF) { + if ( usb_bulk_buffer_offset < 16384 && phase == 0) { + transfer = true; + buffer = &usb_bulk_buffer[0x4000]; + phase = 1; + blocks_queued++; + } + + if (transfer) { usb_transfer_schedule_block( - (transceiver_mode() == TRANSCEIVER_MODE_RX) - ? &usb_endpoint_bulk_in : &usb_endpoint_bulk_out, - &usb_bulk_buffer[0x4000], + &usb_endpoint_bulk_in, + buffer, 0x4000, NULL, NULL ); - phase = 1; - blocks_queued++; + transfer = false; } if (blocks_queued > 2) { scan_freq += scan_params.step_freq_mhz; if (scan_freq > scan_params.max_freq_mhz) { scan_freq = scan_params.min_freq_mhz; - } - set_freq(scan_freq*FREQ_GRANULARITY); + } + set_freq(scan_freq*FREQ_GRANULARITY); blocks_queued = 0; } }