[openfirmware] [commit] r3017 - dev
repository service
svn at openfirmware.info
Wed Jun 27 10:56:28 CEST 2012
Author: quozl
Date: Wed Jun 27 10:56:28 2012
New Revision: 3017
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3017
Log:
OLPC - libertas antenna switching test
Modified:
dev/libertas.fth
Modified: dev/libertas.fth
==============================================================================
--- dev/libertas.fth Thu Jun 21 02:03:09 2012 (r3016)
+++ dev/libertas.fth Wed Jun 27 10:56:28 2012 (r3017)
@@ -1672,11 +1672,80 @@
respbuf .log
;
-: get-rssi ( -- )
+: get-rssi ( -- avg_nf avg_snr nf snr )
2 h# 1f ( CMD_802_11_RSSI ) prepare-cmd
- 8 +xw \ Value used for exp averaging
+ 8 +xw \ number of beacons (N) to average the SNR and NF over
outbuf-wait drop
- \ XXX What to do with the result?
+ \ cmd_ds_802_11_rssi, observed response
+ \ __le16 snr; /* most recent SNR */
+ \ __le16 nf; /* most recent noise floor */
+ \ __le16 avg_snr; /* average SNR weighted by N from request */
+ \ __le16 avg_nf; /* average noise floor weighted by N from request */
+ respbuf >fw-data >r
+ r@ 6 + le-w@ ( avg_nf )
+ r@ 4 + le-w@ ( avg_nf avg_snr )
+ r@ 2 + le-w@ ( avg_nf avg_snr nf )
+ r@ le-w@ ( avg_nf avg_snr nf snr )
+ r> drop
+;
+
+: rf-antenna ( antenna action -- )
+ swap >r >r
+ 4 h# 20 ( CMD_802_11_RF_ANTENNA ) prepare-cmd
+ r> +xw
+ r> +xw
+ outbuf-wait drop
+;
+
+: set-antenna ( rx tx -- )
+ 2 ( ACT_SET_TX ) rf-antenna ( rx )
+ 1 ( ACT_SET_RX ) rf-antenna ( )
+;
+
+: set-antenna-diversity ( -- )
+ h# ffff 2 ( ACT_SET_TX ) rf-antenna
+ d# 1000 ms
+ h# ffff 1 ( ACT_SET_RX ) rf-antenna
+;
+
+: get-antenna ( -- rx tx )
+ h# 0 4 ( ACT_GET_RX ) rf-antenna respbuf >fw-data 2+ le-w@ ( rx )
+ h# 0 8 ( ACT_GET_TX ) rf-antenna respbuf >fw-data 2+ le-w@ ( rx tx )
+;
+
+: .antenna
+ base @ decimal
+ get-rssi
+ ." snr:" 3 .r ." nf:" 3 .r ." avg_snr:" 3 .r ." avg_nf:" 3 .r
+ hex
+ get-antenna swap ." rx:" 4 .r ." tx:" 4 .r
+ ." "
+ base !
+;
+
+: test-antenna
+ ." keys: (0,1,2,l,r,d,q)" cr
+ begin
+ .antenna
+ key? if
+ cr
+ .antenna
+ key
+ case
+ h# 71 ( q ) of cr exit endof
+ h# 1b ( esc ) of cr exit endof
+ h# 30 ( 0 ) of ." rx/tx to 0/0" 0 0 set-antenna endof
+ h# 31 ( 1 ) of ." rx/tx to 1/1" 1 1 set-antenna endof
+ h# 32 ( 2 ) of ." rx/tx to 2/2" 2 2 set-antenna endof
+ h# 6c ( l ) of ." rx/tx to 1/2" 1 2 set-antenna endof
+ h# 72 ( r ) of ." rx/tx to 2/1" 2 1 set-antenna endof
+ h# 64 ( d ) of ." diversity" cr h# ffff dup set-antenna endof
+ endcase
+ then
+ d# 100 ms
+ (cr
+ false
+ until
;
: .hw-spec ( -- )
More information about the openfirmware
mailing list