Sha256: ed3a682f2167c3b299e261c2cc781a64511128e84da453bb535036d0302734af

Contents?: true

Size: 1.51 KB

Versions: 6

Compression:

Stored size: 1.51 KB

Contents

require 'artoo/drivers/wiidriver'

module Artoo
  module Drivers
    # Wiichuck driver behaviors for i2c
    class Wiichuck < Wiidriver

      # Update button and joystick values
      # @param [Object] value
      def update(value)
        begin
          super

          adjust_origins
          update_buttons
          update_joystick

        rescue Exception => e
          Logger.error "wiichuck update exception!"
          Logger.error e.message
          Logger.error e.backtrace.inspect
        end
      end

      # Adjust x, y origin values
      def adjust_origins
        set_joystick_default_value(:sy_origin, data[:sy])
        set_joystick_default_value(:sx_origin, data[:sx])
      end

      # Publishes events for c and z buttons
      def update_buttons
        publish(event_topic_name("c_button")) if data[:c] == true
        publish(event_topic_name("z_button")) if data[:z] == true
      end

      # Publishes event for joystick
      def update_joystick
        publish(event_topic_name("joystick"), {:x => calculate_joystick_value(:sx, :sx_origin), :y => calculate_joystick_value(:sy, :sy_origin)})
      end

      private

      def get_defaults
        {
          :sy_origin => nil,
          :sx_origin => nil
        }
      end

      def parse(value)
        return {
          :sx => decode_value(value, 0),
          :sy => decode_value(value, 1),
          :z => generate_bool(decode_value(value, 5) & 0x01),
          :c => generate_bool(decode_value(value, 5) & 0x02)
        }
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
artoo-i2c-0.5.0 lib/artoo/drivers/wiichuck.rb
artoo-i2c-0.4.0 lib/artoo/drivers/wiichuck.rb
artoo-i2c-0.3.0 lib/artoo/drivers/wiichuck.rb
artoo-i2c-0.2.1 lib/artoo/drivers/wiichuck.rb
artoo-i2c-0.2.0 lib/artoo/drivers/wiichuck.rb
artoo-i2c-0.1.0 lib/artoo/drivers/wiichuck.rb