class BBB::Pins::IO::GPIO

Attributes

converted_position[R]
direction[R]
file_mode[R]
position[R]

Public Class Methods

new(direction, position) click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 9
def initialize(direction, position)
  self.direction = direction
  @position = position
  @converted_position = pin_map.gpio
  self.export
end

Public Instance Methods

direction=(direction) click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 16
def direction=(direction)
  @file_mode = direction == :input ? "r" : "w+"
  @direction = direction
end
export() click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 68
def export
  file_class.open(export_path, "w") { |f| f.write("#{ converted_position }") }
  set_mode
end
export_path() click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 56
def export_path
  gpio_path + "/export"
end
file_class() click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 77
def file_class
  File
end
gpio_path() click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 52
def gpio_path
  "/sys/class/gpio"
end
gpio_pin_dir() click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 64
def gpio_pin_dir
  "#{gpio_path}/gpio#{converted_position}"
end
io() click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 30
def io
  return @io unless @io.nil?
  value_file = gpio_pin_dir + "/value"
  @io = file_class.open(value_file, file_mode)
  @io.sync = true

  return @io
end
read() click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 43
def read
  io.rewind
  value_map.fetch(io.read.to_i)
end
set_mode() click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 21
def set_mode
  direction_file = gpio_pin_dir + "/direction"

  d = "in"  if direction == :input
  d = "out" if direction == :output

  file_class.open(direction_file, "w") {|f| f.write(d)}
end
unexport() click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 73
def unexport
  file_class.open(unexport_path, "w") { |f| f.write("#{converted_position}") }
end
unexport_path() click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 60
def unexport_path
  gpio_path + "/unexport"
end
value_map() click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 48
def value_map
  @value_map ||= {:high=>1, :low=>0, 1=>:high, 0=>:low}
end
write(value) click to toggle source
# File lib/BBB/pins/io/gpio.rb, line 39
def write(value)
  io.write(value_map[value])
end