diff --git a/bumble/gatt.py b/bumble/gatt.py index cc66329e..889eaa44 100644 --- a/bumble/gatt.py +++ b/bumble/gatt.py @@ -23,6 +23,7 @@ # Imports # ----------------------------------------------------------------------------- import asyncio +import enum import types import logging from pyee import EventEmitter @@ -474,3 +475,12 @@ class Descriptor(Attribute): def __str__(self): return f'Descriptor(handle=0x{self.handle:04X}, type={self.type}, value={self.read_value(None).hex()})' + + +class ClientCharacteristicConfigurationBits(enum.IntFlag): + ''' + See Vol 3, Part G - 3.3.3.3 - Table 3.11 Client Characteristic Configuration bit field definition + ''' + DEFAULT = 0x0000 + NOTIFICATION = 0x0001 + INDICATION = 0x0002 diff --git a/bumble/gatt_client.py b/bumble/gatt_client.py index 07116fa0..bce0a327 100644 --- a/bumble/gatt_client.py +++ b/bumble/gatt_client.py @@ -37,7 +37,8 @@ from .gatt import ( GATT_PRIMARY_SERVICE_ATTRIBUTE_TYPE, GATT_SECONDARY_SERVICE_ATTRIBUTE_TYPE, GATT_CHARACTERISTIC_ATTRIBUTE_TYPE, - Characteristic + Characteristic, + ClientCharacteristicConfigurationBits ) # ----------------------------------------------------------------------------- @@ -558,13 +559,13 @@ class Client: return # Set the subscription bits and select the subscriber set - bits = 0 + bits = ClientCharacteristicConfigurationBits.DEFAULT subscriber_sets = [] if characteristic.properties & Characteristic.NOTIFY: - bits |= 0x0001 + bits |= ClientCharacteristicConfigurationBits.NOTIFICATION subscriber_sets.append(self.notification_subscribers.setdefault(characteristic.handle, set())) if characteristic.properties & Characteristic.INDICATE: - bits |= 0x0002 + bits |= ClientCharacteristicConfigurationBits.INDICATION subscriber_sets.append(self.indication_subscribers.setdefault(characteristic.handle, set())) # Add subscribers to the sets