OSDN Git Service

* public snapshot of sid simulator
[pf3gnuchains/pf3gnuchains3x.git] / sid / demos / voice-pager / voice-pager.tcl
1 option add *font {Helvetica 10 bold}
2
3 wm title . {Cygnus Voice Pager $Revision$}
4
5 if {0} {
6     # not needed - just bind to the <Destroy> event.
7     frame .mbar -relief raised -bd 2
8     pack .mbar -before .screen -side top -fill x
9     menubutton .mbar.file -text File -underline 0 -menu .mbar.file.menu
10     #menubutton .mbar.help -text Help -underline 0 -menu .mbar.help.menu
11     pack .mbar.file -side left
12     #pack .mbar.help -side right
13     menu .mbar.file.menu
14     .mbar.file.menu add command -label Quit -command "done"
15 }
16
17 set this [sid::component::this]
18
19 # driven if "UP" button pressed and released. config name is "up-pin"
20 set up_pin 0
21
22 # driven if "DN" button pressed and released. config name is "down-pin"
23 set down_pin 0
24
25 # driven if "REC" button pressed. config name is "rec-pin"
26 set record_pin 0
27
28 # driven if "PLAY" button pressed and released. config name is "play-pin"
29 set play_pin 0
30
31 # driven if "DEL" button pressed and released. config name is "del-pin"
32 set delete_pin 0
33
34 # driven if "Quit" menu item is selected. config name is "done-pin"
35 set done_pin 0
36
37 # driven if "Stop" Button is pressed.
38 set stop_pin 0
39
40 # driven whenever any button is pressed. config name is "ack-pin"
41 set ack_pin 0
42
43 proc find_pin {name} {
44     global up_pin
45     global down_pin
46     global record_pin
47     global play_pin
48     global done_pin
49     global stop_pin
50     global ack_pin
51
52     if {$name == "up-pin" } { return $up_pin }
53     if {$name == "down-pin" } { return $down_pin }
54     if {$name == "rec-pin" } { return $record_pin }
55     if {$name == "play-pin" } { return $play_pin }
56     if {$name == "del-pin" } { return $delete_pin }
57     if {$name == "done-pin" } { return $done_pin }
58     if {$name == "stop-pin" } { return $stop_pin }
59     if {$name == "ack-pin" } { return $ack_pin }
60     return [lcd::find_pin $name]
61 }
62
63 proc connect_pin {name pin} {
64     if { $name == "up-pin" } {
65         global up_pin
66         set up_pin $pin
67         return "ok"
68     }
69     if { $name == "down-pin" } {
70         global down_pin
71         set down_pin $pin
72         return "ok"
73     }
74     if { $name == "rec-pin" } {
75         global record_pin
76         set record_pin $pin
77         return "ok"
78     }
79     if { $name == "play-pin" } {
80         global play_pin
81         set play_pin $pin
82         return "ok"
83     }
84     if { $name == "del-pin" } {
85         global delete_pin
86         set delete_pin $pin
87         return "ok"
88     }
89     if { $name == "done-pin" } {
90         global done_pin
91         set done_pin $pin
92         return "ok"
93     }
94     if { $name == "stop-pin" } {
95         global stop_pin
96         set stop_pin $pin
97         return "ok"
98     }
99     if { $name == "ack-pin" } {
100         global ack_pin
101         set ack_pin $pin
102         return "ok"
103     }
104     return "not_found"
105 }
106      
107 proc up_button dr_val {
108     global up_pin
109     global ack_pin
110     sid::pin::driven_h4 $up_pin $dr_val
111     sid::pin::driven_h4 $ack_pin 0
112     sid::pin::driven_h4 $ack_pin 1
113 }
114
115 proc down_button dr_val {
116     global down_pin
117     global ack_pin
118     sid::pin::driven_h4 $down_pin $dr_val
119     sid::pin::driven_h4 $ack_pin 0
120     sid::pin::driven_h4 $ack_pin 1
121 }
122
123 proc record_button dr_val {
124     global record_pin
125     global ack_pin
126     sid::pin::driven_h4 $record_pin $dr_val
127     sid::pin::driven_h4 $ack_pin 0
128     sid::pin::driven_h4 $ack_pin 1
129 }    
130
131 proc play_button dr_val {
132     global play_pin
133     global ack_pin
134     sid::pin::driven_h4 $play_pin $dr_val
135     sid::pin::driven_h4 $ack_pin 0
136     sid::pin::driven_h4 $ack_pin 1
137 }
138
139 proc delete_button dr_val {
140     global delete_pin
141     global ack_pin
142     sid::pin::driven_h4 $delete_pin $dr_val
143     sid::pin::driven_h4 $ack_pin 0
144     sid::pin::driven_h4 $ack_pin 1
145 }
146
147 proc stop_button dr_val {
148     global stop_pin
149     global ack_pin
150     sid::pin::driven_h4 $stop_pin $dr_val
151     sid::pin::driven_h4 $ack_pin 0
152     sid::pin::driven_h4 $ack_pin 1
153 }
154
155 proc done {} {
156     global done_pin
157     global ack_pin
158     sid::pin::driven_h4 $done_pin 1
159     sid::pin::driven_h4 $ack_pin 0
160 }
161
162 proc attribute_names {} {
163     return [lcd::attribute_names]
164 }
165
166 proc set_attribute_value {attr value} {
167     return [lcd::set_attribute_value $attr $value]
168 }
169      
170 proc attribute_value {attr} {
171     return [lcd::attribute_value $attr]
172 }
173
174 proc driven_h4 {pin value} {
175         lcd::driven_h4 $pin $value
176 }
177
178 proc driven {pin} {
179     lcd::driven $pin 
180 }
181
182
183 frame .control -relief groove -borderwidth 4
184
185 pack .control -side bottom -fill x
186 button .control.up -bitmap @bp1.bit
187 button .control.down -bitmap @bp2.bit
188 button .control.rec -bitmap @record.bit -fg red
189 button .control.play -bitmap @play.bit
190 button .control.del -bitmap @bp3.bit
191 button .control.stop -bitmap @stop.bit
192
193 bind .control.up <ButtonPress>   {up_button 1}
194 bind .control.up <ButtonRelease> {up_button 0}
195 bind .control.down <ButtonPress>   {down_button 1}
196 bind .control.down <ButtonRelease> {down_button 0}
197 bind .control.rec <ButtonPress>   {record_button 1}
198 bind .control.rec <ButtonRelease> {record_button 0}
199 bind .control.play <ButtonPress> {play_button 1}
200 bind .control.play <ButtonRelease> {play_button 0}
201 bind .control.del <ButtonPress> {delete_button 1}
202 bind .control.del <ButtonRelease> {delete_button 0}
203 bind .control.stop <ButtonPress> {stop_button 1}
204 bind .control.stop <ButtonRelease> {stop_button 0}
205
206 pack .control.up .control.down -side left -ipadx 3m -ipady 1m
207 pack .control.rec .control.play .control.stop .control.del -side right\
208     -ipadx 3m -ipady 1m
209
210 bind . <Destroy> {done}
211
212 update