src.bluetooth_sig.device.dependency_resolver

Dependency resolution for characteristic reads.

Resolves required and optional dependencies before reading a characteristic, building a CharacteristicContext will all resolved dependency values.

Attributes

Name

Description

logger

Classes

Name

Description

DependencyResolutionMode

Mode for automatic dependency resolution during characteristic reads.

DependencyResolver

Resolves characteristic dependencies by reading them from the device.

Module Contents

class src.bluetooth_sig.device.dependency_resolver.DependencyResolutionMode(*args, **kwds)

Bases: enum.Enum

Mode for automatic dependency resolution during characteristic reads.

NORMAL

Auto-resolve dependencies, use cache when available

SKIP_DEPENDENCIES

Skip dependency resolution and validation

FORCE_REFRESH

Re-read dependencies from device, ignoring cache

FORCE_REFRESH = 'force_refresh'
NORMAL = 'normal'
SKIP_DEPENDENCIES = 'skip_dependencies'
class src.bluetooth_sig.device.dependency_resolver.DependencyResolver(connection_manager: src.bluetooth_sig.device.client.ClientManagerProtocol, connected: src.bluetooth_sig.device.connected.DeviceConnected)

Resolves characteristic dependencies by reading them from the device.

Encapsulates the logic for: - Discovering which dependencies a characteristic declares - Reading dependency values from the device (with caching) - Building a CharacteristicContext for the target characteristic

Uses DeviceConnected for characteristic instance caching and ClientManagerProtocol for BLE reads.

async resolve(char_class: type[src.bluetooth_sig.gatt.characteristics.base.BaseCharacteristic[Any]], resolution_mode: DependencyResolutionMode, device_info: src.bluetooth_sig.gatt.context.DeviceInfo) src.bluetooth_sig.gatt.context.CharacteristicContext

Ensure all dependencies for a characteristic are resolved.

Automatically reads feature characteristics needed for validation of measurement characteristics. Feature characteristics are cached after first read.

Parameters:
  • char_class – The characteristic class to resolve dependencies for

  • resolution_mode – How to handle dependency resolution

  • device_info – Current device info for context construction

Returns:

CharacteristicContext with resolved dependencies

Raises:

RuntimeError – If no connection manager is attached

src.bluetooth_sig.device.dependency_resolver.logger