class BeagleBoard::AM335x
Public Class Methods
new()
click to toggle source
# File lib/beagleboard/am335x.rb, line 8 def initialize @plateform = case FFI::Platform::OS when 'linux' then 'Linux' when 'freebsd' then 'FreeBSD' end end
Public Instance Methods
method_missing(name, *args)
click to toggle source
Calls superclass method
# File lib/beagleboard/am335x.rb, line 21 def method_missing(name, *args) if valid_ain_name(name) attach_object(name, ain_factory(name)) elsif valid_gpio_name(name) attach_object(name, gpio_factory(name)) else super end end
respond_to_missing?(name, *args)
click to toggle source
Calls superclass method
# File lib/beagleboard/am335x.rb, line 15 def respond_to_missing?(name, *args) return true if valid_ain_name(name) return true if valid_gpio_name(name) super end
Private Instance Methods
ain_factory(name)
click to toggle source
# File lib/beagleboard/am335x.rb, line 49 def ain_factory(name) ain = valid_ain_name(name) Object.const_get("BeagleBoard::#{@plateform}::Adc").new(ain) end
attach_object(name, obj)
click to toggle source
# File lib/beagleboard/am335x.rb, line 33 def attach_object(name, obj) instance_variable_set("@#{name}", obj) define_singleton_method(name) do instance_variable_get("@#{name}") end obj end
gpio_factory(name)
click to toggle source
# File lib/beagleboard/am335x.rb, line 62 def gpio_factory(name) bank, gpio = valid_gpio_name(name) Object.const_get("BeagleBoard::#{@plateform}::Gpio").new(bank, gpio) end
valid_ain_name(name)
click to toggle source
# File lib/beagleboard/am335x.rb, line 43 def valid_ain_name(name) return nil unless (captures = name.to_s.match(/\Aain(\d)\z/)) return nil unless (0...7).cover?(captures[1].to_i) captures[1].to_i end
valid_gpio_name(name)
click to toggle source
# File lib/beagleboard/am335x.rb, line 55 def valid_gpio_name(name) return nil unless (captures = name.to_s.match(/\Agpio(\d)_(\d|[1-9]\d+)\z/)) return nil unless (0..3).cover?(captures[1].to_i) return nil unless (0...32).cover?(captures[2].to_i) [captures[1].to_i, captures[2].to_i] end