-
Notifications
You must be signed in to change notification settings - Fork 2
/
radio-sip
executable file
·104 lines (79 loc) · 2.86 KB
/
radio-sip
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/usr/bin/env ruby
#################################################################################
# The MIT License (MIT) #
# #
# Copyright (c) 2014, Aaron Herting 'qwertos' <[email protected]> #
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy #
# of this software and associated documentation files (the "Software"), to deal #
# in the Software without restriction, including without limitation the rights #
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #
# copies of the Software, and to permit persons to whom the Software is #
# furnished to do so, subject to the following conditions: #
# #
# The above copyright notice and this permission notice shall be included in #
# all copies or substantial portions of the Software. #
# #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #
# THE SOFTWARE. #
#################################################################################
require 'urix'
$DTMF_OUT_FILE_LOC = '/tmp/dtmf.out'
$dtmf_file = nil
$uri = nil
trap 'SIGINT' do
puts "Closing down..."
close_down
exit!
end
def open_dtmf_file
until File.exists?( $DTMF_OUT_FILE_LOC ) do
puts "DTMF out file: #{$DTMF_OUT_FILE_LOC}"
puts "does not exist. Looking again in "
puts "10 seconds."
sleep 10
end
puts "Opening file"
return File.open( $DTMF_OUT_FILE_LOC, 'r' )
end
def open_uri
puts "Opening URI"
uri = URIx::URIx.new
puts "Claiming URI"
uri.claim_interface
return uri
end
def close_down
puts "Closing dtmf.out"
$dtmf_file.close
puts "Closing URI"
$uri.close_interface
end
def process_dtmf file, uri
begin
puts "Watching for DTMF"
loop do
signal = file.readchar
case signal
when '1'
uri.set_ptt :high
when '2'
uri.set_ptt :low
when 'F'
uri.set_ptt :low
else
end
end
rescue Exception
puts "Exception Raised"
close_down
end
end
$dtmf_file = open_dtmf_file
$uri = open_uri
process_dtmf $dtmf_file, $uri