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-12 11:24 -0400

1from birdbrain_constant import BirdbrainConstant 

2from birdbrain_exception import BirdbrainException 

3from birdbrain_request import BirdbrainRequest 

4from birdbrain_state import BirdbrainState 

5 

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 

11 

12 @classmethod 

13 def connect(self, device = "A", raise_exception_if_no_connection = True): 

14 device_object = BirdbrainDevice(device) 

15 

16 self.state = device_object.state 

17 self.device = device_object.device 

18 self.connected = device_object.connected 

19 

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) 

24 

25 self.connected = device_object.connect_device() 

26 

27 if raise_exception_if_no_connection and not device_object.connected: 

28 raise BirdbrainException("No connection: " + device) 

29 

30 return device_object 

31 

32 def is_connected(self): 

33 """Determine if the device is connected""" 

34 

35 return self.connected 

36 

37 def __is_device(self, operator): 

38 response = BirdbrainRequest.response("hummingbird", "in", operator, "static", self.device) 

39 

40 return (response == 'true') 

41 

42 def is_microbit(self): 

43 """Determine if the device is a Microbit""" 

44 

45 return self.__is_device("isMicrobit") 

46 

47 def is_hummingbird(self): 

48 """Determine if the device is a hummingbird.""" 

49 return self.__is_device("isHummingbird") 

50 

51 def is_finch(self): 

52 """Determine if the device is a Finch""" 

53 

54 return self.__is_device("isFinch") 

55 

56 def remap_device(device): 

57 return device 

58 

59 def connect_device(self): 

60 self.connected = BirdbrainRequest.is_connected(self.device) 

61 

62 return self.connected 

63 

64 def stop_all(self): 

65 BirdbrainRequest.stop_all(self.device) 

66 

67 

68 isConnectionValid = is_connected 

69 isFinch = is_finch 

70 isHummingbird = is_hummingbird 

71 isMicrobit = is_microbit