# Front end for simple OOK based remote controls, such as KAKU and FS20. # # $Id: ookRemote.tcl 4877 2010-03-09 20:04:40Z jcw $ package require Tk proc setup {} { variable w .ookRemote toplevel $w wm title $w "OOK Remote" wm geometry $w +10+310 wm resizable $w 0 0 eval [Config get ookRemote/buttons] } proc FS20 {house addr desc} { AddDevice [namespace which DoFS20] $house $addr $desc 17 } proc DoFS20 {h a c} { set conn [Serial byName [Config get ookRemote/device]] if {$conn ne ""} { Log FS20 {hc $h dev $a cmd $c} $conn send "[expr {$h>>8}],[expr {$h&0xFF}],$a,$c f" } } proc KAKU {house addr desc} { AddDevice [namespace which DoKAKU] $house $addr $desc 1 } proc DoKAKU {h a c} { set conn [Serial byName [Config get ookRemote/device]] if {$conn ne ""} { Log KAKU {hc $h dev $a cmd $c} $conn send "[expr {[scan $h %c] & 0x0F}],$a,$c k" } } proc CTX15 {house addr desc} { AddDevice [namespace which DoCTX15] $house $addr $desc 1 } proc DoCTX15 {h a c} { set conn [Serial byName [Config get ookRemote/deviceX10]] if {$conn ne ""} { Log CTX15 {hc $h dev $a cmd $c} $conn send $h[format %02d $a] $h[expr {$c ? "ON" : "OFF"}] } } proc AddDevice {handler house addr desc on} { variable w variable seq incr seq grid [label $w.l$seq -text $desc] \ [button $w.on$seq -text On -command [list $handler $house $addr $on]] \ [button $w.off$seq -text Off -command [list $handler $house $addr 0]] }