From owner-svn-src-user@FreeBSD.ORG Wed Jan 30 23:59:28 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 75C6FD6E; Wed, 30 Jan 2013 23:59:28 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 59B3BE05; Wed, 30 Jan 2013 23:59:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r0UNxSDs041197; Wed, 30 Jan 2013 23:59:28 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r0UNxRID041194; Wed, 30 Jan 2013 23:59:27 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201301302359.r0UNxRID041194@svn.freebsd.org> From: Adrian Chadd Date: Wed, 30 Jan 2013 23:59:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r246138 - user/adrian/ath_radar_stuff/src/spectral_fft X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jan 2013 23:59:28 -0000 Author: adrian Date: Wed Jan 30 23:59:27 2013 New Revision: 246138 URL: http://svnweb.freebsd.org/changeset/base/246138 Log: Update the FFT code to support the HT40 operating mode and the slight change in FFT format from libradarpkt. Modified: user/adrian/ath_radar_stuff/src/spectral_fft/fft_eval.c user/adrian/ath_radar_stuff/src/spectral_fft/fft_freebsd.c user/adrian/ath_radar_stuff/src/spectral_fft/fft_histogram.c Modified: user/adrian/ath_radar_stuff/src/spectral_fft/fft_eval.c ============================================================================== --- user/adrian/ath_radar_stuff/src/spectral_fft/fft_eval.c Wed Jan 30 23:59:04 2013 (r246137) +++ user/adrian/ath_radar_stuff/src/spectral_fft/fft_eval.c Wed Jan 30 23:59:27 2013 (r246138) @@ -49,8 +49,8 @@ #include "fft_histogram.h" #include "fft_display.h" -/* 10 a second for now, the rendering is too inefficient otherwise? */ -#define RENDER_PERIOD_MSEC 100 +/* 5 a second for now, the rendering is too inefficient otherwise? */ +#define RENDER_PERIOD_MSEC 200 #define LCL_EVENT_RENDER 69 @@ -200,6 +200,7 @@ void graphics_main(struct fft_app *fap) break; case SDL_QUIT: quit = 1; + printf("quit!\n"); break; case SDL_KEYDOWN: switch (event.key.keysym.sym) { Modified: user/adrian/ath_radar_stuff/src/spectral_fft/fft_freebsd.c ============================================================================== --- user/adrian/ath_radar_stuff/src/spectral_fft/fft_freebsd.c Wed Jan 30 23:59:04 2013 (r246137) +++ user/adrian/ath_radar_stuff/src/spectral_fft/fft_freebsd.c Wed Jan 30 23:59:27 2013 (r246138) @@ -67,7 +67,7 @@ pkt_print(struct radar_entry *re) { printf("ts: %llu, freq=%u, rssi=%d, dur=%d, nsamples=%d\n", re->re_timestamp, - re->re_freq, + re->re_freq_centre, re->re_rssi, re->re_dur, re->re_num_spectral_entries); Modified: user/adrian/ath_radar_stuff/src/spectral_fft/fft_histogram.c ============================================================================== --- user/adrian/ath_radar_stuff/src/spectral_fft/fft_histogram.c Wed Jan 30 23:59:04 2013 (r246137) +++ user/adrian/ath_radar_stuff/src/spectral_fft/fft_histogram.c Wed Jan 30 23:59:27 2013 (r246138) @@ -19,9 +19,6 @@ #include "fft_histogram.h" -/* XXX ew */ -#define SPECTRAL_HT20_NUM_BINS 56 - struct fft_histogram * fft_histogram_init(void) { @@ -62,39 +59,57 @@ void fft_add_sample(struct fft_histogram *fh, struct radar_entry *re, struct radar_fft_entry *fe) { - float ffreq; + float ffreq_khz; int i; int fidx; int cur; + float fwidth_khz; + + if (fe->num_bins == 0) { + fprintf(stderr, "%s: invalid num_bins (0)\n", __func__); + return; + } + //fprintf(stderr, "%s: yay, bins=%d, centre freq=%d\n", __func__, fe->num_bins, re->re_freq_centre); - for (i = 0; i < SPECTRAL_HT20_NUM_BINS; i++) { + /* + * We know the bins are 315KHz (or 312.5KHz for non-fast mode, + * but whatever) wide, so let's calculate the true total bin + * width. + */ + fwidth_khz = (float) (fe->num_bins) * 312.5; + + for (i = 0; i < fe->num_bins; i++) { /* Calculate frequency of the given event */ - ffreq = (float) re->re_freq - 10.0 + - ((20.0 * i) / SPECTRAL_HT20_NUM_BINS); + ffreq_khz = (((float) re->re_freq_centre) * 1000.0) - (fwidth_khz / 2.0) + + ((fwidth_khz * i) / (float) fe->num_bins); /* If it doesn't fit in the array, toss */ - fidx = freq2fidx((int) (ffreq * 1000.0)); - if (fidx < 0) + fidx = freq2fidx((int) ffreq_khz); + if (fidx < 0) { + fprintf(stderr, "%s: tossed, ffreq_khz=%d\n", __func__, (int) ffreq_khz); continue; + } /* XXX until i figure out what's going on */ - if (fe->pri.bins[i].dBm == 0 || fe->pri.bins[i].dBm < -185) // || fe->pri.bins[i].dBm > -10) + if (fe->bins[i].dBm == 0 || fe->bins[i].dBm < -185) { // || fe->bins[i].dBm > -10) { +// fprintf(stderr, "%s: tossed; dbm=%d\n", __func__, fe->bins[i].dBm); continue; + } /* Rolling/decaying average */ cur = fh->d.avg_pts_cur[fidx]; if (fh->d.avg_pts[fidx][cur] == 0) { - fh->d.avg_pts[fidx][cur] = fe->pri.bins[i].dBm; + fh->d.avg_pts[fidx][cur] = fe->bins[i].dBm; } else { - fh->d.avg_pts[fidx][cur] = (((fh->d.avg_pts[fidx][cur] * 100) / 90) + fe->pri.bins[i].dBm) / 2; + fh->d.avg_pts[fidx][cur] = (((fh->d.avg_pts[fidx][cur] * 100) / 90) + fe->bins[i].dBm) / 2; } fh->d.avg_pts_cur[fidx] = (fh->d.avg_pts_cur[fidx] + 1) % FFT_HISTOGRAM_HISTORY_DEPTH; /* Max */ - if (fh->d.max_pts[fidx] == 0 || fe->pri.bins[i].dBm > fh->d.max_pts[fidx]) { - fh->d.max_pts[fidx] = fe->pri.bins[i].dBm; + if (fh->d.max_pts[fidx] == 0 || fe->bins[i].dBm > fh->d.max_pts[fidx]) { + fh->d.max_pts[fidx] = fe->bins[i].dBm; } else { - fh->d.max_pts[fidx] = ((fh->d.max_pts[fidx] * 975) + (fe->pri.bins[i].dBm * 25)) / 1000; + fh->d.max_pts[fidx] = ((fh->d.max_pts[fidx] * 990) + (fe->bins[i].dBm * 10)) / 1000; } } }