ykawashima
2018年4月27日 18時40分
川島と申します。
Armadillo-IoT G3LにてBLE通信を行うプログラムの開発を行っています。
自社開発したBLEデバイスが1秒ごとにアドバタイズを送信しているのですが、
これが安定して受信出来ません。送信自体はAndroidのアプリ等で確認できています。
手始めにhcitool lescanとして受信してみましたが、短い時では数秒に1度受信できる物の、
長いときでは数十秒間隔になってしまいます。
また、hcitoolのソースコードからlescanに関わる部分を抜き出してテストプログラムを作成し、
intervalやwindowのパラメータを変更してみましたが、やはり長時間受信できない場合があります。
同じアドレスのアドバタイズデータがフィルタされたりしているのでしょうか?
また、BLEデバイスをスキャンしてコネクト、通信を行うプログラムの開発について調べて見ましたが、
どうにもコレだという方法にたどり着きません。どうやらbluezのデーモンに対してdbusを経由してアクセス
するようなのですが、どちらも資料に乏しく難航しています。
何かセオリーのような物はあるのでしょうか。
宜しくお願いします。
コメント
ykawashima
川島です。返信遅くなり申し訳ありません。
> Debian Code Search[1]で"AF_BLUETOOTH", "bt_io_"あたりを探してみました
> が、BlueZのソースが一番見易そうでした。
> [1]: https://codesearch.debian.net/
> 資料/セオリーについては、申し訳ありませんが把握していません。ただ、
> "linux bluetooth プログラミング"あたりでgoogle検索すると、サンプルプロ
> グラムを含んだページはいくつか見つかると思います。
有難う御座います、参考にさせて頂きます。
at_mizo
2018年5月8日 9時55分
溝渕です。
> 自社開発したBLEデバイスが1秒ごとにアドバタイズを送信しているのですが、
> これが安定して受信出来ません。送信自体はAndroidのアプリ等で確認できています。
>
> 手始めにhcitool lescanとして受信してみましたが、短い時では数秒に1度受信できる物の、
> 長いときでは数十秒間隔になってしまいます。
lescanをオプション無しで実行すると、重複したパケットを纏めてしまうこと
があります。この機能を無効化するには、次のように"duplicates"オプション
を付けてみてください。
root@armadillo:~# hcitool lescan --duplicates
> また、BLEデバイスをスキャンしてコネクト、通信を行うプログラムの開発について調べて見ましたが、
> どうにもコレだという方法にたどり着きません。どうやらbluezのデーモンに対してdbusを経由してアクセス
> するようなのですが、どちらも資料に乏しく難航しています。
>
> 何かセオリーのような物はあるのでしょうか。
Debian Code Search[1]で"AF_BLUETOOTH", "bt_io_"あたりを探してみました
が、BlueZのソースが一番見易そうでした。
[1]: https://codesearch.debian.net/
資料/セオリーについては、申し訳ありませんが把握していません。ただ、
"linux bluetooth プログラミング"あたりでgoogle検索すると、サンプルプロ
グラムを含んだページはいくつか見つかると思います。