Sha256: 4a8b750509f4e4aa14f2e6f29e4d264b156d75e027c74117c4b8697a4585a5bc

Contents?: true

Size: 1.61 KB

Versions: 1

Compression:

Stored size: 1.61 KB

Contents

require 'artoo/adaptors/adaptor'

module Artoo
  module Adaptors
    # Connect to Digispark or Littlewire device using Little Wire protocol
    # @see http://littlewire.cc/
    class Littlewire < Adaptor
      attr_reader :littlewire, :vendor, :product, :usb

      def initialize(params={})
        super

        params[:additional_params] ||= {}
        @vendor = params[:additional_params][:vendor] || 0x1781
        @product = params[:additional_params][:product] || 0x0c9f
      end

      # Creates connection with littlewire board
      # @return [Boolean]
      def connect
        require 'littlewire' unless defined?(::LittleWire)
        @littlewire = ::LittleWire.new(connect_to_usb)
        super
        return true
      end

      # Closes connection with littlewire board
      # @return [Boolean]
      def disconnect
        littlewire.finished
        super
      end

      # Returns firmware name of littlewire board
      # @return [String]
      def firmware_name
        "Little Wire"
      end

      def digital_read(pin)
        littlewire.digital_write(pin, true)
        littlewire.digital_read(pin)
      end

      def pwm_write(pin, level)
        littlewire.software_pwm_write(pin, level)
      end

      def connect_to_usb
        @usb = LIBUSB::Context.new.devices(
          :idVendor  => vendor,
          :idProduct => product
        ).first
      end

      # Uses method missing to call Littlewire methods
      # @see https://github.com/Bluebie/littlewire.rb
      def method_missing(method_name, *arguments, &block)
        littlewire.send(method_name, *arguments, &block)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
artoo-arduino-1.1.0 lib/artoo/adaptors/littlewire.rb