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