src.bluetooth_sig.gatt.characteristics.descriptor_mixin

Descriptor support mixin for GATT characteristics.

Provides all descriptor-related methods (add, get, CCCD, context lookups) as a mixin that BaseCharacteristic inherits from.

Classes

Name

Description

DescriptorMixin

Mixin providing descriptor management and context lookup helpers.

Module Contents

class src.bluetooth_sig.gatt.characteristics.descriptor_mixin.DescriptorMixin

Mixin providing descriptor management and context lookup helpers.

Expects the consuming class to initialise _descriptors as an empty dict[str, BaseDescriptor] in __init__.

add_descriptor(descriptor: src.bluetooth_sig.gatt.descriptors.BaseDescriptor) None

Add a descriptor to this characteristic.

Parameters:

descriptor – The descriptor instance to add.

can_notify() bool

Check if this characteristic supports notifications.

Returns:

True if the characteristic has a CCCD descriptor.

enhance_error_message_with_descriptors(base_message: str, ctx: src.bluetooth_sig.gatt.context.CharacteristicContext | None = None) str

Enhance error message with descriptor information for better debugging.

Parameters:
  • base_message – Original error message.

  • ctx – Characteristic context containing descriptors.

Returns:

Enhanced error message with descriptor context.

get_cccd() src.bluetooth_sig.gatt.descriptors.BaseDescriptor | None

Get the Client Characteristic Configuration Descriptor (CCCD).

Returns:

CCCD descriptor instance if present, None otherwise.

get_descriptor(uuid: str | src.bluetooth_sig.types.uuid.BluetoothUUID) src.bluetooth_sig.gatt.descriptors.BaseDescriptor | None

Get a descriptor by UUID.

Parameters:

uuid – Descriptor UUID (string or BluetoothUUID).

Returns:

Descriptor instance if found, None otherwise.

get_descriptor_from_context(ctx: src.bluetooth_sig.gatt.context.CharacteristicContext | None, descriptor_class: type[src.bluetooth_sig.gatt.descriptors.BaseDescriptor]) src.bluetooth_sig.types.registry.descriptor_types.DescriptorData | None

Get a descriptor of the specified type from the context.

Parameters:
  • ctx – Characteristic context containing descriptors.

  • descriptor_class – The descriptor class to look for.

Returns:

DescriptorData if found, None otherwise.

get_descriptors() dict[str, src.bluetooth_sig.gatt.descriptors.BaseDescriptor]

Get all descriptors for this characteristic.

Returns:

Dict mapping descriptor UUID strings to descriptor instances.

get_presentation_format_from_context(ctx: src.bluetooth_sig.gatt.context.CharacteristicContext | None = None) src.bluetooth_sig.gatt.descriptors.characteristic_presentation_format.CharacteristicPresentationFormatData | None

Get presentation format from descriptor context if available.

Parameters:

ctx – Characteristic context containing descriptors.

Returns:

CharacteristicPresentationFormatData if present, None otherwise.

get_user_description_from_context(ctx: src.bluetooth_sig.gatt.context.CharacteristicContext | None = None) str | None

Get user description from descriptor context if available.

Parameters:

ctx – Characteristic context containing descriptors.

Returns:

User description string if present, None otherwise.

get_valid_range_from_context(ctx: src.bluetooth_sig.gatt.context.CharacteristicContext | None = None) tuple[int | float, int | float] | None

Get valid range from descriptor context if available.

Parameters:

ctx – Characteristic context containing descriptors.

Returns:

Tuple of (min, max) values if Valid Range descriptor present, None otherwise.

validate_value_against_descriptor_range(value: float, ctx: src.bluetooth_sig.gatt.context.CharacteristicContext | None = None) bool

Validate a value against descriptor-defined valid range.

Parameters:
  • value – Value to validate.

  • ctx – Characteristic context containing descriptors.

Returns:

True if value is within valid range or no range defined.