siriproxy-samsungremote 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "siriproxy-samsungremote"
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Steve Kingsley"]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -7,7 +7,53 @@ class SiriProxy::Plugin::SamsungRemote < SiriProxy::Plugin
7
7
  @@appstring = "iphone..iapp.samsung" #W hat the iPhone app reports
8
8
  @@tvappstring = "iphone.LE40C650.iapp.samsung" # Might need changing to match your TV type
9
9
  @@remotename = "Ruby Samsung Remote" # What gets reported when it asks for permission/also shows in General->Wireless Remote Control menu
10
-
10
+
11
+ @@know_btns = [
12
+ '0',
13
+ '1',
14
+ '2',
15
+ '3',
16
+ '4',
17
+ '5',
18
+ '6',
19
+ '7',
20
+ '8',
21
+ '9',
22
+ 'UP',
23
+ 'DOWN',
24
+ 'LEFT',
25
+ 'RIGHT',
26
+ 'MENU',
27
+ 'PRECH',
28
+ 'GUIDE',
29
+ 'INFO',
30
+ 'RETURN',
31
+ 'CH_LIST',
32
+ 'EXIT',
33
+ 'ENTER',
34
+ 'SOURCE',
35
+ 'AD',
36
+ 'PLAY',
37
+ 'PAUSE',
38
+ 'MUTE',
39
+ 'PICTURE_SIZE',
40
+ 'VOLUP',
41
+ 'VOLDOWN',
42
+ 'TOOLS',
43
+ 'POWEROFF',
44
+ 'CHUP',
45
+ 'CHDOWN',
46
+ 'CONTENTS',
47
+ 'W_LINK',
48
+ 'RSS',
49
+ 'MTS',
50
+ 'CAPTION',
51
+ 'REWIND',
52
+ 'FF',
53
+ 'REC',
54
+ 'STOP',
55
+ 'TV',
56
+ ]
11
57
 
12
58
  def initialize(config = {})
13
59
 
@@ -35,14 +81,118 @@ class SiriProxy::Plugin::SamsungRemote < SiriProxy::Plugin
35
81
 
36
82
  listen_for(/test command/i) do
37
83
  say "About to test"
38
- send_command "VOLUP"
84
+ send_hanshake
85
+ send_command "MUTE"
86
+ close_socket
39
87
  say "Command sent"
40
88
  request_completed #always complete your request! Otherwise the phone will "spin" at the user!
41
89
 
42
90
  end
43
91
 
44
- def send_command(command)
45
- s = TCPSocket.open(self.tvip, self.port)
92
+ listen_for(/can you turn the sound (up|down)/i) do |dir|
93
+ send_hanshake
94
+ if dir == 'up'
95
+ command = 'VOLUP'
96
+ elsif dir == 'down'
97
+ command = 'VOLDOWN'
98
+ end
99
+ send_command command
100
+ begin
101
+ keepgoing = ask "Is that ok?"
102
+ keepgoing.strip!
103
+ if keepgoing == "No" or keepgoing == "Nope" or keepgoing == "Not yet" or keepgoing == "Keep going" or keepgoing == "That isn't good" or keepgoing == "That's not good" then
104
+ keepgoing = "1"
105
+ send_command command
106
+ elsif keepgoing == /too quiet/i or keepgoing == /too loud/i
107
+ keepgoing = "1"
108
+ command = command == "VOLUP" ? "VOLDOWN" : "VOLUP"
109
+ send_command command
110
+ else
111
+ keepgoing = "0"
112
+ say "Ok. I'll leave it there."
113
+ end
114
+ end while keepgoing == "1"
115
+
116
+ close_socket
117
+ request_completed
118
+ end
119
+
120
+
121
+ listen_for(/launch the iplayer/i) do
122
+ send_hanshake
123
+
124
+ send_command "RSS"
125
+ sleep 2
126
+ send_command "RIGHT"
127
+ sleep 1
128
+ send_command "ENTER"
129
+
130
+ close_socket
131
+ request_completed
132
+ end
133
+
134
+ listen_for(/exit the iplayer/i) do
135
+ send_hanshake
136
+
137
+ send_command "EXIT"
138
+
139
+ close_socket
140
+ request_completed
141
+ end
142
+
143
+ listen_for(/go (left|right|up|down)/i) do |dir|
144
+ posdir = ["left", "right", "up", "down"]
145
+ if posdir.include?(dir)
146
+ send_hanshake
147
+ send_command dir.upcase
148
+ close_socket
149
+ else
150
+ say "I can't go that way"
151
+ end
152
+ request_completed
153
+
154
+ end
155
+
156
+ listen_for(/can you turn the telly off please/i) do
157
+
158
+ sure = ask "Are you sure?"
159
+ sure.strip!
160
+ if sure == "Yes" or sure == "Yes please"
161
+ send_hanshake
162
+
163
+ send_command "POWEROFF"
164
+
165
+ close_socket
166
+ say "Ok, I've turned it off. You'll need to turn it on yourself if you want me to do anything else with the telly."
167
+ else
168
+ say "Ok, I'll leave it on for now then"
169
+ end
170
+
171
+ request_completed
172
+
173
+
174
+ end
175
+
176
+ listen_for(/press the (.*) button/i) { |btn| press_the(btn) }
177
+
178
+
179
+ def press_the(btn)
180
+ if @@know_btns.include?(btn.upcase)
181
+ send_hanshake
182
+ send_command btn.upcase
183
+ close_socket
184
+ say "#{btn} pressed"
185
+ request_completed #always complete your request! Otherwise the phone will "spin" at the user!
186
+ else
187
+ say "I can't find the #{btn} button right now"
188
+ ask "Try again"
189
+ request_completed #always complete your request! Otherwise the phone will "spin" at the user!
190
+ end
191
+
192
+ end
193
+
194
+ def send_hanshake
195
+ @s = TCPSocket.open(self.tvip, self.port)
46
196
 
47
197
  ipencoded = Base64.encode64(self.myip)
48
198
  macencoded = Base64.encode64(self.mymac)
@@ -50,22 +200,32 @@ class SiriProxy::Plugin::SamsungRemote < SiriProxy::Plugin
50
200
  messagepart1 = 0x64.chr + 0x00.chr + ipencoded.length.chr + 0x00.chr + ipencoded + macencoded.length.chr + 0x00.chr + macencoded + Base64.encode64(@@remotename).length.chr + 0x00.chr + Base64.encode64(@@remotename)
51
201
  part1 = 0x00.chr + @@appstring.length.chr + 0x00.chr + @@appstring + messagepart1.length.chr + 0x00.chr + messagepart1
52
202
 
53
- s.send(part1, 0)
203
+ @s.send(part1, 0)
54
204
 
55
205
  messagepart2 = 0xc8.chr + 0x00.chr
56
206
  part2 = 0x00.chr + @@appstring.length.chr + 0x00.chr + @@appstring + messagepart2.length.chr + 0x00.chr + messagepart2
57
207
 
58
- s.send(part2, 0)
208
+ @s.send(part2, 0)
209
+
210
+ end
211
+
212
+ def send_command(command)
59
213
 
60
214
  #Send remote key
61
215
  key = "KEY_" + command
62
- say "Sending #{command}"
216
+ # say "Sending #{command}"
63
217
  messagepart3 = 0x00.chr + 0x00.chr + 0x00.chr + Base64.encode64(key).length.chr + 0x00.chr + Base64.encode64(key)
64
218
  part3 = 0x00.chr + @@tvappstring.length.chr + 0x00.chr + @@tvappstring + messagepart3.length.chr + 0x00.chr + messagepart3
65
219
 
66
- s.send(part3, 0)
220
+ @s.send(part3, 0)
67
221
 
68
- s.close # Close the socket when done
222
+
69
223
  end
70
224
 
225
+ def close_socket
226
+ @s.close # Close the socket when done
227
+ end
228
+
229
+
230
+
71
231
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: siriproxy-samsungremote
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.2
5
+ version: 0.1.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Steve Kingsley
@@ -90,7 +90,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
90
  requirements:
91
91
  - - ">="
92
92
  - !ruby/object:Gem::Version
93
- hash: 4471368945284464014
93
+ hash: 2765555781884527161
94
94
  segments:
95
95
  - 0
96
96
  version: "0"