Class: BirdbrainDevice
- Inherits:
-
Object
- Object
- BirdbrainDevice
- Defined in:
- lib/birdbrain/birdbrain_device.rb
Overview
Copyright © 2021 Base2 Incorporated–All Rights Reserved.
Direct Known Subclasses
Constant Summary collapse
- DEFAULT_DEVICE =
'A'
- LEFT =
'L'
- RIGHT =
'R'
- VALID_DEVICES =
'ABC'
Instance Attribute Summary collapse
-
#connected ⇒ Object
Returns the value of attribute connected.
-
#device ⇒ Object
Returns the value of attribute device.
-
#state ⇒ Object
Returns the value of attribute state.
Class Method Summary collapse
- .connect(device = DEFAULT_DEVICE, raise_exception_if_no_connection = false) ⇒ Object
- .find_device ⇒ Object
Instance Method Summary collapse
- #connect ⇒ Object
- #connected? ⇒ Boolean
- #connected_and_valid?(validate, valid_range) ⇒ Boolean
- #disconnect ⇒ Object
- #finch? ⇒ Boolean
- #hummingbird? ⇒ Boolean
-
#initialize(device = DEFAULT_DEVICE) ⇒ BirdbrainDevice
constructor
A new instance of BirdbrainDevice.
- #microbit? ⇒ Boolean
- #valid?(validate, valid_range) ⇒ Boolean
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
#connected ⇒ Object
Returns the value of attribute connected.
11 12 13 |
# File 'lib/birdbrain/birdbrain_device.rb', line 11 def connected @connected end |
#device ⇒ Object
Returns the value of attribute device.
12 13 14 |
# File 'lib/birdbrain/birdbrain_device.rb', line 12 def device @device end |
#state ⇒ Object
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
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_device ⇒ Object
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
#connect ⇒ Object
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
39 40 41 |
# File 'lib/birdbrain/birdbrain_device.rb', line 39 def connected? !!connected end |
#connected_and_valid?(validate, valid_range) ⇒ 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 |
#disconnect ⇒ Object
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
73 74 75 |
# File 'lib/birdbrain/birdbrain_device.rb', line 73 def finch? BirdbrainFinchInput.finch?(device) if connected? end |
#hummingbird? ⇒ Boolean
69 70 71 |
# File 'lib/birdbrain/birdbrain_device.rb', line 69 def hummingbird? BirdbrainHummingbirdInput.hummingbird?(device) if connected? end |
#microbit? ⇒ 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
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 |