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

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( 

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) 

20 

21 return value * 0.1 # Resolution 0.1 VA 

22 

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)