Coverage for src / bluetooth_sig / gatt / characteristics / server_supported_features.py: 100%
21 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-03 16:41 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-03 16:41 +0000
1"""Server Supported Features characteristic (0x2B3A)."""
3from __future__ import annotations
5from enum import IntFlag
7from ..context import CharacteristicContext
8from .base import BaseCharacteristic
11class ServerFeatures(IntFlag):
12 """GATT server supported feature flags."""
14 EATT = 0x01
17class ServerSupportedFeaturesCharacteristic(BaseCharacteristic[ServerFeatures]):
18 """Server Supported Features characteristic (0x2B3A).
20 org.bluetooth.characteristic.server_supported_features
22 Variable-length bitfield indicating GATT features supported by the server.
23 """
25 allow_variable_length: bool = True
26 min_length: int = 1
28 def _decode_value(
29 self, data: bytearray, ctx: CharacteristicContext | None = None, *, validate: bool = True
30 ) -> ServerFeatures:
31 result = 0
32 for i, byte in enumerate(data):
33 result |= byte << (8 * i)
34 return ServerFeatures(result)
36 def _encode_value(self, data: ServerFeatures) -> bytearray:
37 result = bytearray()
38 val = int(data)
39 while val > 0:
40 result.append(val & 0xFF)
41 val >>= 8
42 return result or bytearray([0])