module GPIO

Public Class Methods

access(hash, &block) click to toggle source

main entry for the DSL

# File lib/ruby-gpio.rb, line 74
def access(hash, &block)
  @pins = {} # a hash of available pins
  # set up pins
  hash.each do |k, v|
    @pins[k] = Pin.new(k.to_s, v)
    export v
  end
  begin
    instance_eval &block        
  ensure        
    # make sure all pins are unexported before we end the program
    hash.each do |k, v|
      unexport v
    end
  end
end
export(gpio_num) click to toggle source
# File lib/ruby-gpio.rb, line 98
def export(gpio_num)
  write "export", gpio_num
end
method_missing(name, *args, &block) click to toggle source

method missing used to return the pin named earlier in the hash parameter to access

# File lib/ruby-gpio.rb, line 92
def method_missing(name, *args, &block)
  if @pins.keys.include?(name)
    return @pins[name]
  end
end
read(gpio_num) click to toggle source
# File lib/ruby-gpio.rb, line 106
def read(gpio_num)
  File.read("/sys/class/gpio/gpio#{gpio_num}/value").to_i
end
unexport(gpio_num) click to toggle source
# File lib/ruby-gpio.rb, line 102
def unexport(gpio_num)
  write "unexport", gpio_num
end
write(command, value) click to toggle source
# File lib/ruby-gpio.rb, line 110
def write(command, value)
  File.open("/sys/class/gpio/#{command}", "w") do |f|
    f.write value
  end
end