svn commit: r245172 - user/adrian/ath_radar_stuff/lib/libradarpkt
Adrian Chadd
adrian at FreeBSD.org
Tue Jan 8 18:47:30 UTC 2013
Author: adrian
Date: Tue Jan 8 18:47:29 2013
New Revision: 245172
URL: http://svnweb.freebsd.org/changeset/base/245172
Log:
* Disable printing debugging output for now;
* Move the channel frequency population into this function
Modified:
user/adrian/ath_radar_stuff/lib/libradarpkt/ar9280_radar.c
Modified: user/adrian/ath_radar_stuff/lib/libradarpkt/ar9280_radar.c
==============================================================================
--- user/adrian/ath_radar_stuff/lib/libradarpkt/ar9280_radar.c Tue Jan 8 18:37:12 2013 (r245171)
+++ user/adrian/ath_radar_stuff/lib/libradarpkt/ar9280_radar.c Tue Jan 8 18:47:29 2013 (r245172)
@@ -45,6 +45,13 @@
#include "pkt.h"
#include "ar9280_radar.h"
+/* Decode the channel */
+#include "chan.h"
+
+/* from _ieee80211.h */
+#define IEEE80211_CHAN_HT40U 0x00020000 /* HT 40 channel w/ ext above */
+#define IEEE80211_CHAN_HT40D 0x00040000 /* HT 40 channel w/ ext below */
+
/* Relevant on Merlin and later */
#define CH_SPECTRAL_EVENT 0x10
/* Relevant for Sowl and later */
@@ -208,7 +215,7 @@ ar9280_radar_spectral_decode(struct ieee
if (ar9280_radar_spectral_decode_ht20(rh, fr, fr_len, re, i) != 0) {
break;
}
- ar9280_radar_spectral_print(&re->re_spectral_entries[i]);
+// ar9280_radar_spectral_print(&re->re_spectral_entries[i]);
fr_len -= AR9280_SPECTRAL_SAMPLE_SIZE_HT20;
fr += AR9280_SPECTRAL_SAMPLE_SIZE_HT20;
if (fr_len < 0)
@@ -232,6 +239,7 @@ ar9280_radar_decode(struct ieee80211_rad
int8_t comb_rssi, pri_rssi, ext_rssi, nf;
struct ath_rx_radiotap_header *rx =
(struct ath_rx_radiotap_header *) rh;
+ struct xchan x;
/* XXX we should really be implementing a real radiotap parser */
tsf = le64toh(rx->wr_tsf);
@@ -260,7 +268,7 @@ ar9280_radar_decode(struct ieee80211_rad
* HAL/DFS code, so they can all be plotted as appropriate.
*/
-#if 1
+#if 0
printf("tsf: %lld", tsf);
printf(" len: %d", len);
printf(" rssi %d/%d", comb_rssi, nf);
@@ -300,10 +308,37 @@ ar9280_radar_decode(struct ieee80211_rad
//re->re_rssi = pri_rssi; /* XXX extension rssi? */
re->re_rssi = comb_rssi; /* XXX comb for spectral scan? or not? */
re->re_dur = pkt[len - 3]; /* XXX extension duration? */
- re->re_freq = 0;
re->re_num_spectral_entries = 0;
/* XXX flags? */
+ /*
+ * Update the channel frequency information before we decode
+ * the spectral or radar FFT payload.
+ */
+ re->re_freq = 0;
+ /* XXX endian convert len */
+ if (pkt_lookup_chan((char *) rh, rh->it_len, &x) == 0) {
+ /* Update the channel/frequency information */
+ re->re_freq = x.freq;
+
+ if (x.flags & IEEE80211_CHAN_QUARTER) {
+ re->re_freq_sec = 0;
+ re->re_freqwidth = 5;
+ } else if (x.flags & IEEE80211_CHAN_HALF) {
+ re->re_freq_sec = 0;
+ re->re_freqwidth = 10;
+ } else if (x.flags & IEEE80211_CHAN_HT40U) {
+ re->re_freq_sec = re->re_freq + 20;
+ re->re_freqwidth = 40;
+ } else if (x.flags & IEEE80211_CHAN_HT40D) {
+ re->re_freq_sec = re->re_freq - 20;
+ re->re_freqwidth = 40;
+ } else {
+ re->re_freq_sec = 0;
+ re->re_freqwidth = 20;
+ }
+ }
+
if (pkt[len - 1] & CH_SPECTRAL_EVENT) {
(void) ar9280_radar_spectral_decode(rh, pkt, len - 3, re);
}
More information about the svn-src-user
mailing list