From 813f540e94100e5be3b80a72703fb6fb5ac2adea Mon Sep 17 00:00:00 2001 From: Michael Ossmann Date: Tue, 7 Feb 2017 17:48:24 -0700 Subject: [PATCH] fixed FFT bin reordering bug in hackrf_sweep --- host/hackrf-tools/src/hackrf_sweep.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/host/hackrf-tools/src/hackrf_sweep.c b/host/hackrf-tools/src/hackrf_sweep.c index 4627b8b0..d1707896 100644 --- a/host/hackrf-tools/src/hackrf_sweep.c +++ b/host/hackrf-tools/src/hackrf_sweep.c @@ -230,11 +230,7 @@ int rx_callback(hackrf_transfer* transfer) { buf += fftSize * 2; fftwf_execute(fftwPlan); for (i=0; i < fftSize; i++) { - // Start from the middle of the FFTW array and wrap - // to rearrange the data - //FIXME only works when fftSize = 2**n - int k = i ^ (fftSize >> 1); - pwr[i] = logPower(fftwOut[k], 1.0f / fftSize); + pwr[i] = logPower(fftwOut[i], 1.0f / fftSize); } if(binary_output) { float_freq = frequency; @@ -251,7 +247,7 @@ int rx_callback(hackrf_transfer* transfer) { (uint64_t)(frequency+DEFAULT_SAMPLE_RATE_HZ/4), (float)fft_bin_width, fftSize); - for(i=1+fftSize/8; (1+(fftSize*3)/8) > i; i++) { + for(i=1+(fftSize*5)/8; (1+(fftSize*7)/8) > i; i++) { printf(", %.2f", pwr[i]); } printf("\n"); @@ -261,7 +257,7 @@ int rx_callback(hackrf_transfer* transfer) { (uint64_t)(frequency+((DEFAULT_SAMPLE_RATE_HZ*3)/4)), (float)fft_bin_width, fftSize); - for(i=1+(fftSize*5)/8; (1+(fftSize*7)/8) > i; i++) { + for(i=1+fftSize/8; (1+(fftSize*3)/8) > i; i++) { printf(", %.2f", pwr[i]); } printf("\n");