From f459214894f1eb7d633a7f71165065b9974540b9 Mon Sep 17 00:00:00 2001 From: Kyle Keen Date: Thu, 23 Jan 2014 07:31:34 -0500 Subject: rtl_power: fix dBm math Signed-off-by: Steve Markgraf --- src/rtl_power.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/rtl_power.c b/src/rtl_power.c index e96dd2a..f28055b 100644 --- a/src/rtl_power.c +++ b/src/rtl_power.c @@ -623,6 +623,12 @@ void downsample_iq(int16_t *data, int length) //remove_dc(data+1, length-1); } +long real_conj(int16_t real, int16_t imag) +/* real(n * conj(n)) */ +{ + return ((long)real*(long)real + (long)imag*(long)imag); +} + void scanner(void) { int i, j, j2, f, n_read, offset, bin_e, bin_len, buf_len, ds, ds_p; @@ -691,11 +697,11 @@ void scanner(void) fix_fft(fft_buf+offset, bin_e); if (!peak_hold) { for (j=0; javg[j] += (long) abs(fft_buf[offset+j*2]); + ts->avg[j] += real_conj(fft_buf[offset+j*2], fft_buf[offset+j*2+1]); } } else { for (j=0; javg[j] = MAX((long) abs(fft_buf[offset+j*2]), ts->avg[j]); + ts->avg[j] = MAX(real_conj(fft_buf[offset+j*2], fft_buf[offset+j*2+1]), ts->avg[j]); } } ts->samples += ds; -- cgit v1.2.3