Coverage for src / bluetooth_sig / gatt / characteristics / apparent_power.py: 100%

12 statements  

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

1"""Apparent Power characteristic implementation.""" 

2 

3from __future__ import annotations 

4 

5from ..context import CharacteristicContext 

6from .base import BaseCharacteristic 

7from .utils.data_parser import DataParser 

8 

9 

10class ApparentPowerCharacteristic(BaseCharacteristic[float]): 

11 """Apparent Power characteristic.""" 

12 

13 _manual_unit: str | None = "VA" # YAML: electrical_apparent_power.volt_ampere, units.yaml: power.volt_ampere 

14 

15 def _decode_value(self, data: bytearray, ctx: CharacteristicContext | None = None) -> float: 

16 """Decode the apparent power value.""" 

17 value = DataParser.parse_int24(data, 0, signed=False) 

18 

19 return value * 0.1 # Resolution 0.1 VA 

20 

21 def _encode_value(self, data: float) -> bytearray: 

22 """Encode the apparent power value.""" 

23 encoded = int(data / 0.1) 

24 return DataParser.encode_int24(encoded, signed=False)