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