svn commit: r239659 - user/adrian/ath_radar_stuff/lib/libradarpkt

Adrian Chadd adrian at FreeBSD.org
Fri Aug 24 17:47:59 UTC 2012


Author: adrian
Date: Fri Aug 24 17:47:58 2012
New Revision: 239659
URL: http://svn.freebsd.org/changeset/base/239659

Log:
  * Add AR5212 radar parsing code
  * Due to API changes, ieee80211.h is now required.

Added:
  user/adrian/ath_radar_stuff/lib/libradarpkt/ar5212_radar.c   (contents, props changed)
  user/adrian/ath_radar_stuff/lib/libradarpkt/ar5212_radar.h   (contents, props changed)
Modified:
  user/adrian/ath_radar_stuff/lib/libradarpkt/Makefile
  user/adrian/ath_radar_stuff/lib/libradarpkt/ar5416_radar.c
  user/adrian/ath_radar_stuff/lib/libradarpkt/ar9280_radar.c

Modified: user/adrian/ath_radar_stuff/lib/libradarpkt/Makefile
==============================================================================
--- user/adrian/ath_radar_stuff/lib/libradarpkt/Makefile	Fri Aug 24 17:39:57 2012	(r239658)
+++ user/adrian/ath_radar_stuff/lib/libradarpkt/Makefile	Fri Aug 24 17:47:58 2012	(r239659)
@@ -1,6 +1,6 @@
 LIB=	radarpkt
 
-SRCS=	ar9280_radar.c ar5416_radar.c
+SRCS=	ar5212_radar.c ar9280_radar.c ar5416_radar.c
 
 # Define 'ATH_ENABLE_RADIOTAP_VENDOR_EXT' as it's not enabled by default
 # in the configuration file.  Ideally this would just fake an "opt_ath.h"

Added: user/adrian/ath_radar_stuff/lib/libradarpkt/ar5212_radar.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/adrian/ath_radar_stuff/lib/libradarpkt/ar5212_radar.c	Fri Aug 24 17:47:58 2012	(r239659)
@@ -0,0 +1,104 @@
+/*-
+ * Copyright (c) 2012 Adrian Chadd
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ *    redistribution must be conditioned upon including a substantially
+ *    similar Disclaimer requirement for further binary redistribution.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ * $FreeBSD$
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/endian.h>
+#include <string.h>	/* for memcpy() */
+
+/* Headers required for the ioctl interface */
+#include <sys/socket.h>
+#include <net/if.h>
+#include <sys/queue.h>
+
+#include "net80211/ieee80211.h"
+#include "net80211/ieee80211_radiotap.h"
+
+#include "dev/ath/if_athioctl.h"
+
+#include "pkt.h"
+
+#include "ar5212_radar.h"
+
+int
+ar5212_radar_decode(struct ieee80211_radiotap_header *rh,
+    const unsigned char *pkt, int len, struct radar_entry *re)
+{
+	uint64_t tsf;
+	int8_t rssi, nf;
+	struct ath_rx_radiotap_header *rx =
+	    (struct ath_rx_radiotap_header *) rh;
+
+	/* XXX we should really be implementing a real radiotap parser */
+	tsf = le64toh(rx->wr_tsf);
+
+	rssi = rx->wr_v.vh_rssi;
+	nf = rx->wr_antnoise;
+
+	/* Last byte is the pulse width */
+	if (len < 1) {
+		printf("short radar frame\n");
+		return (0);
+	}
+
+#if 0
+	printf("phyerr: %d ", rx->wr_v.vh_phyerr_code);
+	printf("ts: %lld", tsf);
+	printf("\tit_present: %x", le32toh(rh->it_present));
+	printf("\tlen: %d", len);
+	printf("\trssi: %d, nf: %d", rssi, nf);
+	printf("\tpri: %u", pkt[len - 1] & 0xff);
+	printf("\n");
+#endif
+
+	/*
+	 * If RSSI > 0x80, it's a negative RSSI. We store it signed
+	 * so we can at least log that it was negative in order to
+	 * plot it. The radar code IIRC just tosses it.
+	 */
+	re->re_rssi = rssi;
+
+	/*
+	 * XXX TODO:
+	 *
+	 * The radar event is timestamped by the MAC the end of the event.
+	 * To work around this particular issue, a "best guess" of the event
+	 * start time involves its duration.
+	 */
+
+	re->re_timestamp = tsf;
+	/* XXX TODO: re->re_freq */
+	re->re_dur = pkt[len - 1] & 0xff;
+	/* XXX TODO: also store ctl/ext RSSI, and some flags */
+	re->re_freq = 0;
+
+	return(1);
+}

Added: user/adrian/ath_radar_stuff/lib/libradarpkt/ar5212_radar.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/adrian/ath_radar_stuff/lib/libradarpkt/ar5212_radar.h	Fri Aug 24 17:47:58 2012	(r239659)
@@ -0,0 +1,47 @@
+/*-
+ * Copyright (c) 2012 Adrian Chadd
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ *    redistribution must be conditioned upon including a substantially
+ *    similar Disclaimer requirement for further binary redistribution.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ * $FreeBSD$
+ */
+#ifndef	__AR5212_RADAR_H__
+#define	__AR5212_RADAR_H__
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+#define	CHIP_AR5212		3
+
+extern	int ar5212_radar_decode(struct ieee80211_radiotap_header *rh,
+	const unsigned char *pkt, int len, struct radar_entry *re);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* __AR5212_RADAR__ */

Modified: user/adrian/ath_radar_stuff/lib/libradarpkt/ar5416_radar.c
==============================================================================
--- user/adrian/ath_radar_stuff/lib/libradarpkt/ar5416_radar.c	Fri Aug 24 17:39:57 2012	(r239658)
+++ user/adrian/ath_radar_stuff/lib/libradarpkt/ar5416_radar.c	Fri Aug 24 17:47:58 2012	(r239659)
@@ -39,7 +39,7 @@
 #include <net/if.h>
 #include <sys/queue.h>
 
-//#include "net80211/ieee80211_var.h"
+#include "net80211/ieee80211.h"
 #include "net80211/ieee80211_radiotap.h"
 
 #include "dev/ath/if_athioctl.h"

Modified: user/adrian/ath_radar_stuff/lib/libradarpkt/ar9280_radar.c
==============================================================================
--- user/adrian/ath_radar_stuff/lib/libradarpkt/ar9280_radar.c	Fri Aug 24 17:39:57 2012	(r239658)
+++ user/adrian/ath_radar_stuff/lib/libradarpkt/ar9280_radar.c	Fri Aug 24 17:47:58 2012	(r239659)
@@ -37,6 +37,7 @@
 #include <sys/socket.h>
 #include <net/if.h>
 
+#include "net80211/ieee80211.h"
 #include "net80211/ieee80211_radiotap.h"
 
 #include "dev/ath/if_athioctl.h"


More information about the svn-src-user mailing list