16

BLE デモ用に 2 つの Linux システムのセットアップに取り組んでいます。明らかに、1 つのシステムがペリフェラルになり、もう 1 つが中央デバイスになります。これらの構成の両方について、いくつか質問があります。

環境

周辺機器のセットアップ

ビジネスの最初の順序は、周辺システムのセットアップと、構成された GATT サーバーでのアドバタイズです。現時点では、コマンド ラインから GATT サーバーを構成することはできないようです。そのため、USB ドングルを起動して宣伝するのは簡単な作業ですが、カスタム サービスや特性を作成することはできません。私が見つけた唯一の GATT サーバーの例は、Bluez パッケージの gatt-example.c ファイルでした。そこで、最新の bluez-5.23 ソースをダウンロードしてビルドしました。( http://www.linuxfromscratch.org/blfs/view/svn/general/bluez.html )。--enable-maintainer-mode フラグを使用して追加で構成し、gatt-example.c プラグインを強制的に bluetoothd にビルドします。~/bluez-5.23/pluginsそして、ディレクトリからビルド後の検証を行いました。bluetoothd-gat-example.oファイル。これは、gatt-example が少なくとも正常にビルドされたことを示しています。

次に、構成ファイルを変更して、LE と属性サーバーを有効にしました。

$ sudo vi /etc/bluetooth/main.conf
EnableLE = true           // Enable Low Energy support. Default is false.
AttributeServer = true    // Enable the GATT attribute server. Default is false.

次に、Bluetoothデーモンを再起動または再起動するだけです...

中央デバイスのセットアップ

中央デバイスは、周辺機器のように構築された特別なプラグインを必要としないため、.exe を使用して bluez をインストールしapt-getました。によると、これにより v4.101 がインストールされたようbluetoothd -vです。

セッションのセットアップ

接続プロセスは非常に簡単です。周辺機器をアドバタイズするようにセットアップしてから、中央デバイスに接続します。

周辺:

$ sudo hciconfig hci0 up        // Make sure the interface is up
$ sudo hciconfig hci0 leadv     // Set the interface to advertise

中央:

$ sudo hcitool -i hci0 lescan   // Scan for nearby devices advertising
LE Scan ...
00:02:72:C9:5E:0F (unknown)     // Not sure why two of the same MAC are found?
00:02:72:C9:5E:0F (unknown)     // but I know this is my device...

$ sudo gatttool -i hci0 -b 00:02:72:C9:5E:0F -m 48 --interactive     // Connect interactively
[   ][00:02:72:C9:5E:0F][LE]> connect
[CON][00:02:72:C9:5E:0F][LE]> primary
attr handle: 0x0001, end grp handle: 0x0008 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0010, end grp handle: 0x0010 uuid: 00001801-0000-1000-8000-00805f9b34fb
[CON][00:02:72:C9:5E:0F][LE]> characteristics 
handle: 0x0004, char properties: 0x02, char value handle: 0x0006, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0007, char properties: 0x02, char value handle: 0x0008, uuid: 00002a01-0000-1000-8000-00805f9b34fb

また、gatt-example のサービスまたは特性のいずれも利用できないことがわかります。

質問

--周辺機器

  1. 独自のカスタム GATT サーバーを作成するにはどうすればよいですか? スタンドアロンの C アプリケーションにすることはできますか、それとも gatt-example のようなプラグインとして bluetoothd に組み込む必要がありますか? この質問 ( Creating a Gatt Server? ) に対する答えは、「GATT ライブラリと追加モジュールを初期化することから始めて」、次に「GATT データベースを登録する」ことを意味します。しかし、これらの一般的なステートメントを実装する方法の例は 1 つもありません。提供されているリンクは、単に Bluetooth Web サイトへの URL です。
  2. GATT 仕様 ( https://developer.bluetooth.org/gatt/Pages/default.aspx ) は、XML 形式でダウンロード可能な多数の「採用された」サービスと特性を提供します。しかし、それらの使用方法についての指示はありませんか?!
  3. GATT サーバーが実行されていることを検証するにはどうすればよいですか?

-- 中央装置

  1. セントラル デバイスが周辺機器で実行されている GATT サーバーからのサービスと特性を認識しないのはなぜですか?

必要な追加情報を提供できます。ありがとう。

4

1 に答える 1