Coverage for /Users/fmorton/GitHub/BirdBrain-Python-Library-2/src/birdbrain_device.py: 98%
45 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-04 20:20 -0500
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-04 20:20 -0500
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 return self.__is_device("isMicrobit")
47 def is_hummingbird(self):
48 """Determine if the device is a hummingbird."""
49 return self.__is_device("isHummingbird")
51 def is_finch(self):
52 """Determine if the device is a Finch"""
54 return self.__is_device("isFinch")
56 def remap_device(device):
57 return device
59 def connect_device(self):
60 self.connected = BirdbrainRequest.is_connected(self.device)
62 return self.connected
64 def stop_all(self):
65 BirdbrainRequest.stop_all(self.device)
68 isConnectionValid = is_connected
69 isFinch = is_finch
70 isHummingbird = is_hummingbird
71 isMicrobit = is_microbit