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

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 # allow hummingbird/finch to be seen as microbit 

46 #return self.__is_device("isMicrobit") 

47 return True 

48 

49 def is_hummingbird(self): 

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

51 return self.__is_device("isHummingbird") 

52 

53 def is_finch(self): 

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

55 

56 return self.__is_device("isFinch") 

57 

58 def remap_device(device): 

59 return device 

60 

61 def connect_device(self): 

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

63 

64 return self.connected 

65 

66 def stop_all(self): 

67 BirdbrainRequest.stop_all(self.device) 

68 

69 

70 isConnectionValid = is_connected 

71 isFinch = is_finch 

72 isHummingbird = is_hummingbird 

73 isMicrobit = is_microbit