one_wire 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +1 -1
- data/lib/one_wire/response.rb +7 -6
- data/lib/one_wire/transaction.rb +12 -0
- data/one_wire.gemspec +2 -2
- metadata +2 -2
data/VERSION.yml
CHANGED
data/lib/one_wire/response.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
module OneWire
|
2
2
|
class Response
|
3
3
|
def initialize(socket)
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
begin
|
5
|
+
header = socket.read(24)
|
6
|
+
raise ShortRead unless header && header.size == 24
|
7
|
+
version, payload_size, @return_value, @flags, data_size, offset = header.unpack('NNNNNN')
|
8
|
+
raise SystemCallError, 2**32 - @return_value, "OWServer" if @return_value > 2**31
|
9
|
+
end while payload_size > 2**31 # negative payload size indicates a server 'keep-alive' ping
|
10
|
+
raise BadRead if data_size > 2**31
|
9
11
|
@data = socket.read(payload_size)[0...data_size] unless payload_size.zero?
|
10
|
-
# @data = payload_size.zero? ? "" : socket.read(payload_size)[0...data_size]
|
11
12
|
end
|
12
13
|
|
13
14
|
attr_reader :data, :return_value, :flags
|
data/lib/one_wire/transaction.rb
CHANGED
@@ -33,6 +33,18 @@ module OneWire
|
|
33
33
|
def write(path, value, options = {})
|
34
34
|
new(:write, path, options.merge(:value => value))
|
35
35
|
end
|
36
|
+
|
37
|
+
def ping(options = {})
|
38
|
+
host = options[:host] || OneWire::Config.host
|
39
|
+
port = options[:port] || OneWire::Config.port
|
40
|
+
socket = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
|
41
|
+
socket.connect(Socket.pack_sockaddr_in(port, host))
|
42
|
+
return true
|
43
|
+
rescue SystemCallError
|
44
|
+
return false
|
45
|
+
ensure
|
46
|
+
socket.close if socket && !socket.closed?
|
47
|
+
end
|
36
48
|
end
|
37
49
|
end
|
38
50
|
end
|
data/one_wire.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{one_wire}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Matthew Hollingworth"]
|
12
|
-
s.date = %q{2009-10-
|
12
|
+
s.date = %q{2009-10-14}
|
13
13
|
s.email = %q{mdholling@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: one_wire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Hollingworth
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-14 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|