Class: BirdbrainDevice

Inherits:
Object
  • Object
show all
Defined in:
lib/birdbrain/birdbrain_device.rb

Overview


Copyright © 2021 Base2 Incorporated–All Rights Reserved.


Direct Known Subclasses

BirdbrainMicrobit

Constant Summary collapse

DEFAULT_DEVICE =
'A'
LEFT =
'L'
RIGHT =
'R'
VALID_DEVICES =
'ABC'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(device = DEFAULT_DEVICE) ⇒ BirdbrainDevice

Returns a new instance of BirdbrainDevice.



14
15
16
17
18
# File 'lib/birdbrain/birdbrain_device.rb', line 14

def initialize(device = DEFAULT_DEVICE)
  self.state = BirdbrainState.new
  self.device = device
  self.connected = nil
end

Instance Attribute Details

#connectedObject

Returns the value of attribute connected.



11
12
13
# File 'lib/birdbrain/birdbrain_device.rb', line 11

def connected
  @connected
end

#deviceObject

Returns the value of attribute device.



12
13
14
# File 'lib/birdbrain/birdbrain_device.rb', line 12

def device
  @device
end

#stateObject

Returns the value of attribute state.



10
11
12
# File 'lib/birdbrain/birdbrain_device.rb', line 10

def state
  @state
end

Class Method Details

.connect(device = DEFAULT_DEVICE, raise_exception_if_no_connection = false) ⇒ Object

Raises:



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/birdbrain/birdbrain_device.rb', line 20

def self.connect(device = DEFAULT_DEVICE, raise_exception_if_no_connection = false)
  raise(BirdbrainException, 'Missing device name') if device.nil?
  raise(BirdbrainException, "Invalid device name: #{device}") unless VALID_DEVICES.include?(device)

  device = new(device)

  device.connect

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

  device
end

.find_deviceObject



53
54
55
56
57
58
59
60
61
62
63
# File 'lib/birdbrain/birdbrain_device.rb', line 53

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

Instance Method Details

#connectObject



33
34
35
36
37
# File 'lib/birdbrain/birdbrain_device.rb', line 33

def connect
  self.connected = BirdbrainRequest.connected?(device)
  self.connected = nil unless valid_device_type?
  connected
end

#connected?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/birdbrain/birdbrain_device.rb', line 39

def connected?
  !!connected
end

#connected_and_valid?(validate, valid_range) ⇒ Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/birdbrain/birdbrain_device.rb', line 83

def connected_and_valid?(validate, valid_range)
  valid?(validate, valid_range) && connected?
end

#disconnectObject



43
44
45
46
47
48
49
50
51
# File 'lib/birdbrain/birdbrain_device.rb', line 43

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?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/birdbrain/birdbrain_device.rb', line 73

def finch?
  BirdbrainFinchInput.finch?(device) if connected?
end

#hummingbird?Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/birdbrain/birdbrain_device.rb', line 69

def hummingbird?
  BirdbrainHummingbirdInput.hummingbird?(device) if connected?
end

#microbit?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/birdbrain/birdbrain_device.rb', line 65

def microbit?
  BirdbrainMicrobitInput.microbit?(device) if connected?
end

#valid?(validate, valid_range) ⇒ Boolean

Returns:

  • (Boolean)


77
78
79
80
81
# File 'lib/birdbrain/birdbrain_device.rb', line 77

def valid?(validate, valid_range)
  return false if validate.nil?

  valid_range.include?(validate.to_s)
end