class Pin

Attributes

input_pu_value[RW]
input_value[RW]
mode[RW]
mode_URI[RW]
output_value[RW]
pin[RW]
status_URI[RW]

Public Class Methods

new(pin_num) click to toggle source
# File lib/pcduino/pin.rb, line 5
def initialize(pin_num)
  @mode_URI = "/sys/devices/virtual/misc/gpio/mode/"
  @status_URI = "/sys/devices/virtual/misc/gpio/pin/"
  @pin = pin_num
  @mode_URI = @mode_URI << "gpio" << @pin.to_s
  @status_URI = @status_URI << "gpio" << @pin.to_s
  @input_value = 0
  @input_value_pu = 8
  @output_value = 1
  @state = 0;

  if @pin < 0 or @pin > 17
    raise "inaccessable pin specified"
  end
end

Public Instance Methods

check_connection(path) click to toggle source
# File lib/pcduino/pin.rb, line 21
def check_connection(path)
  if File.exist?(path) 
    true
  else
    raise "Error file:" + path +  " doesnt exist"
  end
end
read() click to toggle source
# File lib/pcduino/pin.rb, line 92
def read
    set_as_input
    read_from_file(@status_URI)
end
read_from_file(file) click to toggle source
# File lib/pcduino/pin.rb, line 79
def read_from_file(file)
  begin
    file = File.open(file)
    line = file.gets
  rescue IOError => e
    raise "error reading from file: " + file
  ensure
    file.close unless file == nil
  end
  line.to_i

end
set_as_input(file = @mode_URI) click to toggle source
# File lib/pcduino/pin.rb, line 38
def set_as_input(file = @mode_URI)
  if write_to_file(@input_value,file)
    @mode=@input_value
    self
  else
    raise "Error: couldnt write input_value to file"
  end
end
set_as_input_pu() click to toggle source
# File lib/pcduino/pin.rb, line 47
def set_as_input_pu
  if write_to_file(@input_value_pu,@mode_URI)
    @mode=@input_pu_value
    self
  else
    raise "Error: couldnt write input_value to file"
  end
end
set_as_output() click to toggle source
# File lib/pcduino/pin.rb, line 29
def set_as_output
  if write_to_file(@output_value,@mode_URI)
    @mode=@output_value
    self
  else
    raise "Error: couldnt write output_value to file"
  end
end
toggle() click to toggle source
# File lib/pcduino/pin.rb, line 97
def toggle
  if @state == 0
    @state = 1
  else
    @state = 0
  end
  write @state
  
end
write(value) click to toggle source
# File lib/pcduino/pin.rb, line 56
def write(value)
  if value.is_a? Integer and value == 0 or value == 1
    if @mode==@input_pu_value
      set_as_output
    end
    write_to_file(value.to_s,@status_URI)
  else
    raise "invalid value passed"
  end
end
write_to_file(value,path) click to toggle source
# File lib/pcduino/pin.rb, line 67
def write_to_file (value,path)
  begin
    file = File.open(path, "w")
    file.write(value) 
  rescue IOError => e
    raise "error writing to file"
  ensure
    file.close unless file == nil
  end
  true
end