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
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-11 20:14 +0000
1"""Barometric Pressure Trend characteristic implementation."""
3from __future__ import annotations
5from enum import IntEnum
7from .base import BaseCharacteristic
8from .templates import EnumTemplate
11class BarometricPressureTrend(IntEnum):
12 """Barometric pressure trend enumeration."""
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
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]
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
50class BarometricPressureTrendCharacteristic(BaseCharacteristic[BarometricPressureTrend]):
51 """Barometric Pressure Trend characteristic (0x2AA3).
53 org.bluetooth.characteristic.barometric_pressure_trend
55 Barometric pressure trend characteristic.
57 Represents the trend observed for barometric pressure using
58 enumerated values.
59 """
61 _template = EnumTemplate.uint8(BarometricPressureTrend)
63 # Manual override: YAML indicates uint8->int but we return enum
64 _manual_value_type = "BarometricPressureTrend"