class Modbus::BitRegister

Public Class Methods

new(addr) click to toggle source
Calls superclass method Modbus::Register::new
# File lib/modbus/register/bit_register.rb, line 10
def initialize(addr)
  super
  @bits = {}
end

Public Instance Methods

update(bit, value) click to toggle source
# File lib/modbus/register/bit_register.rb, line 16
def update(bit, value)
  fail ArgumentError unless (0..15).include? bit
  fail ArgumentError unless [true, false].include? value
  @bits[bit] = value
end
value() click to toggle source
# File lib/modbus/register/bit_register.rb, line 23
def value
  result = 0

  @bits.each do |bit, bit_value|
    value = bit_value ? 1 : 0
    result |= (value << bit)
  end

  result
end
write(value) click to toggle source
# File lib/modbus/register/bit_register.rb, line 35
def write(value)
  return unless @handler

  values = @bits.keys.map do |bit|
    bit_value = value[bit] == 1
    {:addr => [@addr, bit].join('.'), :value => bit_value}
  end

  @handler.write_values values
end