Coverage for /Users/fmorton/GitHub/Birdbrain-Python-Library-2/src/birdbrain_device.py: 98%
45 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-05-21 08:37 -0400
« prev ^ index » next coverage.py v7.8.0, created at 2025-05-21 08:37 -0400
1from birdbrain_constant import BirdbrainConstant
2from birdbrain_exception import BirdbrainException
3from birdbrain_request import BirdbrainRequest
4from birdbrain_state import BirdbrainState
6class BirdbrainDevice:
7 def __init__(self, device = "A", raise_exception_if_no_connection = True):
8 self.state = BirdbrainState()
9 self.device = BirdbrainDevice.remap_device(device)
10 self.connected = False
12 @classmethod
13 def connect(self, device = "A", raise_exception_if_no_connection = True):
14 device_object = BirdbrainDevice(device)
16 self.state = device_object.state
17 self.device = device_object.device
18 self.connected = device_object.connected
20 if device is None:
21 raise BirdbrainException("Missing device name")
22 if not device in BirdbrainConstant.VALID_DEVICES:
23 raise BirdbrainException("Invalid device name: " + device)
25 self.connected = device_object.connect_device()
27 if raise_exception_if_no_connection and not device_object.connected:
28 raise BirdbrainException("No connection: " + device)
30 return device_object
32 def is_connected(self):
33 """Determine if the device is connected"""
35 return self.connected
37 def __is_device(self, operator):
38 response = BirdbrainRequest.response("hummingbird", "in", operator, "static", self.device)
40 return (response == 'true')
42 def is_microbit(self):
43 """Determine if the device is a Microbit"""
45 # allow hummingbird/finch to be seen as microbit
46 #return self.__is_device("isMicrobit")
47 return True
49 def is_hummingbird(self):
50 """Determine if the device is a hummingbird."""
51 return self.__is_device("isHummingbird")
53 def is_finch(self):
54 """Determine if the device is a Finch"""
56 return self.__is_device("isFinch")
58 def remap_device(device):
59 return device
61 def connect_device(self):
62 self.connected = BirdbrainRequest.is_connected(self.device)
64 return self.connected
66 def stop_all(self):
67 BirdbrainRequest.stop_all(self.device)
70 isConnectionValid = is_connected
71 isFinch = is_finch
72 isHummingbird = is_hummingbird
73 isMicrobit = is_microbit