iremocon_control 0.1.2 → 0.2.0
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.
- checksums.yaml +4 -4
- data/bin/iremocon +1 -0
- data/lib/iremocon_control/version.rb +1 -1
- data/lib/iremocon_control.rb +36 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3304f4393880fafdec23cfdd208d64b9d3489dab
|
4
|
+
data.tar.gz: 1d8b6680ecbc99aa00948f21c4faf0cd846260a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9719e30fdc4f3959ceb157a8b92dc48084f7ce888538c8c3f7ed97637be069e5e833e4b050a61342ebacc4e50a61b84c597a8fde45107a82cafb849db62cbaee
|
7
|
+
data.tar.gz: 9e43fc6d51d526927d37e323496252dcde644defdd8ef3b7bc208f720e83048075fbfbe5c6b847b8fb59039adacf9d2554ab0fef455e5502e25191ad7fb4aee5
|
data/bin/iremocon
CHANGED
data/lib/iremocon_control.rb
CHANGED
@@ -143,6 +143,42 @@ module IRemoconControl
|
|
143
143
|
reply[0]
|
144
144
|
end
|
145
145
|
|
146
|
+
#
|
147
|
+
# ネットワーク上からiRemoconを見つける
|
148
|
+
# @param num_iremocon [Integer] ネットワーク上のiRemoconの数
|
149
|
+
# @param timeout [Integer] 探索のタイムアウト
|
150
|
+
# @return [Array<String>] iRemoconのIPアドレス文字列の配列
|
151
|
+
#
|
152
|
+
def self.find(num_iremocon = 1, timeout = 5)
|
153
|
+
sock = UDPSocket.open()
|
154
|
+
sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, 1)
|
155
|
+
sock.bind("0.0.0.0", 0)
|
156
|
+
|
157
|
+
# メッセージをブロードキャスト
|
158
|
+
sock.send("FIND", 0, "<broadcast>", 1460)
|
159
|
+
|
160
|
+
ips = []
|
161
|
+
begin
|
162
|
+
# タイムアウト設定
|
163
|
+
timeout(timeout) do
|
164
|
+
# タイムアウトまで繰り返す
|
165
|
+
while true
|
166
|
+
# 受信待ち
|
167
|
+
mesg, sockaddr = sock.recvfrom(512)
|
168
|
+
# iRemoconが見つかったら登録
|
169
|
+
ips << sockaddr[3] if sockaddr and sockaddr[3]
|
170
|
+
# num_iremocon個見つかったら修了
|
171
|
+
break if ips.uniq!.size == num_iremocon
|
172
|
+
end
|
173
|
+
end
|
174
|
+
rescue
|
175
|
+
# タイムアウトまでnum_iremocon個見つからなかった場合
|
176
|
+
nil
|
177
|
+
end
|
178
|
+
|
179
|
+
ips
|
180
|
+
end
|
181
|
+
|
146
182
|
private
|
147
183
|
|
148
184
|
def send_cmd(*cmds)
|