如何在bluez中编写客户端特征配置描述符

时间:2016-04-15 23:46:47

标签: python linux notifications bluez

我正在使用linux板上bluez附带的example-gatt-server.py脚本。我想为我的一个自定义特征添加通知。为此,我需要定义客户端特性配置描述符并将其添加到我的自定义特性中。我是这样做的 -

class ClientCharacteristicConfigurationDescriptor(Descriptor):

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)

此代码的灵感来自已在example-gatt-server文件中定义的CharacteristicsUserDescriptionDescriptor类。 上面的代码在阅读或写作时给出了错误。它甚至不打印“我正在阅读CCCD值”声明。我在这里缺少什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

Bluez处理客户端特征配置描述符(CCCD)。您不需要在代码中自己定义它 如果您已为相应的特征定义了“通知”标志,则Bluez将透明地处理通知支持。

您注意到example-gatt-server定义了特征用户描述(CUD)而非CCCD。