Class: Artoo::Adaptors::Littlewire

Inherits:
Adaptor
  • Object
show all
Defined in:
lib/artoo/adaptors/littlewire.rb

Overview

Connect to Digispark or Littlewire device using Little Wire protocol

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ Littlewire

Returns a new instance of Littlewire.



10
11
12
13
14
15
16
# File 'lib/artoo/adaptors/littlewire.rb', line 10

def initialize(params={})
  super

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

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *arguments, &block) ⇒ Object

Uses method missing to call Littlewire methods



58
59
60
# File 'lib/artoo/adaptors/littlewire.rb', line 58

def method_missing(method_name, *arguments, &block)
  littlewire.send(method_name, *arguments, &block)
end

Instance Attribute Details

#littlewireObject (readonly)

Returns the value of attribute littlewire.



8
9
10
# File 'lib/artoo/adaptors/littlewire.rb', line 8

def littlewire
  @littlewire
end

#productObject (readonly)

Returns the value of attribute product.



8
9
10
# File 'lib/artoo/adaptors/littlewire.rb', line 8

def product
  @product
end

#usbObject (readonly)

Returns the value of attribute usb.



8
9
10
# File 'lib/artoo/adaptors/littlewire.rb', line 8

def usb
  @usb
end

#vendorObject (readonly)

Returns the value of attribute vendor.



8
9
10
# File 'lib/artoo/adaptors/littlewire.rb', line 8

def vendor
  @vendor
end

Instance Method Details

#connectBoolean

Creates connection with littlewire board

Returns:

  • (Boolean)


20
21
22
23
24
25
# File 'lib/artoo/adaptors/littlewire.rb', line 20

def connect
  require 'littlewire' unless defined?(::LittleWire)
  @littlewire = ::LittleWire.new(connect_to_usb)
  super
  return true
end

#connect_to_usbObject



49
50
51
52
53
54
# File 'lib/artoo/adaptors/littlewire.rb', line 49

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

#digital_read(pin) ⇒ Object



40
41
42
43
# File 'lib/artoo/adaptors/littlewire.rb', line 40

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

#disconnectBoolean

Closes connection with littlewire board

Returns:

  • (Boolean)


29
30
31
32
# File 'lib/artoo/adaptors/littlewire.rb', line 29

def disconnect
  littlewire.finished
  super
end

#firmware_nameString

Returns firmware name of littlewire board

Returns:

  • (String)


36
37
38
# File 'lib/artoo/adaptors/littlewire.rb', line 36

def firmware_name
  "Little Wire"
end

#pwm_write(pin, level) ⇒ Object



45
46
47
# File 'lib/artoo/adaptors/littlewire.rb', line 45

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