[openfirmware] [commit] r3018 - dev ofw/wifi

repository service svn at openfirmware.info
Thu Jun 28 10:51:31 CEST 2012


Author: quozl
Date: Thu Jun 28 10:51:30 2012
New Revision: 3018
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3018

Log:
OLPC - further work on libertas antenna test, #11976

Modified:
   dev/libertas.fth
   ofw/wifi/wifi-cfg.fth

Modified: dev/libertas.fth
==============================================================================
--- dev/libertas.fth	Wed Jun 27 10:56:28 2012	(r3017)
+++ dev/libertas.fth	Thu Jun 28 10:51:30 2012	(r3018)
@@ -1674,18 +1674,13 @@
 
 : get-rssi  ( -- avg_nf avg_snr nf snr )
    2 h# 1f ( CMD_802_11_RSSI ) prepare-cmd
-   8 +xw \ number of beacons (N) to average the SNR and NF over
+   d# 32 +xw \ number of beacons (N) to average the SNR and NF over
    outbuf-wait  drop
-   \ 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@ 6 + le-w@ negate  ( avg_nf )                      \ dBm
+   r@ 4 + le-w@         ( avg_nf avg_snr )              \ dB
+   r@ 2 + le-w@ negate  ( avg_nf avg_snr nf )           \ dBm
+   r@     le-w@         ( avg_nf avg_snr nf snr )       \ dB
    r> drop
 ;
 
@@ -1704,7 +1699,6 @@
 
 : set-antenna-diversity  ( -- )
    h# ffff 2 ( ACT_SET_TX ) rf-antenna
-   d# 1000 ms
    h# ffff 1 ( ACT_SET_RX ) rf-antenna
 ;
 
@@ -1713,41 +1707,6 @@
    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  ( -- )
    marvel-get-hw-spec  if
       ." marvel-get-hw-spec command failed" cr
@@ -2227,6 +2186,58 @@
 
 : scan-wifi  ( -- )  (scan-wifi) drop  ;
 
+: .rssi  ( snr nf -- )
+   2dup swap + ."  rssi" 4 .r           ( snr nf )
+   ."  snr" 3 .r  ."  nf" 4 .r          ( )
+;
+
+: .antenna  ( antenna -- )
+   dup h# ffff =  if  ."  d" drop exit  then    \ diversity (default)
+   dup h#  100 =  if  ."  ?" drop exit  then    \ occurs after 0/0
+   2 .r
+;
+
+: show-antenna  ( -- )
+   base @                               ( base )
+   get-rssi                             ( base avg_nf avg_snr nf snr )
+   decimal
+   ." now" .rssi                        ( base avg_nf avg_snr )
+   ."  avg" .rssi                       ( base )
+   get-antenna swap                     ( base tx rx )
+   hex
+   ."  rx" .antenna  ."  tx" .antenna   ( base )
+   ."  "
+   base !
+;
+
+: ta-scan  ( -- )
+   ." scan"  cr
+   (scan)                               ( adr len error? )
+   0=  if  drop .ssids cr  then         ( )
+;
+
+: test-antenna  ( -- )
+   ." keys: (0,1,2,l,r,d,a,s,q)" cr
+   begin
+      d# 100 ms  show-antenna  key?  if
+         cr  show-antenna  key
+         case
+            h# 71 ( q ) of  cr exit  endof
+            h# 1b       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  set-antenna-diversity  endof
+            h# 61 ( a ) of  ." associate"     cr  close  open drop       endof
+            h# 73 ( s ) of  ta-scan  endof
+         endcase
+      then
+      (cr  false
+   until
+;
+
 : selftest  ( -- error? )  (scan-wifi)  ;
 
 headers

Modified: ofw/wifi/wifi-cfg.fth
==============================================================================
--- ofw/wifi/wifi-cfg.fth	Wed Jun 27 10:56:28 2012	(r3017)
+++ ofw/wifi/wifi-cfg.fth	Thu Jun 28 10:51:30 2012	(r3018)
@@ -117,6 +117,11 @@
    optional-arg-or-/$  ['] wifi-children scan-subtree
 ;
 
+: test-antenna  ( -- )
+   " /wlan" open-dev >r                 ( r: dev )
+   " test-antenna" r@ $call-method      ( r: dev )
+   r> close-dev                         ( )
+;
 
 0 [if]
 



More information about the openfirmware mailing list