2016-04-15 18 views
0

私は、私のLinuxボードにbluezに付属のexample-gatt-server.pyスクリプトを使って作業しています。私は私のカスタム特性の1つに通知を追加したいと思います。そのためには、クライアント特性設定記述子を定義してそれを私のカスタム特性に追加する必要があります。ここで私はこれをやっている方法です -bluezのクライアント特性設定記述子を書く方法

クラス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) 

このコードは、すでに例-GATT・サーバー・ファイルに定義されていますCharacteristicUserDescriptionDescriptorクラスに触発されました。 上記のコードは、読み書き中にエラーが表示されます。それは "私はCCCDの価値を読んでいる"声明を印刷しません。私はここで何が欠けていますか?

ありがとうございます!

+0

bluezのバージョンは何ですか? LEへのpython dbusアクセスの場合、少なくとも5.37 – Kiran

+0

ありがとうございます。私は5.34を使用し、この通知事項を除いて他のすべての特性と連携します。だから私はそれが問題かどうか分からない。 – Pallavi

答えて

0

Bluezは、CCCD(Client Characteristic Configuration Descriptor)を処理します。コード内で自分自身を定義する必要はありません。
対応する特性に対してフラグ 'notify'を定義している場合、通知サポートはBluezによって透過的に処理される必要があります。

気づいたように、example-gatt-serverはCCCDではなく特性ユーザー説明(CUD)を定義しています。

関連する問題