Merge pull request #58 from AlanRosenthal/main

Add definition of `Client Characteristic Configuration bit`
This commit is contained in:
Gilles Boccon-Gibod
2022-11-08 09:34:22 -08:00
committed by GitHub
2 changed files with 15 additions and 4 deletions

View File

@@ -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

View File

@@ -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