Coverage for /Users/fmorton/GitHub/BirdBrain-Python-Library-2/src/birdbrain_hummingbird_output.py: 100%

22 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-05-12 11:24 -0400

1from birdbrain_constant import BirdbrainConstant 

2from birdbrain_request import BirdbrainRequest 

3from birdbrain_utility import BirdbrainUtility 

4 

5class BirdbrainHummingbirdOutput(BirdbrainRequest): 

6 @classmethod 

7 def led(self, device, port, intensity): 

8 """Set led of a certain port requested to a valid intensity.""" 

9 self.validate_port(port, BirdbrainConstant.VALID_LED_PORTS) 

10 

11 calculated_intensity = BirdbrainUtility.bounds(BirdbrainRequest.calculate_intensity(intensity), 0, 255) 

12 

13 return BirdbrainRequest.response_status('hummingbird', 'out', 'led', port, calculated_intensity, device) 

14 

15 @classmethod 

16 def tri_led(self, device, port, r_intensity, g_intensity, b_intensity): 

17 """Set TriLED of a certain port requested to a valid intensity.""" 

18 return self.tri_led_response(device, port, r_intensity, g_intensity, b_intensity, BirdbrainConstant.VALID_TRI_LED_PORTS) 

19 

20 @classmethod 

21 def position_servo(self, device, port, angle): 

22 """Set Position servo of a certain port requested to a valid angle.""" 

23 BirdbrainRequest.validate_port(port, BirdbrainConstant.VALID_SERVO_PORTS) 

24 

25 calculated_angle = BirdbrainUtility.bounds(BirdbrainRequest.calculate_angle(angle), 0, 254) 

26 

27 return BirdbrainRequest.response_status('hummingbird', 'out', 'servo', port, calculated_angle, device) 

28 

29 @classmethod 

30 def rotation_servo(self, device, port, speed): 

31 """Set Rotation servo of a certain port requested to a valid speed.""" 

32 BirdbrainRequest.validate_port(port, BirdbrainConstant.VALID_SERVO_PORTS) 

33 

34 calculated_speed = BirdbrainRequest.calculate_speed(BirdbrainUtility.bounds(int(speed), -100, 100)) 

35 

36 return BirdbrainRequest.response_status('hummingbird', 'out', 'rotation', port, calculated_speed, device)