class BirdbrainDevice

Constants

DEFAULT_DEVICE
LEFT
VALID_DEVICES

Attributes

connected[RW]
device[RW]
state[RW]

Public Class Methods

connect(device = DEFAULT_DEVICE, raise_exception_if_no_connection = false) click to toggle source
# File lib/birdbrain/birdbrain_device.rb, line 20
def self.connect(device = DEFAULT_DEVICE, raise_exception_if_no_connection = false)
  device_object = new(device)

  raise(BirdbrainException, 'Missing device name') if device.nil?
  raise(BirdbrainException, "Invalid device name: #{device}") unless VALID_DEVICES.include?(device)

  device_object.connect

  raise(BirdbrainException, 'No connection') if raise_exception_if_no_connection && !device_object.connected?

  device_object
end
find_device() click to toggle source
# File lib/birdbrain/birdbrain_device.rb, line 57
def self.find_device
  ('A'..'C').each do |device|
    connected_device = connect(device)

    return connected_device if connected_device.valid_device_type?
  rescue BirdbrainException
    next
  end

  new(nil)
end
new(device = DEFAULT_DEVICE) click to toggle source
# File lib/birdbrain/birdbrain_device.rb, line 14
def initialize(device = DEFAULT_DEVICE)
  self.state = BirdbrainState.new
  self.device = remap_device(device)
  self.connected = nil
end

Public Instance Methods

connect() click to toggle source
# File lib/birdbrain/birdbrain_device.rb, line 37
def connect
  self.connected = BirdbrainRequest.connected?(device)
  self.connected = nil unless valid_device_type?
  connected
end
connected?() click to toggle source
# File lib/birdbrain/birdbrain_device.rb, line 43
def connected?
  !!connected
end
connected_and_valid?(validate, valid_range) click to toggle source
# File lib/birdbrain/birdbrain_device.rb, line 87
def connected_and_valid?(validate, valid_range)
  valid?(validate, valid_range) && connected?
end
disconnect() click to toggle source
# File lib/birdbrain/birdbrain_device.rb, line 47
def disconnect
  BirdbrainRequest.disconnect(device) if connected?

  state.microbit_display_map_clear unless state.nil?

  self.connected = nil
  self.device = nil
  self.state = nil
end
finch?() click to toggle source
# File lib/birdbrain/birdbrain_device.rb, line 77
def finch?
  BirdbrainFinchInput.finch?(device) if connected?
end
hummingbird?() click to toggle source
# File lib/birdbrain/birdbrain_device.rb, line 73
def hummingbird?
  BirdbrainHummingbirdInput.hummingbird?(device) if connected?
end
microbit?() click to toggle source
# File lib/birdbrain/birdbrain_device.rb, line 69
def microbit?
  BirdbrainMicrobitInput.microbit?(device) if connected?
end
remap_device(device = DEFAULT_DEVICE) click to toggle source
# File lib/birdbrain/birdbrain_device.rb, line 33
def remap_device(device = DEFAULT_DEVICE)
  device
end
valid?(validate, valid_range) click to toggle source
# File lib/birdbrain/birdbrain_device.rb, line 81
def valid?(validate, valid_range)
  return false if validate.nil?

  valid_range.include?(validate.to_s)
end