Coverage for src / bluetooth_sig / gatt / characteristics / barometric_pressure_trend.py: 85%

27 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-01-11 20:14 +0000

1"""Barometric Pressure Trend characteristic implementation.""" 

2 

3from __future__ import annotations 

4 

5from enum import IntEnum 

6 

7from .base import BaseCharacteristic 

8from .templates import EnumTemplate 

9 

10 

11class BarometricPressureTrend(IntEnum): 

12 """Barometric pressure trend enumeration.""" 

13 

14 UNKNOWN = 0 

15 CONTINUOUSLY_FALLING = 1 

16 CONTINUOUSLY_RISING = 2 

17 FALLING_THEN_STEADY = 3 

18 RISING_THEN_STEADY = 4 

19 FALLING_BEFORE_LESSER_RISE = 5 

20 FALLING_BEFORE_GREATER_RISE = 6 

21 RISING_BEFORE_GREATER_FALL = 7 

22 RISING_BEFORE_LESSER_FALL = 8 

23 STEADY = 9 

24 

25 def __str__(self) -> str: 

26 """Return human-readable description.""" 

27 descriptions = { 

28 0: "Unknown", 

29 1: "Continuously falling", 

30 2: "Continuously rising", 

31 3: "Falling, then steady", 

32 4: "Rising, then steady", 

33 5: "Falling before a lesser rise", 

34 6: "Falling before a greater rise", 

35 7: "Rising before a greater fall", 

36 8: "Rising before a lesser fall", 

37 9: "Steady", 

38 } 

39 return descriptions[self.value] 

40 

41 @classmethod 

42 def from_value(cls, value: int) -> BarometricPressureTrend: 

43 """Create enum from integer value with fallback to UNKNOWN.""" 

44 try: 

45 return cls(value) 

46 except ValueError: 

47 return cls.UNKNOWN 

48 

49 

50class BarometricPressureTrendCharacteristic(BaseCharacteristic[BarometricPressureTrend]): 

51 """Barometric Pressure Trend characteristic (0x2AA3). 

52 

53 org.bluetooth.characteristic.barometric_pressure_trend 

54 

55 Barometric pressure trend characteristic. 

56 

57 Represents the trend observed for barometric pressure using 

58 enumerated values. 

59 """ 

60 

61 _template = EnumTemplate.uint8(BarometricPressureTrend) 

62 

63 # Manual override: YAML indicates uint8->int but we return enum 

64 _manual_value_type = "BarometricPressureTrend"