From e9d1c71646293cc334bd9981ed3eb3fe95b8c3f7 Mon Sep 17 00:00:00 2001 From: Michael Ossmann Date: Tue, 7 Feb 2017 16:00:20 -0700 Subject: [PATCH] fixed firmware bug with sweep ranges that start at high frequencies --- firmware/hackrf_usb/usb_api_sweep.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/firmware/hackrf_usb/usb_api_sweep.c b/firmware/hackrf_usb/usb_api_sweep.c index c1a5f2b4..102bac69 100644 --- a/firmware/hackrf_usb/usb_api_sweep.c +++ b/firmware/hackrf_usb/usb_api_sweep.c @@ -78,7 +78,7 @@ usb_request_status_t usb_vendor_request_init_sweep( for(i=0; i<(num_ranges*2); i++) { frequencies[i] = ((uint16_t)(data[10+i*2]) << 8) + data[9+i*2]; } - sweep_freq = frequencies[0] * FREQ_GRANULARITY; + sweep_freq = (uint64_t)frequencies[0] * FREQ_GRANULARITY; set_freq(sweep_freq + offset); start_sweep_mode = true; usb_transfer_schedule_ack(endpoint->in); @@ -136,7 +136,7 @@ void sweep_mode(void) { if(INTERLEAVED == style) { if(!odd && ((sweep_freq + step_width) >= ((uint64_t)frequencies[1+range*2] * FREQ_GRANULARITY))) { range = (range + 1) % num_ranges; - sweep_freq = frequencies[range*2] * FREQ_GRANULARITY; + sweep_freq = (uint64_t)frequencies[range*2] * FREQ_GRANULARITY; } else { if(odd) { sweep_freq += step_width/4; @@ -148,7 +148,7 @@ void sweep_mode(void) { } else { if((sweep_freq + step_width) >= ((uint64_t)frequencies[1+range*2] * FREQ_GRANULARITY)) { range = (range + 1) % num_ranges; - sweep_freq = frequencies[range*2] * FREQ_GRANULARITY; + sweep_freq = (uint64_t)frequencies[range*2] * FREQ_GRANULARITY; } else { sweep_freq += step_width; }