Hex Artifact Content
Not logged in

Artifact 10d05e3afbea27ba9b265d687bb5c4339400c6d7:


0000: 23 20 41 6e 64 72 6f 69 64 20 64 65 6d 6f 20 66  # Android demo f
0010: 6f 72 20 3c 3c 53 65 6e 73 6f 72 3e 3e 20 65 76  or <<Sensor>> ev
0020: 65 6e 74 73 0a 0a 70 72 6f 63 20 6d 6b 73 65 6e  ents..proc mksen
0030: 73 6f 72 20 7b 64 61 74 61 7d 20 7b 0a 20 20 20  sor {data} {.   
0040: 20 61 72 72 61 79 20 73 65 74 20 73 65 6e 73 6f   array set senso
0050: 72 20 24 64 61 74 61 0a 20 20 20 20 73 65 74 20  r $data.    set 
0060: 69 20 24 73 65 6e 73 6f 72 28 69 6e 64 65 78 29  i $sensor(index)
0070: 0a 20 20 20 20 73 65 74 20 66 20 2e 73 24 69 0a  .    set f .s$i.
0080: 20 20 20 20 6c 61 62 65 6c 66 72 61 6d 65 20 24      labelframe $
0090: 66 20 2d 74 65 78 74 20 24 73 65 6e 73 6f 72 28  f -text $sensor(
00a0: 6e 61 6d 65 29 0a 20 20 20 20 74 74 6b 3a 3a 63  name).    ttk::c
00b0: 68 65 63 6b 62 75 74 74 6f 6e 20 24 66 2e 65 6e  heckbutton $f.en
00c0: 20 2d 74 65 78 74 20 22 45 6e 61 62 6c 65 22 20   -text "Enable" 
00d0: 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 74  -command [list t
00e0: 6f 67 67 6c 65 73 65 6e 73 6f 72 20 24 69 5d 20  ogglesensor $i] 
00f0: 5c 0a 09 2d 76 61 72 69 61 62 6c 65 20 3a 3a 53  \..-variable ::S
0100: 45 4e 53 4f 52 28 24 69 2c 65 6e 61 62 6c 65 64  ENSOR($i,enabled
0110: 29 0a 20 20 20 20 67 72 69 64 20 24 66 2e 65 6e  ).    grid $f.en
0120: 20 2d 72 6f 77 20 30 20 2d 63 6f 6c 75 6d 6e 20   -row 0 -column 
0130: 30 20 2d 73 74 69 63 6b 79 20 77 20 2d 70 61 64  0 -sticky w -pad
0140: 78 20 35 20 2d 70 61 64 79 20 35 0a 20 20 20 20  x 5 -pady 5.    
0150: 65 6e 74 72 79 20 24 66 2e 76 61 6c 20 2d 74 65  entry $f.val -te
0160: 78 74 76 61 72 69 61 62 6c 65 20 3a 3a 53 45 4e  xtvariable ::SEN
0170: 53 4f 52 28 24 69 2c 76 61 6c 75 65 73 29 20 2d  SOR($i,values) -
0180: 77 69 64 74 68 20 33 35 20 5c 0a 09 2d 64 69 73  width 35 \..-dis
0190: 61 62 6c 65 64 66 6f 72 65 67 72 6f 75 6e 64 20  abledforeground 
01a0: 62 6c 61 63 6b 20 2d 64 69 73 61 62 6c 65 64 62  black -disabledb
01b0: 61 63 6b 67 72 6f 75 6e 64 20 77 68 69 74 65 20  ackground white 
01c0: 5c 0a 09 2d 73 74 61 74 65 20 64 69 73 61 62 6c  \..-state disabl
01d0: 65 64 0a 20 20 20 20 67 72 69 64 20 24 66 2e 76  ed.    grid $f.v
01e0: 61 6c 20 2d 72 6f 77 20 30 20 2d 63 6f 6c 75 6d  al -row 0 -colum
01f0: 6e 20 31 20 2d 73 74 69 63 6b 79 20 65 77 20 2d  n 1 -sticky ew -
0200: 70 61 64 78 20 35 20 2d 70 61 64 79 20 35 0a 20  padx 5 -pady 5. 
0210: 20 20 20 70 61 63 6b 20 24 66 20 2d 73 69 64 65     pack $f -side
0220: 20 74 6f 70 20 2d 70 61 64 78 20 31 30 20 2d 70   top -padx 10 -p
0230: 61 64 79 20 31 30 0a 20 20 20 20 73 65 74 20 3a  ady 10.    set :
0240: 3a 53 45 4e 53 4f 52 28 24 69 2c 65 6e 61 62 6c  :SENSOR($i,enabl
0250: 65 64 29 20 31 0a 20 20 20 20 75 70 64 61 74 65  ed) 1.    update
0260: 73 65 6e 73 6f 72 20 24 69 0a 7d 0a 0a 70 72 6f  sensor $i.}..pro
0270: 63 20 75 70 64 61 74 65 73 65 6e 73 6f 72 20 7b  c updatesensor {
0280: 69 7d 20 7b 0a 20 20 20 20 61 72 72 61 79 20 73  i} {.    array s
0290: 65 74 20 73 65 6e 73 6f 72 20 5b 62 6f 72 67 20  et sensor [borg 
02a0: 73 65 6e 73 6f 72 20 67 65 74 20 24 69 5d 0a 20  sensor get $i]. 
02b0: 20 20 20 73 65 74 20 3a 3a 53 45 4e 53 4f 52 28     set ::SENSOR(
02c0: 24 69 2c 76 61 6c 75 65 73 29 20 24 73 65 6e 73  $i,values) $sens
02d0: 6f 72 28 76 61 6c 75 65 73 29 0a 20 20 20 20 69  or(values).    i
02e0: 66 20 7b 24 3a 3a 53 45 4e 53 4f 52 28 24 69 2c  f {$::SENSOR($i,
02f0: 65 6e 61 62 6c 65 64 29 7d 20 7b 0a 09 73 65 74  enabled)} {..set
0300: 20 3a 3a 53 45 4e 53 4f 52 28 24 69 2c 65 6e 61   ::SENSOR($i,ena
0310: 62 6c 65 64 29 20 24 73 65 6e 73 6f 72 28 65 6e  bled) $sensor(en
0320: 61 62 6c 65 64 29 0a 20 20 20 20 7d 0a 7d 0a 0a  abled).    }.}..
0330: 70 72 6f 63 20 74 6f 67 67 6c 65 73 65 6e 73 6f  proc togglesenso
0340: 72 20 7b 69 7d 20 7b 0a 20 20 20 20 69 66 20 7b  r {i} {.    if {
0350: 24 3a 3a 53 45 4e 53 4f 52 28 24 69 2c 65 6e 61  $::SENSOR($i,ena
0360: 62 6c 65 64 29 7d 20 7b 0a 09 62 6f 72 67 20 73  bled)} {..borg s
0370: 65 6e 73 6f 72 20 65 6e 61 62 6c 65 20 24 69 0a  ensor enable $i.
0380: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 62 6f      } else {..bo
0390: 72 67 20 73 65 6e 73 6f 72 20 64 69 73 61 62 6c  rg sensor disabl
03a0: 65 20 24 69 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72  e $i.    }.}..pr
03b0: 6f 63 20 77 61 74 63 68 64 6f 67 20 7b 7d 20 7b  oc watchdog {} {
03c0: 0a 20 20 20 20 61 66 74 65 72 20 63 61 6e 63 65  .    after cance
03d0: 6c 20 77 61 74 63 68 64 6f 67 0a 20 20 20 20 61  l watchdog.    a
03e0: 66 74 65 72 20 31 30 30 30 30 20 77 61 74 63 68  fter 10000 watch
03f0: 64 6f 67 0a 20 20 20 20 66 6f 72 65 61 63 68 20  dog.    foreach 
0400: 73 20 5b 6c 72 61 6e 67 65 20 5b 62 6f 72 67 20  s [lrange [borg 
0410: 73 65 6e 73 6f 72 20 6c 69 73 74 5d 20 30 20 35  sensor list] 0 5
0420: 5d 20 7b 0a 09 61 72 72 61 79 20 73 65 74 20 64  ] {..array set d
0430: 61 74 61 20 24 73 0a 09 73 65 74 20 69 20 24 64  ata $s..set i $d
0440: 61 74 61 28 69 6e 64 65 78 29 0a 09 61 72 72 61  ata(index)..arra
0450: 79 20 73 65 74 20 73 65 6e 73 6f 72 20 5b 62 6f  y set sensor [bo
0460: 72 67 20 73 65 6e 73 6f 72 20 67 65 74 20 24 69  rg sensor get $i
0470: 5d 0a 09 69 66 20 7b 21 24 73 65 6e 73 6f 72 28  ]..if {!$sensor(
0480: 65 6e 61 62 6c 65 64 29 7d 20 7b 0a 09 20 20 20  enabled)} {..   
0490: 20 73 65 74 20 3a 3a 53 45 4e 53 4f 52 28 24 69   set ::SENSOR($i
04a0: 2c 65 6e 61 62 6c 65 64 29 20 30 0a 09 7d 0a 20  ,enabled) 0..}. 
04b0: 20 20 20 7d 0a 7d 0a 0a 77 6d 20 61 74 74 72 69     }.}..wm attri
04c0: 62 75 74 65 73 20 2e 20 2d 66 75 6c 6c 73 63 72  butes . -fullscr
04d0: 65 65 6e 20 31 0a 62 69 6e 64 20 2e 20 3c 42 72  een 1.bind . <Br
04e0: 65 61 6b 3e 20 65 78 69 74 0a 62 69 6e 64 20 2e  eak> exit.bind .
04f0: 20 3c 3c 53 65 6e 73 6f 72 55 70 64 61 74 65 3e   <<SensorUpdate>
0500: 3e 20 7b 75 70 64 61 74 65 73 65 6e 73 6f 72 20  > {updatesensor 
0510: 25 78 7d 0a 6c 61 62 65 6c 20 2e 74 6f 70 20 2d  %x}.label .top -
0520: 74 65 78 74 20 22 44 65 76 69 63 65 20 53 65 6e  text "Device Sen
0530: 73 6f 72 73 22 0a 70 61 63 6b 20 2e 74 6f 70 20  sors".pack .top 
0540: 2d 73 69 64 65 20 74 6f 70 20 2d 70 61 64 79 20  -side top -pady 
0550: 31 30 0a 66 6f 72 65 61 63 68 20 73 20 5b 6c 72  10.foreach s [lr
0560: 61 6e 67 65 20 5b 62 6f 72 67 20 73 65 6e 73 6f  ange [borg senso
0570: 72 20 6c 69 73 74 5d 20 30 20 35 5d 20 7b 0a 20  r list] 0 5] {. 
0580: 20 20 20 6d 6b 73 65 6e 73 6f 72 20 24 73 0a 7d     mksensor $s.}
0590: 0a 77 61 74 63 68 64 6f 67 0a                    .watchdog.