LinuxのデバイスドライバーレベルでBluetooth Low Energyをどのように実装していますか?
新しい Bluetooth バージョンごとに新しい Bluetooth スタック コードはありますか?
LinuxのデバイスドライバーレベルでBluetooth Low Energyをどのように実装していますか?
新しい Bluetooth バージョンごとに新しい Bluetooth スタック コードはありますか?
Bluezは Linux Bluetooth のスタックです。新しいバージョンの Bluetooth ではコードが変更されましたが、完全に書き直されたわけではなく、そのような抜本的なものでもありません。Bluetooth の新しいバージョンは通常、Low Energy を除いて既存のプロトコルの拡張です。Linux では、Low Energy はカーネル レベルで完全にサポートされていますが、LE とのより高いレベルの相互作用のための便利なライブラリは多くありません。
LE での Bluez の不完全性のため、LE で機能を実装するために、カーネル コードと直接やり取りする必要がありました。また、Bluez 5.x でサポートされていない古いカーネルを使用する必要があり、Bluez 4.x を使用する必要がありました。
すでに Tim と jhonnash は、あなたの質問に対して包括的な情報を提供しています。しかし、Android Mobile の観点から、もう 1 つ情報を追加したいと思います。
Android の新しいバージョンは、Bluedroid を Bluetooth スタックとして使用します。これはBluezとはかなり異なります。
Bluez には、ユーザー空間とカーネル空間の両方に分散された機能があります。RFCOMM、HCI、L2CAP などのすべてのプロトコルはカーネル レベルで実装され、プロファイルはユーザー空間で実装されます。Tim が述べたように、Low energy をサポートするために、Bluez はユーザー空間だけでなくカーネル レベルでもサポートを提供する必要があります。これは、追跡して理解するのが難しい場合があります。新しい変更には、カーネルとユーザー空間コードの変更が必要になる場合があります。
一方、Bluedroid は Bluez よりもいくつかの利点があります。Bluedroid は、ユーザー空間で完全な機能を実装しています。そのため、新しい機能はユーザー レベルのコードでのみ追加する必要があります。カーネル コードに依存しません。
また、 「新しい bluetooth バージョンごとに新しい bluetooth スタック コードはありますか?」という質問に答えるには、 Bluetooth の新しいバージョンは下位互換性があるため、Bluetooth の新しいバージョンに完全な書き直しは必要ありません。そのため、コードのそれらの部分のみが新しい既存のスタックに追加されます。
よろしく
あなたの質問は完全に明確ではないため、Linux の Bluetooth Low Energy スタックにアクセスするために利用可能なすべてのプロトコルを提供しようとしています。
UHIDドライバーの「HoG (HID over GATT/Bluetooth-Low-Energy): GATT は、ユーザー空間に実装された Bluetooth プロトコルです。ユーザー空間が Bluetooth デバイスへの LE (低エネルギー) 接続を開くと、デバイスはアドバタイズできます。 GATT による HID 機能。」GATTサービスはこのリンクで適切に定義されているためです
。低エネルギー デバイスにアクセスするための GATT 以外のプロトコルが存在する場合があります。HID Over GATT の実装はこのようにして行われます。