Hex Artifact Content
Not logged in

Artifact f3dc47b6c9bda26fa75b2f8aff1776be62df8e64:


0000: 23 20 41 6e 64 72 6f 69 64 20 6c 6f 63 61 74 69  # Android locati
0010: 6f 6e 2f 47 50 53 2f 4e 4d 45 41 20 64 65 6d 6f  on/GPS/NMEA demo
0020: 0a 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72  ..package requir
0030: 65 20 54 63 6c 20 38 2e 35 0a 70 61 63 6b 61 67  e Tcl 8.5.packag
0040: 65 20 72 65 71 75 69 72 65 20 54 6b 0a 63 61 74  e require Tk.cat
0050: 63 68 20 7b 70 61 63 6b 61 67 65 20 72 65 71 75  ch {package requ
0060: 69 72 65 20 76 75 7d 0a 0a 70 72 6f 63 20 6d 61  ire vu}..proc ma
0070: 6b 65 5f 69 74 65 6d 73 20 63 20 7b 0a 20 20 20  ke_items c {.   
0080: 20 73 65 74 20 6d 77 20 5b 77 69 6e 66 6f 20 73   set mw [winfo s
0090: 63 72 65 65 6e 6d 6d 77 69 64 74 68 20 24 63 5d  creenmmwidth $c]
00a0: 0a 20 20 20 20 73 65 74 20 6d 68 20 5b 77 69 6e  .    set mh [win
00b0: 66 6f 20 73 63 72 65 65 6e 6d 6d 68 65 69 67 68  fo screenmmheigh
00c0: 74 20 24 63 5d 0a 20 20 20 20 69 66 20 7b 24 6d  t $c].    if {$m
00d0: 77 20 3c 20 24 6d 68 7d 20 7b 0a 09 73 65 74 20  w < $mh} {..set 
00e0: 6d 68 20 24 6d 77 0a 20 20 20 20 7d 0a 20 20 20  mh $mw.    }.   
00f0: 20 73 65 74 20 66 73 20 5b 65 78 70 72 20 72 6f   set fs [expr ro
0100: 75 6e 64 28 24 6d 68 20 2f 20 36 29 5d 0a 20 20  und($mh / 6)].  
0110: 20 20 73 65 74 20 66 6f 6e 74 73 28 74 74 62 69    set fonts(ttbi
0120: 67 29 20 5b 6c 69 73 74 20 7b 44 65 6a 61 56 75  g) [list {DejaVu
0130: 20 53 61 6e 73 20 4d 6f 6e 6f 7d 20 24 66 73 5d   Sans Mono} $fs]
0140: 0a 20 20 20 20 73 65 74 20 66 73 20 5b 65 78 70  .    set fs [exp
0150: 72 20 72 6f 75 6e 64 28 24 6d 68 20 2f 20 31 32  r round($mh / 12
0160: 29 5d 0a 20 20 20 20 73 65 74 20 66 6f 6e 74 73  )].    set fonts
0170: 28 6e 6f 72 6d 61 6c 29 20 5b 6c 69 73 74 20 7b  (normal) [list {
0180: 44 65 6a 61 56 75 20 53 61 6e 73 7d 20 24 66 73  DejaVu Sans} $fs
0190: 5d 0a 20 20 20 20 73 65 74 20 66 6f 6e 74 73 28  ].    set fonts(
01a0: 74 74 29 20 5b 6c 69 73 74 20 7b 44 65 6a 61 56  tt) [list {DejaV
01b0: 75 20 53 61 6e 73 20 4d 6f 6e 6f 7d 20 24 66 73  u Sans Mono} $fs
01c0: 5d 0a 20 20 20 20 24 63 20 63 72 65 61 74 65 20  ].    $c create 
01d0: 74 65 78 74 20 31 30 20 32 30 20 2d 74 61 67 73  text 10 20 -tags
01e0: 20 70 6f 73 5f 4e 53 20 2d 61 6e 63 68 6f 72 20   pos_NS -anchor 
01f0: 6e 77 20 2d 66 6f 6e 74 20 24 66 6f 6e 74 73 28  nw -font $fonts(
0200: 74 74 62 69 67 29 0a 20 20 20 20 24 63 20 63 72  ttbig).    $c cr
0210: 65 61 74 65 20 74 65 78 74 20 31 30 20 37 30 20  eate text 10 70 
0220: 2d 74 61 67 73 20 70 6f 73 5f 45 57 20 2d 61 6e  -tags pos_EW -an
0230: 63 68 6f 72 20 6e 77 20 2d 66 6f 6e 74 20 24 66  chor nw -font $f
0240: 6f 6e 74 73 28 74 74 62 69 67 29 0a 20 20 20 20  onts(ttbig).    
0250: 24 63 20 63 72 65 61 74 65 20 74 65 78 74 20 31  $c create text 1
0260: 30 20 31 32 30 20 2d 74 61 67 73 20 70 6f 73 5f  0 120 -tags pos_
0270: 41 20 2d 61 6e 63 68 6f 72 20 6e 77 20 2d 66 6f  A -anchor nw -fo
0280: 6e 74 20 24 66 6f 6e 74 73 28 74 74 62 69 67 29  nt $fonts(ttbig)
0290: 0a 20 20 20 20 24 63 20 63 72 65 61 74 65 20 74  .    $c create t
02a0: 65 78 74 20 31 30 20 33 33 30 20 2d 74 61 67 73  ext 10 330 -tags
02b0: 20 6e 6d 65 61 20 2d 61 6e 63 68 6f 72 20 6e 77   nmea -anchor nw
02c0: 20 2d 66 69 6c 6c 20 67 72 61 79 37 35 20 2d 66   -fill gray75 -f
02d0: 6f 6e 74 20 24 66 6f 6e 74 73 28 74 74 29 0a 20  ont $fonts(tt). 
02e0: 20 20 20 24 63 20 63 72 65 61 74 65 20 74 65 78     $c create tex
02f0: 74 20 36 30 30 20 37 30 20 2d 74 61 67 73 20 72  t 600 70 -tags r
0300: 61 74 65 20 2d 61 6e 63 68 6f 72 20 6e 77 20 2d  ate -anchor nw -
0310: 66 69 6c 6c 20 62 6c 61 63 6b 20 5c 0a 09 2d 66  fill black \..-f
0320: 6f 6e 74 20 24 66 6f 6e 74 73 28 74 74 62 69 67  ont $fonts(ttbig
0330: 29 20 2d 74 65 78 74 20 22 20 73 74 6f 70 20 22  ) -text " stop "
0340: 0a 20 20 20 20 24 63 20 63 72 65 61 74 65 20 72  .    $c create r
0350: 65 63 74 61 6e 67 6c 65 20 7b 2a 7d 5b 24 63 20  ectangle {*}[$c 
0360: 62 62 6f 78 20 72 61 74 65 5d 20 2d 74 61 67 73  bbox rate] -tags
0370: 20 72 61 74 65 62 20 2d 77 69 64 74 68 20 35 20   rateb -width 5 
0380: 5c 0a 09 2d 6f 75 74 6c 69 6e 65 20 6f 72 61 6e  \..-outline oran
0390: 67 65 20 2d 66 69 6c 6c 20 6f 72 61 6e 67 65 0a  ge -fill orange.
03a0: 20 20 20 20 24 63 20 6c 6f 77 65 72 20 72 61 74      $c lower rat
03b0: 65 62 0a 20 20 20 20 66 6f 72 20 7b 73 65 74 20  eb.    for {set 
03c0: 69 20 30 7d 20 7b 24 69 20 3c 20 31 30 7d 20 7b  i 0} {$i < 10} {
03d0: 69 6e 63 72 20 69 7d 20 7b 0a 09 73 65 74 20 78  incr i} {..set x
03e0: 20 5b 65 78 70 72 20 7b 36 30 20 2b 20 24 69 20   [expr {60 + $i 
03f0: 2a 20 37 30 7d 5d 0a 09 63 61 74 63 68 20 7b 0a  * 70}]..catch {.
0400: 09 20 20 20 20 24 63 20 63 72 65 61 74 65 20 73  .    $c create s
0410: 74 69 63 6b 65 72 20 24 78 20 32 30 30 20 5b 65  ticker $x 200 [e
0420: 78 70 72 20 7b 24 78 20 2b 20 35 30 7d 5d 20 33  xpr {$x + 50}] 3
0430: 30 30 20 5c 0a 09 09 2d 74 61 67 73 20 73 6e 72  00 \...-tags snr
0440: 5f 24 69 20 2d 66 69 6c 6c 20 7b 7d 20 2d 6f 72  _$i -fill {} -or
0450: 69 65 6e 74 20 76 65 72 74 69 63 61 6c 20 5c 0a  ient vertical \.
0460: 09 09 2d 66 6f 6e 74 20 24 66 6f 6e 74 73 28 6e  ..-font $fonts(n
0470: 6f 72 6d 61 6c 29 20 5c 0a 09 09 2d 72 65 6c 68  ormal) \...-relh
0480: 65 69 67 68 74 20 30 20 2d 72 65 6c 77 69 64 74  eight 0 -relwidt
0490: 68 20 31 20 2d 72 65 6c 78 20 30 20 2d 72 65 6c  h 1 -relx 0 -rel
04a0: 79 20 30 20 5c 0a 09 09 2d 73 70 61 63 65 20 30  y 0 \...-space 0
04b0: 20 2d 77 69 64 74 68 20 30 20 2d 62 61 72 20 62   -width 0 -bar b
04c0: 6c 75 65 20 2d 63 6f 6c 6f 72 20 77 68 69 74 65  lue -color white
04d0: 20 5c 0a 09 09 2d 6f 75 74 6c 69 6e 65 20 77 68   \...-outline wh
04e0: 69 74 65 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20  ite..}.    }.   
04f0: 20 2e 63 20 62 69 6e 64 20 72 61 74 65 20 20 3c   .c bind rate  <
0500: 31 3e 20 5b 6c 69 73 74 20 63 68 61 6e 67 65 5f  1> [list change_
0510: 72 61 74 65 20 24 63 5d 0a 20 20 20 20 2e 63 20  rate $c].    .c 
0520: 62 69 6e 64 20 72 61 74 65 62 20 3c 31 3e 20 5b  bind rateb <1> [
0530: 6c 69 73 74 20 63 68 61 6e 67 65 5f 72 61 74 65  list change_rate
0540: 20 24 63 5d 0a 7d 0a 0a 70 72 6f 63 20 63 68 61   $c].}..proc cha
0550: 6e 67 65 5f 72 61 74 65 20 63 20 7b 0a 20 20 20  nge_rate c {.   
0560: 20 73 65 74 20 74 65 78 74 20 5b 24 63 20 69 74   set text [$c it
0570: 65 6d 63 67 65 74 20 72 61 74 65 20 2d 74 65 78  emcget rate -tex
0580: 74 5d 0a 20 20 20 20 73 77 69 74 63 68 20 2d 67  t].    switch -g
0590: 6c 6f 62 20 2d 2d 20 24 74 65 78 74 20 7b 0a 09  lob -- $text {..
05a0: 7b 20 36 30 20 2a 7d 20 7b 0a 09 20 20 20 20 24  { 60 *} {..    $
05b0: 63 20 69 74 65 6d 63 6f 6e 66 69 67 75 72 65 20  c itemconfigure 
05c0: 72 61 74 65 20 2d 74 65 78 74 20 22 20 73 74 6f  rate -text " sto
05d0: 70 20 22 0a 09 20 20 20 20 73 65 74 20 72 61 74  p "..    set rat
05e0: 65 20 30 0a 09 7d 0a 09 7b 20 33 30 20 2a 7d 20  e 0..}..{ 30 *} 
05f0: 7b 0a 09 20 20 20 20 24 63 20 69 74 65 6d 63 6f  {..    $c itemco
0600: 6e 66 69 67 75 72 65 20 72 61 74 65 20 2d 74 65  nfigure rate -te
0610: 78 74 20 22 20 36 30 20 73 20 22 0a 09 20 20 20  xt " 60 s "..   
0620: 20 73 65 74 20 72 61 74 65 20 36 30 30 30 30 0a   set rate 60000.
0630: 09 7d 0a 09 7b 20 31 35 20 2a 7d 20 7b 0a 09 20  .}..{ 15 *} {.. 
0640: 20 20 20 24 63 20 69 74 65 6d 63 6f 6e 66 69 67     $c itemconfig
0650: 75 72 65 20 72 61 74 65 20 2d 74 65 78 74 20 22  ure rate -text "
0660: 20 33 30 20 73 20 22 0a 09 20 20 20 20 73 65 74   30 s "..    set
0670: 20 72 61 74 65 20 33 30 30 30 30 0a 09 7d 0a 09   rate 30000..}..
0680: 7b 20 31 30 20 2a 7d 20 7b 0a 09 20 20 20 20 24  { 10 *} {..    $
0690: 63 20 69 74 65 6d 63 6f 6e 66 69 67 75 72 65 20  c itemconfigure 
06a0: 72 61 74 65 20 2d 74 65 78 74 20 22 20 31 35 20  rate -text " 15 
06b0: 73 20 22 0a 09 20 20 20 20 73 65 74 20 72 61 74  s "..    set rat
06c0: 65 20 31 35 30 30 30 0a 09 7d 0a 09 7b 20 20 35  e 15000..}..{  5
06d0: 20 2a 7d 20 7b 0a 09 20 20 20 20 24 63 20 69 74   *} {..    $c it
06e0: 65 6d 63 6f 6e 66 69 67 75 72 65 20 72 61 74 65  emconfigure rate
06f0: 20 2d 74 65 78 74 20 22 20 31 30 20 73 20 22 0a   -text " 10 s ".
0700: 09 20 20 20 20 73 65 74 20 72 61 74 65 20 31 35  .    set rate 15
0710: 30 30 30 0a 09 7d 0a 09 64 65 66 61 75 6c 74 20  000..}..default 
0720: 7b 0a 09 20 20 20 20 24 63 20 69 74 65 6d 63 6f  {..    $c itemco
0730: 6e 66 69 67 75 72 65 20 72 61 74 65 20 2d 74 65  nfigure rate -te
0740: 78 74 20 22 20 20 35 20 73 20 22 0a 09 20 20 20  xt "  5 s "..   
0750: 20 73 65 74 20 72 61 74 65 20 31 30 30 30 30 0a   set rate 10000.
0760: 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  .}.    }.    if 
0770: 7b 24 72 61 74 65 20 3c 3d 20 30 7d 20 7b 0a 09  {$rate <= 0} {..
0780: 62 6f 72 67 20 6c 6f 63 61 74 69 6f 6e 20 73 74  borg location st
0790: 6f 70 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  op.    } else {.
07a0: 09 62 6f 72 67 20 6c 6f 63 61 74 69 6f 6e 20 73  .borg location s
07b0: 74 61 72 74 20 24 72 61 74 65 0a 20 20 20 20 7d  tart $rate.    }
07c0: 0a 7d 0a 0a 70 72 6f 63 20 6c 6f 63 61 74 69 6f  .}..proc locatio
07d0: 6e 5f 75 70 64 61 74 65 20 63 20 7b 0a 20 20 20  n_update c {.   
07e0: 20 73 65 74 20 74 20 5b 62 6f 72 67 20 6c 6f 63   set t [borg loc
07f0: 61 74 69 6f 6e 20 67 65 74 5d 0a 20 20 20 20 62  ation get].    b
0800: 6f 72 67 20 6c 6f 67 20 76 65 72 62 6f 73 65 20  org log verbose 
0810: 41 6e 64 72 6f 57 69 73 68 20 22 6c 6f 63 61 74  AndroWish "locat
0820: 69 6f 6e 3a 20 24 74 22 0a 20 20 20 20 61 72 72  ion: $t".    arr
0830: 61 79 20 73 65 74 20 70 6f 73 20 5b 62 6f 72 67  ay set pos [borg
0840: 20 6c 6f 63 61 74 69 6f 6e 20 67 65 74 5d 0a 20   location get]. 
0850: 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69     if {[info exi
0860: 73 74 73 20 70 6f 73 28 67 70 73 29 5d 7d 20 7b  sts pos(gps)]} {
0870: 0a 09 61 72 72 61 79 20 73 65 74 20 70 6f 73 20  ..array set pos 
0880: 24 70 6f 73 28 67 70 73 29 0a 09 73 65 74 20 63  $pos(gps)..set c
0890: 6f 6c 6f 72 20 67 72 65 65 6e 0a 20 20 20 20 7d  olor green.    }
08a0: 20 65 6c 73 65 69 66 20 7b 5b 69 6e 66 6f 20 65   elseif {[info e
08b0: 78 69 73 74 73 20 70 6f 73 28 6e 65 74 77 6f 72  xists pos(networ
08c0: 6b 29 5d 7d 20 7b 0a 09 61 72 72 61 79 20 73 65  k)]} {..array se
08d0: 74 20 70 6f 73 20 24 70 6f 73 28 6e 65 74 77 6f  t pos $pos(netwo
08e0: 72 6b 29 0a 09 73 65 74 20 63 6f 6c 6f 72 20 67  rk)..set color g
08f0: 72 65 65 6e 32 0a 20 20 20 20 7d 0a 20 20 20 20  reen2.    }.    
0900: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
0910: 20 70 6f 73 28 6c 61 74 69 74 75 64 65 29 5d 7d   pos(latitude)]}
0920: 20 7b 0a 09 73 65 74 20 6e 73 20 5b 66 6f 72 6d   {..set ns [form
0930: 61 74 20 22 25 31 32 2e 36 66 22 20 5b 65 78 70  at "%12.6f" [exp
0940: 72 20 61 62 73 28 24 70 6f 73 28 6c 61 74 69 74  r abs($pos(latit
0950: 75 64 65 29 29 5d 5d 0a 09 69 66 20 7b 24 70 6f  ude))]]..if {$po
0960: 73 28 6c 61 74 69 74 75 64 65 29 20 3c 20 30 7d  s(latitude) < 0}
0970: 20 7b 0a 09 20 20 20 20 61 70 70 65 6e 64 20 6e   {..    append n
0980: 73 20 22 5c 75 30 30 62 30 20 53 22 0a 09 7d 20  s "\u00b0 S"..} 
0990: 65 6c 73 65 20 7b 0a 09 20 20 20 20 61 70 70 65  else {..    appe
09a0: 6e 64 20 6e 73 20 22 5c 75 30 30 62 30 20 4e 22  nd ns "\u00b0 N"
09b0: 0a 09 7d 0a 09 73 65 74 20 65 77 20 5b 66 6f 72  ..}..set ew [for
09c0: 6d 61 74 20 22 25 31 32 2e 36 66 22 20 5b 65 78  mat "%12.6f" [ex
09d0: 70 72 20 61 62 73 28 24 70 6f 73 28 6c 6f 6e 67  pr abs($pos(long
09e0: 69 74 75 64 65 29 29 5d 5d 0a 09 69 66 20 7b 24  itude))]]..if {$
09f0: 70 6f 73 28 6c 6f 6e 67 69 74 75 64 65 29 20 3c  pos(longitude) <
0a00: 20 30 7d 20 7b 0a 09 20 20 20 20 61 70 70 65 6e   0} {..    appen
0a10: 64 20 65 77 20 22 5c 75 30 30 62 30 20 57 22 0a  d ew "\u00b0 W".
0a20: 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 61  .} else {..    a
0a30: 70 70 65 6e 64 20 65 77 20 22 5c 75 30 30 62 30  ppend ew "\u00b0
0a40: 20 45 22 0a 09 7d 0a 09 73 65 74 20 61 6c 74 20   E"..}..set alt 
0a50: 5b 66 6f 72 6d 61 74 20 22 25 37 2e 31 66 20 4d  [format "%7.1f M
0a60: 41 4d 53 4c 22 20 24 70 6f 73 28 61 6c 74 69 74  AMSL" $pos(altit
0a70: 75 64 65 29 5d 0a 09 24 63 20 69 74 65 6d 63 6f  ude)]..$c itemco
0a80: 6e 66 69 67 75 72 65 20 70 6f 73 5f 4e 53 20 2d  nfigure pos_NS -
0a90: 66 69 6c 6c 20 24 63 6f 6c 6f 72 20 2d 74 65 78  fill $color -tex
0aa0: 74 20 24 6e 73 0a 09 24 63 20 69 74 65 6d 63 6f  t $ns..$c itemco
0ab0: 6e 66 69 67 75 72 65 20 70 6f 73 5f 45 57 20 2d  nfigure pos_EW -
0ac0: 66 69 6c 6c 20 24 63 6f 6c 6f 72 20 2d 74 65 78  fill $color -tex
0ad0: 74 20 24 65 77 0a 09 24 63 20 69 74 65 6d 63 6f  t $ew..$c itemco
0ae0: 6e 66 69 67 75 72 65 20 70 6f 73 5f 41 20 2d 66  nfigure pos_A -f
0af0: 69 6c 6c 20 24 63 6f 6c 6f 72 20 2d 74 65 78 74  ill $color -text
0b00: 20 24 61 6c 74 0a 20 20 20 20 7d 20 65 6c 73 65   $alt.    } else
0b10: 20 7b 0a 09 24 63 20 69 74 65 6d 63 6f 6e 66 69   {..$c itemconfi
0b20: 67 75 72 65 20 70 6f 73 5f 4e 53 20 2d 66 69 6c  gure pos_NS -fil
0b30: 6c 20 79 65 6c 6c 6f 77 0a 09 24 63 20 69 74 65  l yellow..$c ite
0b40: 6d 63 6f 6e 66 69 67 75 72 65 20 70 6f 73 5f 45  mconfigure pos_E
0b50: 57 20 2d 66 69 6c 6c 20 79 65 6c 6c 6f 77 0a 09  W -fill yellow..
0b60: 24 63 20 69 74 65 6d 63 6f 6e 66 69 67 75 72 65  $c itemconfigure
0b70: 20 70 6f 73 5f 41 20 2d 66 69 6c 6c 20 79 65 6c   pos_A -fill yel
0b80: 6c 6f 77 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f  low.    }.}..pro
0b90: 63 20 67 70 73 5f 75 70 64 61 74 65 20 63 20 7b  c gps_update c {
0ba0: 0a 20 20 20 20 73 65 74 20 63 6f 6c 6f 72 20 62  .    set color b
0bb0: 6c 75 65 0a 20 20 20 20 73 65 74 20 74 20 5b 62  lue.    set t [b
0bc0: 6f 72 67 20 6c 6f 63 61 74 69 6f 6e 20 67 70 73  org location gps
0bd0: 5d 0a 20 20 20 20 62 6f 72 67 20 6c 6f 67 20 76  ].    borg log v
0be0: 65 72 62 6f 73 65 20 41 6e 64 72 6f 57 69 73 68  erbose AndroWish
0bf0: 20 22 67 70 73 3a 20 24 74 22 0a 20 20 20 20 61   "gps: $t".    a
0c00: 72 72 61 79 20 73 65 74 20 73 74 61 74 65 20 24  rray set state $
0c10: 74 0a 20 20 20 20 69 66 20 7b 24 73 74 61 74 65  t.    if {$state
0c20: 28 73 74 61 74 65 29 20 65 71 20 22 6f 66 66 22  (state) eq "off"
0c30: 7d 20 7b 0a 09 73 65 74 20 63 6f 6c 6f 72 20 62  } {..set color b
0c40: 6c 75 65 34 0a 09 24 63 20 69 74 65 6d 63 6f 6e  lue4..$c itemcon
0c50: 66 69 67 75 72 65 20 70 6f 73 5f 4e 53 20 2d 66  figure pos_NS -f
0c60: 69 6c 6c 20 79 65 6c 6c 6f 77 0a 09 24 63 20 69  ill yellow..$c i
0c70: 74 65 6d 63 6f 6e 66 69 67 75 72 65 20 70 6f 73  temconfigure pos
0c80: 5f 45 57 20 2d 66 69 6c 6c 20 79 65 6c 6c 6f 77  _EW -fill yellow
0c90: 0a 09 24 63 20 69 74 65 6d 63 6f 6e 66 69 67 75  ..$c itemconfigu
0ca0: 72 65 20 70 6f 73 5f 41 20 2d 66 69 6c 6c 20 79  re pos_A -fill y
0cb0: 65 6c 6c 6f 77 0a 09 66 6f 72 20 7b 73 65 74 20  ellow..for {set 
0cc0: 69 20 30 7d 20 7b 24 69 20 3c 20 31 30 7d 20 7b  i 0} {$i < 10} {
0cd0: 69 6e 63 72 20 69 7d 20 7b 0a 09 20 20 20 20 24  incr i} {..    $
0ce0: 63 20 69 74 65 6d 63 6f 6e 66 69 67 75 72 65 20  c itemconfigure 
0cf0: 73 6e 72 5f 24 69 20 2d 62 61 72 20 24 63 6f 6c  snr_$i -bar $col
0d00: 6f 72 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20  or..}.    }.    
0d10: 73 65 74 20 74 20 5b 62 6f 72 67 20 6c 6f 63 61  set t [borg loca
0d20: 74 69 6f 6e 20 73 61 74 65 6c 6c 69 74 65 73 5d  tion satellites]
0d30: 0a 20 20 20 20 69 66 20 7b 24 74 20 65 71 20 22  .    if {$t eq "
0d40: 22 7d 20 7b 0a 09 66 6f 72 20 7b 73 65 74 20 69  "} {..for {set i
0d50: 20 30 7d 20 7b 24 69 20 3c 20 31 30 7d 20 7b 69   0} {$i < 10} {i
0d60: 6e 63 72 20 69 7d 20 7b 0a 09 20 20 20 20 24 63  ncr i} {..    $c
0d70: 20 69 74 65 6d 63 6f 6e 66 69 67 75 72 65 20 73   itemconfigure s
0d80: 6e 72 5f 24 69 20 2d 62 61 72 20 62 6c 75 65 34  nr_$i -bar blue4
0d90: 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20  ..}..return.    
0da0: 7d 0a 20 20 20 20 62 6f 72 67 20 6c 6f 67 20 76  }.    borg log v
0db0: 65 72 62 6f 73 65 20 41 6e 64 72 6f 57 69 73 68  erbose AndroWish
0dc0: 20 22 73 61 74 3a 20 24 74 22 0a 20 20 20 20 61   "sat: $t".    a
0dd0: 72 72 61 79 20 73 65 74 20 73 61 74 20 24 74 0a  rray set sat $t.
0de0: 20 20 20 20 66 6f 72 20 7b 73 65 74 20 69 20 30      for {set i 0
0df0: 7d 20 7b 24 69 20 3c 20 31 30 7d 20 7b 69 6e 63  } {$i < 10} {inc
0e00: 72 20 69 7d 20 7b 0a 09 69 66 20 7b 5b 69 6e 66  r i} {..if {[inf
0e10: 6f 20 65 78 69 73 74 73 20 73 61 74 28 24 69 29  o exists sat($i)
0e20: 5d 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 76 20  ]} {..    set v 
0e30: 5b 64 69 63 74 20 67 65 74 20 24 73 61 74 28 24  [dict get $sat($
0e40: 69 29 20 73 6e 72 5d 0a 09 20 20 20 20 73 65 74  i) snr]..    set
0e50: 20 74 20 5b 64 69 63 74 20 67 65 74 20 24 73 61   t [dict get $sa
0e60: 74 28 24 69 29 20 70 72 6e 5d 0a 09 7d 20 65 6c  t($i) prn]..} el
0e70: 73 65 20 7b 0a 09 20 20 20 20 73 65 74 20 76 20  se {..    set v 
0e80: 30 0a 09 20 20 20 20 73 65 74 20 74 20 22 22 0a  0..    set t "".
0e90: 09 7d 0a 09 69 66 20 7b 24 76 20 3e 20 36 30 7d  .}..if {$v > 60}
0ea0: 20 7b 0a 09 20 20 20 20 73 65 74 20 76 20 36 30   {..    set v 60
0eb0: 0a 09 7d 0a 09 73 65 74 20 76 20 5b 65 78 70 72  ..}..set v [expr
0ec0: 20 7b 24 76 20 2f 20 36 30 2e 30 7d 5d 0a 09 24   {$v / 60.0}]..$
0ed0: 63 20 69 74 65 6d 63 6f 6e 66 69 67 75 72 65 20  c itemconfigure 
0ee0: 73 6e 72 5f 24 69 20 2d 72 65 6c 79 20 5b 65 78  snr_$i -rely [ex
0ef0: 70 72 20 7b 31 20 2d 20 24 76 7d 5d 20 2d 72 65  pr {1 - $v}] -re
0f00: 6c 68 65 69 67 68 74 20 24 76 20 5c 0a 09 20 20  lheight $v \..  
0f10: 20 20 2d 74 65 78 74 20 24 74 20 2d 62 61 72 20    -text $t -bar 
0f20: 24 63 6f 6c 6f 72 0a 20 20 20 20 7d 0a 7d 0a 0a  $color.    }.}..
0f30: 70 72 6f 63 20 6e 6d 65 61 5f 75 70 64 61 74 65  proc nmea_update
0f40: 20 63 20 7b 0a 20 20 20 20 61 72 72 61 79 20 73   c {.    array s
0f50: 65 74 20 6e 6d 65 61 20 5b 62 6f 72 67 20 6c 6f  et nmea [borg lo
0f60: 63 61 74 69 6f 6e 20 6e 6d 65 61 5d 0a 20 20 20  cation nmea].   
0f70: 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74   if {[info exist
0f80: 73 20 6e 6d 65 61 28 6e 6d 65 61 29 5d 7d 20 7b  s nmea(nmea)]} {
0f90: 0a 09 73 65 74 20 74 65 78 74 20 5b 73 70 6c 69  ..set text [spli
0fa0: 74 20 5b 24 63 20 69 74 65 6d 63 67 65 74 20 6e  t [$c itemcget n
0fb0: 6d 65 61 20 2d 74 65 78 74 5d 20 22 5c 6e 22 5d  mea -text] "\n"]
0fc0: 0a 09 73 65 74 20 74 20 5b 73 70 6c 69 74 20 5b  ..set t [split [
0fd0: 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74  string map [list
0fe0: 20 22 5c 72 22 20 22 22 5d 20 5b 73 74 72 69 6e   "\r" ""] [strin
0ff0: 67 20 74 72 69 6d 20 24 6e 6d 65 61 28 6e 6d 65  g trim $nmea(nme
1000: 61 29 5d 5d 5d 0a 09 6c 61 70 70 65 6e 64 20 74  a)]]]..lappend t
1010: 65 78 74 20 7b 2a 7d 24 74 0a 09 73 65 74 20 74  ext {*}$t..set t
1020: 65 78 74 20 5b 6c 72 61 6e 67 65 20 24 74 65 78  ext [lrange $tex
1030: 74 20 65 6e 64 2d 31 35 20 65 6e 64 5d 0a 09 24  t end-15 end]..$
1040: 63 20 69 74 65 6d 63 6f 6e 66 69 67 75 72 65 20  c itemconfigure 
1050: 6e 6d 65 61 20 2d 74 65 78 74 20 5b 6a 6f 69 6e  nmea -text [join
1060: 20 24 74 65 78 74 20 22 5c 6e 22 5d 0a 20 20 20   $text "\n"].   
1070: 20 7d 0a 7d 0a 0a 77 6d 20 61 74 74 72 69 62 75   }.}..wm attribu
1080: 74 65 73 20 2e 20 2d 66 75 6c 6c 73 63 72 65 65  tes . -fullscree
1090: 6e 20 31 0a 62 6f 72 67 20 73 63 72 65 65 6e 6f  n 1.borg screeno
10a0: 72 69 65 6e 74 61 74 69 6f 6e 20 6c 61 6e 64 73  rientation lands
10b0: 63 61 70 65 0a 0a 63 61 6e 76 61 73 20 2e 63 20  cape..canvas .c 
10c0: 2d 62 67 20 62 6c 61 63 6b 20 2d 62 64 20 30 20  -bg black -bd 0 
10d0: 2d 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b 6e  -highlightthickn
10e0: 65 73 73 20 30 0a 70 61 63 6b 20 2e 63 20 2d 73  ess 0.pack .c -s
10f0: 69 64 65 20 74 6f 70 20 2d 66 69 6c 6c 20 62 6f  ide top -fill bo
1100: 74 68 20 2d 65 78 70 61 6e 64 20 31 20 2d 70 61  th -expand 1 -pa
1110: 64 78 20 30 20 2d 70 61 64 79 20 30 0a 0a 6d 61  dx 0 -pady 0..ma
1120: 6b 65 5f 69 74 65 6d 73 20 2e 63 0a 0a 62 69 6e  ke_items .c..bin
1130: 64 20 61 6c 6c 20 3c 4b 65 79 2d 42 72 65 61 6b  d all <Key-Break
1140: 3e 20 65 78 69 74 0a 0a 62 69 6e 64 20 2e 20 3c  > exit..bind . <
1150: 3c 4c 6f 63 61 74 69 6f 6e 55 70 64 61 74 65 3e  <LocationUpdate>
1160: 3e 20 5b 6c 69 73 74 20 6c 6f 63 61 74 69 6f 6e  > [list location
1170: 5f 75 70 64 61 74 65 20 2e 63 5d 20 0a 62 69 6e  _update .c] .bin
1180: 64 20 2e 20 3c 3c 47 50 53 55 70 64 61 74 65 3e  d . <<GPSUpdate>
1190: 3e 20 5b 6c 69 73 74 20 67 70 73 5f 75 70 64 61  > [list gps_upda
11a0: 74 65 20 2e 63 5d 20 0a 62 69 6e 64 20 2e 20 3c  te .c] .bind . <
11b0: 3c 4e 4d 45 41 55 70 64 61 74 65 3e 3e 20 5b 6c  <NMEAUpdate>> [l
11c0: 69 73 74 20 6e 6d 65 61 5f 75 70 64 61 74 65 20  ist nmea_update 
11d0: 2e 63 5d 0a 0a 63 68 61 6e 67 65 5f 72 61 74 65  .c]..change_rate
11e0: 20 2e 63 0a 0a                                    .c..