Sha256: aa5ff474cff173af8e7adad80cab56d843fb05d3457a5f812488ca859b2d00a4
Contents?: true
Size: 1.5 KB
Versions: 1
Compression:
Stored size: 1.5 KB
Contents
module Denko module OneWire class Bus include Behaviors::SinglePin include Behaviors::BusControllerAddressed include Behaviors::Reader include BusEnumeration include Constants attr_reader :parasite_power def after_initialize(options = {}) super(options) read_power_supply end def read_power_supply mutex.synchronize do # Without driving low first, results are inconsistent. board.set_pin_mode(self.pin, :output) board.digital_write(self.pin, board.low) sleep 0.1 reset write(SKIP_ROM, READ_POWER_SUPPLY) # Only LSBIT matters, but we can only read whole bytes. byte = read(1) @parasite_power = (byte[0] == 0) ? true : false end end def device_present mutex.synchronize do byte = read_using -> { reset(1) } (byte == 0) ? true : false end end alias :device_present? :device_present def reset(get_presence=0) board.one_wire_reset(pin, get_presence) end def _read(num_bytes) board.one_wire_read(pin, num_bytes) end def write(*bytes) bytes.flatten! pp = parasite_power && [CONVERT_T, COPY_SCRATCH].include?(bytes.last) board.one_wire_write(pin, pp, bytes) end def pre_callback_filter(bytes) bytes = bytes.split(",").map(&:to_i) bytes.length > 1 ? bytes : bytes[0] end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
denko-0.13.0 | lib/denko/one_wire/bus.rb |