module I2C::Drivers
Public Class Methods
define_mcp230xx_chip(name, parameters)
click to toggle source
Defines a class for a chip implementation.
@param name Class name
# File lib/i2c/drivers/mcp230xx.rb, line 212 def self.define_mcp230xx_chip(name, parameters) raise ArgumentError, "Expecting options hash." unless parameters.kind_of? Hash [ [ :pin_count, Integer ], [ :port_count, Integer ], [ :iodir, Array ], [ :gpio, Array ] ].each do |expected_key| raise ArgumentError, "Missing option #{expected_key[0]}" unless parameters.has_key? expected_key[0] raise ArgumentError, "Option #{expected_key[0]} expected to be a #{expected_key[1]}" unless parameters[expected_key[0]].kind_of? expected_key[1] end chip_class = self.const_set(name.to_sym, Class.new) chip_class.instance_eval do include MCP230xx parameters.each do |method_name, return_value| #puts "Defining #{name}##{method_name.to_sym}" define_method method_name.to_sym do return_value end end define_method :max_pin_no do parameters[:pin_count] - 1 end define_method :max_port_no do parameters[:port_count] - 1 end end chip_class end