0

Bluetooth Smart 周辺機器をプログラムしようとしていますが、その方法がよくわかりません。

ペリフェラルは、1 つの中央デバイスにのみ接続する必要があります。(一般接続可能) アドバタイズ (アドバタイズ データを使用) 中に、この周辺機器がすべての人からの接続を受け入れないことを伝えることはできますか?

明らかに、周辺機器は最初の接続の前に「パブリック」(すべての中央デバイスに表示され、接続可能) である必要がありますが、その後はその中央デバイスへの接続のみに関心があります。これはプライバシーやセキュリティの問題ではありません。他のスキャン セントラル デバイスのスキャン結果を汚さないようにしています。

一般的な Bluetooth スマートをカバーしている Robin Heydon による本「Bluetooth Low Energy - the developers handbook」を読んでいます。「Flags AD」の広告データについて言及しています。これは私が探しているものでしょうか?この本には、「絆」についても言及されていますが、これは長期的な安全な関係に過ぎないと私は理解しています。暗号化されたリンク、プライベート アドレス、または署名された書き込みは必要ありませんが、私の場合はとにかくボンディングを使用することをお勧めしますか?

4

1 に答える 1

1

この質問を書いた後、Bluetooth LE についてさらに多くのことを学びましたが、誰も答えていないので、ここに答えを書きます。

2 つのデバイス間の長い時間の関係は、結合によって行われます。ボンディングにより、2 つのデバイスがキーを交換して保存し、これらのキーは、相互の検証のためにその後の接続に使用されます。さらに、キーは回線の暗号化にも使用されます。

一般的な広告ペリフェラルが特定のセントラルをターゲットにしたい場合、広告データを使用してこれを行います。Core Specification Supplement (CSS) v6には、この目的で使用できる 2 つのデータ型があります。Public Target Address (1.13) とRandom Target Address (1.14) です。または、開発者として、何らかの方法でメーカー固有のデータに好きなことをすることができます。

アドバタイジング ペリフェラルは特定のデバイスをターゲットにしているため、おそらく他のセントラルからの接続を妨げます。この目的のために、ホワイトリストを使用します。ターゲットとするセントラルのアドレスをホワイトリストに入れ、フィルター ポリシーを設定してホワイトリスト内のデバイスからの接続のみを許可し、広告を開始します。ただし、落とし穴があります。ペリフェラルは、セントラルのアドレスを解決して、以前に結合されたものであることを確認する必要があります。Bluetooth 4.2 より前では、これは (アプリケーションで) 手動で行う必要がありました。代わりに、4.2 仕様ではこれが自動的に行われます。結合中心を解決リストにも入れると、リンク層も解決を行います。

于 2016-10-20T15:37:01.177 に答える