Coverage for src / bluetooth_sig / gatt / characteristics / apparent_power.py: 100%
12 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-18 11:17 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-18 11:17 +0000
1"""Apparent Power characteristic implementation."""
3from __future__ import annotations
5from ..context import CharacteristicContext
6from .base import BaseCharacteristic
7from .utils.data_parser import DataParser
10class ApparentPowerCharacteristic(BaseCharacteristic[float]):
11 """Apparent Power characteristic."""
13 _manual_unit: str | None = "VA" # YAML: electrical_apparent_power.volt_ampere, units.yaml: power.volt_ampere
15 def _decode_value(
16 self, data: bytearray, ctx: CharacteristicContext | None = None, *, validate: bool = True
17 ) -> float:
18 """Decode the apparent power value."""
19 value = DataParser.parse_int24(data, 0, signed=False)
21 return value * 0.1 # Resolution 0.1 VA
23 def _encode_value(self, data: float) -> bytearray:
24 """Encode the apparent power value."""
25 encoded = int(data / 0.1)
26 return DataParser.encode_int24(encoded, signed=False)