class Artoo::Drivers::Wiidriver

Wii-based controller shared driver behaviors for i2c

Attributes

data[R]
joystick[R]

Public Class Methods

new(params={}) click to toggle source

Create new Wiidriver

Calls superclass method
# File lib/artoo/drivers/wiidriver.rb, line 12
def initialize(params={})
  @joystick = get_defaults
  @data = {}
  super
end

Public Instance Methods

address() click to toggle source
# File lib/artoo/drivers/wiidriver.rb, line 9
def address; 0x52; end
start_driver() click to toggle source

Starts drives and required connections

Calls superclass method
# File lib/artoo/drivers/wiidriver.rb, line 19
def start_driver
  begin
    connection.i2c_start(address)

    every(interval) do
      connection.i2c_write(0x40, 0x00)
      connection.i2c_write(0x00)
      new_value = connection.i2c_read(6)
      
      update(new_value) if !new_value.nil?
    end

    super
  rescue Exception => e
    Logger.error "Error starting wii driver!"
    Logger.error e.message
    Logger.error e.backtrace.inspect
  end
end
update(value) click to toggle source

Get and update data

# File lib/artoo/drivers/wiidriver.rb, line 40
def update(value)
  if encrypted?(value)
    Logger.error "Encrypted bytes from wii device!"
    raise "Encrypted bytes from wii device!"
  end

  @data = parse(value)
end

Protected Instance Methods

calculate_joystick_value(axis, origin) click to toggle source
# File lib/artoo/drivers/wiidriver.rb, line 63
def calculate_joystick_value(axis, origin)
  data[axis] - joystick[origin]
end
decode(x) click to toggle source
# File lib/artoo/drivers/wiidriver.rb, line 71
def decode(x)
  return ( x ^ 0x17 ) + 0x17
end
decode_value(value, index) click to toggle source
# File lib/artoo/drivers/wiidriver.rb, line 75
def decode_value(value, index)
  decode(get_value(value, index))
end
encrypted?(value) click to toggle source
# File lib/artoo/drivers/wiidriver.rb, line 67
def encrypted?(value)
  [[0, 1], [2, 3], [4, 5]].all? {|a| get_value(value, a[0]) == get_value(value, a[1]) }
end
generate_bool(value) click to toggle source
# File lib/artoo/drivers/wiidriver.rb, line 83
def generate_bool(value)
  value == 0 ? true : false
end
get_defaults() click to toggle source
# File lib/artoo/drivers/wiidriver.rb, line 51
def get_defaults
  {}
end
get_value(value, index) click to toggle source
# File lib/artoo/drivers/wiidriver.rb, line 79
def get_value(value, index)
  value[index]
end
parse() click to toggle source
# File lib/artoo/drivers/wiidriver.rb, line 55
def parse
  {}
end
set_joystick_default_value(joystick_axis, default_value) click to toggle source
# File lib/artoo/drivers/wiidriver.rb, line 59
def set_joystick_default_value(joystick_axis, default_value)
  joystick[joystick_axis] = default_value if joystick[joystick_axis].nil?
end