class PiDriver::Device::MCP23017::Register
Attributes
address[R]
byte[R]
Public Class Methods
new(options)
click to toggle source
# File lib/pi_driver/device/mcp23017/register.rb, line 12 def initialize(options) @argument_helper = Utils::ArgumentHelper.new prefix: 'MCP23017::Register' @register = options[:register] @port = options[:port] options[:bank] = Utils::State::LOW @address = RegisterHelper.address options @byte = Port.default options mirror_bits_from_byte end
Private Class Methods
bit_accessors()
click to toggle source
# File lib/pi_driver/device/mcp23017/register.rb, line 36 def self.bit_accessors Utils::Byte::NUM_BITS_PER_BYTE.times do |bit_number| string = "bit#{bit_number}" getter_symbol = string.to_sym setter_symbol = "#{string}=".to_sym getter_instance = "@#{getter_symbol}" define_method getter_symbol do instance_variable_get getter_instance end define_method setter_symbol do |value| @argument_helper.check(:register_bit, value, Utils::State::VALID_STATES) instance_variable_set(getter_instance, value) mirror_byte_from_bits instance_variable_get getter_instance end end end
mirror_bit_accessors(prefix_symbol)
click to toggle source
# File lib/pi_driver/device/mcp23017/register.rb, line 61 def self.mirror_bit_accessors(prefix_symbol) Utils::Byte::NUM_BITS_PER_BYTE.times do |bit_number| bit_string = "bit#{bit_number}" new_string = "#{prefix_symbol}#{bit_number}" bit_getter_symbol = bit_string.to_sym bit_setter_symbol = "#{bit_string}=".to_sym new_getter_symbol = new_string.to_sym new_setter_symbol = "#{new_string}=".to_sym alias_method new_getter_symbol, bit_getter_symbol alias_method new_setter_symbol, bit_setter_symbol end end
Public Instance Methods
byte=(value)
click to toggle source
# File lib/pi_driver/device/mcp23017/register.rb, line 25 def byte=(value) @argument_helper.check(:register_byte, value, Utils::Byte::VALID_BYTES) @byte = value mirror_bits_from_byte end
mirror_bits_from_byte()
click to toggle source
# File lib/pi_driver/device/mcp23017/register.rb, line 79 def mirror_bits_from_byte byte_bits = Utils::Byte.byte_to_bits(@byte) @bit0 = byte_bits.pop @bit1 = byte_bits.pop @bit2 = byte_bits.pop @bit3 = byte_bits.pop @bit4 = byte_bits.pop @bit5 = byte_bits.pop @bit6 = byte_bits.pop @bit7 = byte_bits.pop end
mirror_byte_from_bits()
click to toggle source
# File lib/pi_driver/device/mcp23017/register.rb, line 92 def mirror_byte_from_bits @byte = Utils::Byte.bits_to_byte [@bit7, @bit6, @bit5, @bit4, @bit3, @bit2, @bit1, @bit0] end
update_address(bank)
click to toggle source
# File lib/pi_driver/device/mcp23017/register.rb, line 31 def update_address(bank) options = { register: @register, port: @port, bank: bank } @address = RegisterHelper.address options end