class Onewire::Connection

Constants

PING

Public Class Methods

new(host = 'localhost', port = 4304) click to toggle source
# File lib/onewire/connection.rb, line 8
def initialize(host = 'localhost', port = 4304)
  @socket = TCPSocket.new host, port
end

Public Instance Methods

close() click to toggle source
# File lib/onewire/connection.rb, line 12
def close
  @socket.close
end
flags() click to toggle source
# File lib/onewire/connection.rb, line 40
def flags
  258 # TODO
end
read() click to toggle source
# File lib/onewire/connection.rb, line 23
def read
  _, payload_size, _, _, size, offset = read_header

  if payload_size > 0
    @socket.read(payload_size)[offset..offset+size-1] # Read response payload
  else
    nil
  end
end
read_header() click to toggle source
# File lib/onewire/connection.rb, line 33
def read_header
  loop do
    header = @socket.read(24).unpack('NNNNNN') # Read and unpack response header (see http://owfs.org/index.php?page=owserver-protocol)
    return header if header[1] != PING # Return when non-ping response read
  end
end
version() click to toggle source
# File lib/onewire/connection.rb, line 44
def version
  0
end
write(type, payload, size = 0, offset = 0) click to toggle source
# File lib/onewire/connection.rb, line 16
def write(type, payload, size = 0, offset = 0)
  request_fields = [version, payload.size, type, flags, size, offset, payload] # Prepare request structure (see http://owfs.org/index.php?page=owserver-protocol)
  request_data = request_fields.pack('NNNNNNA*') # Pack it - first six parts are integers, payload is string

  @socket.write request_data # Send it
end