1

BLEデバイスへの総接続+書き込み時間を最小限に抑えようとしています。 BLEモジュールは、私が働く会社によって開発されているので、私はすでにデバイスのすべてのサービスと特性を知っています。BLEサービスディスカバリをスキップ

これまでのところ、接続時間+サービス検出時間が長すぎます(約800msです。要件は500msの上になります)。私はサービス発見をスキップしようとしました。そのために、コード内に特性やサービスを手動で作成しました(保護されたプロパティを設定するためにリフレクションを使用するなど)、サービス発見に合格することによって "技術的に"できます。

問題が発生した場合、最初のパケットには約300msかかります。サービス検出では約280ms、最初のパケットでは20msかかるため、サービス検出は次のようになります。私がそれを直接と呼んでいなくても、ただちに何が行われたのか - 私の前提ですか? もしそうなら、発見をバイパスする方法はありますか?

これまでのところ、助けていただけると助かりましたが、オンラインで役立つ情報は見つかりませんでした。これらの300ミリ秒は批判的です。

答えて

2

あなたがそれを知らせなくても、Androidはサービスディスカバリを行います。

  1. ボンドあなたのデバイス:

    は、次の3つのオプションがあります。その後、アンドロイドはサービスディスカバリを一切実行しません(最初の接続を除く)。

  2. GATTデータベースを最適化します。あなたが必要としない特性や記述子を捨ててください。カスタムサービスがあれば、できるだけ多くの特性をマージしてみてください。
  3. これが可能なハードウェアがあれば、次回の接続イベントで応答するのではなく、同じ接続イベント(150 US以内)で各GATT要求を処理します。理論的には、これは速度を2倍向上させるはずです。これが可能な例は、Nordic Semiconductorのnrf52です。
+0

GATTは最適化される前に最適化されています(必要なサービスと特性のみが存在します)。ファームウェア/ハードウェアチームをリンク層に向けて結果を報告します。ありがとうございました –

+0

もう一度試すことができます:MTUをデフォルトの23(たとえば512)より高い値に増やしてください。そうすれば、より多くのサービス/特性が各応答に収まるため、接続イベントの数が減ります。 – Emil

関連する問題