class Artoo::Adaptors::Wandboard

Connect to a wandboard device @see device documentation for more information

Constants

I2C0
I2C1
PINS

Attributes

camera[R]
device[R]
i2c1[R]
i2c2[R]
lvds[R]
pins[R]
spdif[R]
spi[R]
ttl[R]
uart[R]

Public Class Methods

gpio(bank, number) click to toggle source
# File lib/artoo/adaptors/wandboard.rb, line 14
def self.gpio(bank, number)
  (bank - 1) * 32 + number
end

Public Instance Methods

connect() click to toggle source

Creates a connection with device @return [Boolean]

Calls superclass method
# File lib/artoo/adaptors/wandboard.rb, line 32
def connect
  @pins ||= {}
  super
end
digital_read(pin) click to toggle source
# File lib/artoo/adaptors/wandboard.rb, line 62
def digital_read(pin)
  pin = wandboard_pin(pin, 'r')
  pin.digital_read
end
digital_write(pin, val) click to toggle source
# File lib/artoo/adaptors/wandboard.rb, line 57
def digital_write(pin, val)
  pin = wandboard_pin(pin, 'w')
  pin.digital_write(val)
end
disconnect() click to toggle source

Closes connection with device @return [Boolean]

Calls superclass method
# File lib/artoo/adaptors/wandboard.rb, line 39
def disconnect
  @pins.each { |n, p| p.close } if @pins
  @pins = {}
  super
end
i2c1_read(len) click to toggle source
# File lib/artoo/adaptors/wandboard.rb, line 76
def i2c1_read(len)
  raise 'Not started' unless @i2c1
  @i2c1.read(len)
end
i2c1_start(address) click to toggle source
# File lib/artoo/adaptors/wandboard.rb, line 67
def i2c1_start(address)
  @i2c1 = I2c.new(I2C0, address)
end
i2c1_write(*data) click to toggle source
# File lib/artoo/adaptors/wandboard.rb, line 71
def i2c1_write(*data)
  raise 'Not started' unless @i2c1
  @i2c1.write(*data)
end
i2c2_read(len) click to toggle source
# File lib/artoo/adaptors/wandboard.rb, line 90
def i2c2_read(len)
  raise 'Not started' unless @i2c2
  @i2c2.read(len)
end
i2c2_start(address) click to toggle source
# File lib/artoo/adaptors/wandboard.rb, line 81
def i2c2_start(address)
  @i2c2 = I2c.new(I2C1, address)
end
i2c2_write(*data) click to toggle source
# File lib/artoo/adaptors/wandboard.rb, line 85
def i2c2_write(*data)
  raise 'Not started' unless @i2c2
  @i2c2.write(*data)
end
method_missing(method_name, *arguments, &block) click to toggle source

Uses method missing to call device actions @see device documentation

# File lib/artoo/adaptors/wandboard.rb, line 97
def method_missing(method_name, *arguments, &block)
  device.send(method_name, *arguments, &block)
end
name() click to toggle source

Name of device @return [String]

# File lib/artoo/adaptors/wandboard.rb, line 47
def name
  'wandboard'
end
version() click to toggle source

Version of device @return [String]

# File lib/artoo/adaptors/wandboard.rb, line 53
def version
  Artoo::Wandboard::VERSION
end

Private Instance Methods

translate_pin(pin) click to toggle source
# File lib/artoo/adaptors/wandboard.rb, line 103
def translate_pin(pin)
  PINS.fetch(pin)
rescue KeyError
  raise 'Not a valid pin'
end
wandboard_pin(pin, mode) click to toggle source
# File lib/artoo/adaptors/wandboard.rb, line 109
def wandboard_pin(pin, mode)
  raise 'Not connected' unless connected?
  pin = translate_pin(pin)
  @pins[pin] = DigitalPin.new(pin, mode) if @pins[pin].nil? or @pins[pin].mode != mode
  @pins[pin]
end