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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2c0c54f0840128ef6f2daf0a9282379120df398a
4
- data.tar.gz: 5914525d2c73291055102a1957675aad40e5ccc9
3
+ metadata.gz: 3304f4393880fafdec23cfdd208d64b9d3489dab
4
+ data.tar.gz: 1d8b6680ecbc99aa00948f21c4faf0cd846260a8
5
5
  SHA512:
6
- metadata.gz: 0bd816967a3134bdee5fb2294ea1f94bd489ce0e7d5d571dd839e376b34767fc857eec8bc25cb7ec786f7a9eefee875716ae39ee545aa52ef9ac30fa5d80b221
7
- data.tar.gz: 1ae325f37e38824b9befabffc9f3ecae3ec0d5729fc51419d1a884227f0fbf31557a8016750e5f6afaa6276e069d3e79089924173c98e9ef0f9c9679bf2c08b5
6
+ metadata.gz: 9719e30fdc4f3959ceb157a8b92dc48084f7ce888538c8c3f7ed97637be069e5e833e4b050a61342ebacc4e50a61b84c597a8fde45107a82cafb849db62cbaee
7
+ data.tar.gz: 9e43fc6d51d526927d37e323496252dcde644defdd8ef3b7bc208f720e83048075fbfbe5c6b847b8fb59039adacf9d2554ab0fef455e5502e25191ad7fb4aee5
data/bin/iremocon CHANGED
@@ -52,6 +52,7 @@ def main
52
52
 
53
53
  opt.parse!(ARGV)
54
54
 
55
+ host = IRemoconControl::IRemocon.find[0] if(host.nil? or host == "find")
55
56
  ir = IRemoconControl::IRemocon.new(host, port, logger:STDERR)
56
57
 
57
58
  # 引数の数チェック
@@ -1,3 +1,3 @@
1
1
  module IRemoconControl
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -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)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iremocon_control
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - YutaTanaka