diff --git a/host/hackrf-tools/src/hackrf_sweep.c b/host/hackrf-tools/src/hackrf_sweep.c index ea482a21..68251e60 100644 --- a/host/hackrf-tools/src/hackrf_sweep.c +++ b/host/hackrf-tools/src/hackrf_sweep.c @@ -199,7 +199,8 @@ int rx_callback(hackrf_transfer* transfer) { int8_t* buf; uint8_t* ubuf; uint64_t frequency; /* in Hz */ - float float_freq; + uint64_t band_edge; + uint32_t record_length; int i, j; if(NULL == fd) { @@ -245,13 +246,23 @@ int rx_callback(hackrf_transfer* transfer) { pwr[i] = logPower(fftwOut[i], 1.0f / fftSize); } if(binary_output) { - float_freq = frequency; - float_freq /= FREQ_ONE_MHZ; - fwrite(&float_freq, sizeof(float), 1, stdout); + record_length = 2 * sizeof(band_edge) + sizeof(fft_bin_width) + + (fftSize/4) * sizeof(float); + + fwrite(&record_length, sizeof(record_length), 1, stdout); + band_edge = frequency; + fwrite(&band_edge, sizeof(band_edge), 1, stdout); + band_edge = frequency + DEFAULT_SAMPLE_RATE_HZ / 4; + fwrite(&band_edge, sizeof(band_edge), 1, stdout); + fwrite(&fft_bin_width, sizeof(fft_bin_width), 1, stdout); fwrite(&pwr[1+(fftSize*5)/8], sizeof(float), fftSize/4, stdout); - float_freq = frequency + DEFAULT_SAMPLE_RATE_HZ / 2; - float_freq /= FREQ_ONE_MHZ; - fwrite(&float_freq, sizeof(float), 1, stdout); + + fwrite(&record_length, sizeof(record_length), 1, stdout); + band_edge = frequency + DEFAULT_SAMPLE_RATE_HZ / 2; + fwrite(&band_edge, sizeof(band_edge), 1, stdout); + band_edge = frequency + (DEFAULT_SAMPLE_RATE_HZ * 3) / 4; + fwrite(&band_edge, sizeof(band_edge), 1, stdout); + fwrite(&fft_bin_width, sizeof(fft_bin_width), 1, stdout); fwrite(&pwr[1+fftSize/8], sizeof(float), fftSize/4, stdout); } else { time_now = time(NULL);