Как написать дескриптор конфигурации характеристик клиента в bluez

Я работаю со сценарием example-gatt-server.py, который поставляется с bluez на моей плате Linux. Я хочу добавить уведомление к одной из моих пользовательских характеристик. Для этого мне нужно определить дескриптор конфигурации характеристик клиента и добавить его в мою пользовательскую характеристику. Вот как я это делаю -

класс ClientCharacteristicConfigurationDescriptor (дескриптор):

CCCD_UUID = '2902'

def __init__(self, bus, index, characteristic):
    self.value = array.array('B')
    self.value = self.value.tolist()
    #self.value = []

    Descriptor.__init__(
            self, bus, index,
            self.CCCD_UUID,
            ['read', 'write'],
            characteristic)

def ReadValue(self):
    print("I am reading CCCD value")
    print(self.value)
    return self.value

def WriteValue(self, value):
    print("I am writing CCCD value")
    print type(value)
    #self.value = value
    print(value)

Этот код был вдохновлен классом CharacteristicUserDescriptionDescriptor, который уже определен в файле example-gatt-server. Приведенный выше код дает мне ошибки при чтении или записи. Он даже не печатает заявление «Я читаю значение CCCD». Что мне здесь не хватает?

Спасибо!


person Pallavi    schedule 15.04.2016    source источник
comment
Какая у тебя версия блюза? Для доступа Python dbus к LE это должно быть не менее 5,37.   -  person kiranpradeep    schedule 16.04.2016
comment
Спасибо за ваш ответ. Я использую 5.34, и он работает со всеми остальными характеристиками, кроме этого уведомления. Так что я не уверен, что это проблема.   -  person Pallavi    schedule 18.04.2016


Ответы (1)


Bluez обрабатывает дескриптор конфигурации характеристик клиента (CCCD). Вам не нужно определять его самостоятельно в своем коде.
Поддержка уведомлений должна прозрачно обрабатываться Bluez, если вы определили флаг «уведомлять» для соответствующей характеристики.

Как вы заметили, example-gatt-server определяет характеристическое описание пользователя (CUD), а не CCCD.

person OlivierM    schedule 28.04.2017