Artifact
f3dc47b6c9bda26fa75b2f8aff1776be62df8e64 :
File
jni/sdl2tk/library/demos/android_gps.tcl
— part of check-in
[b60dd086f1]
at
2014-09-16 09:29:32
on branch trunk
— added "borg tetherinfo" and <<TetherInfo>> virtual event plus some fixes,
added snack/udp-mcast demo
(user:
chw
size: 4581)
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..