Bluetoothを試してみる_ちょっと止める
新規作成 2021-8-8
中断するためのメモ
Fire Chatなるアプリのように、データをノード間でバトンしていって、e2eで届けたい。
通信プロトコルはbluetooth。その実装もしたい。できればGoよりRustの方がいいのかも?
でも果てしない感が強くなってきた。で、モチベーションを下げるための考えを整理する。
なぜ、データをバトンして渡したいのか?bluetoothで
圏外で通信できるのは凄いと思ったし、TCP/IPではない方法でe2eで通信できるのも凄い。あと通信プロトコルの実装になにか惹かれるものがある。
bluetoothでノード間を繋いでデータを送れるんだなとわかった。あとはbluetoothのとこの実装ができればなんとかなりそうな気がする。では実装できて満足して、その後になにがあるか?
考えてたのが、ラズパイみたいなノードを複数ばらまいて、e2eでデータが送れるか?を試したい。
かなりの時間をかければ出来るかもしれないけど、他に時間使った方がいいのでは?fire chatがあるんだし、送れることは明白。
概要
やったことメモ
2021/8/8
Windows側
上記プログラムに必要なパッケージをgo get(GO111MODULE=off)
以下割愛
ラズパイ用にビルド
code:sh
/mnt/c/DEV/workspace/GO/src/github.com/currantlabs/ble
17:06:14 > GO111MODULE=off GOOS=linux GOARCH=arm GOARM=7 go build -o examples/blesh/blesh_pi examples/blesh/*.go
バイナリをWinSCPでラズパイに転送
Raspberry Pi側
sudo ./blesh_pi sv -tmo 1h を実行し、Windows側でBluetoothデバイスとして認識されていることを確認
2021/8/9
割愛
2021/8/14
小構成でアドバタイズ成功
上記で度々参考にしているGoのライブラリとexampleのbleshの実行結果を確認して、アドバタイズに必要なコードを構成して、ラズパイで実行した。結果、Windows側でBluetoothデバイスとして検知することが出来た。
ソケットにバイト列を書き込むまでのソケットの準備(ioctlとか)が全く分かってないので、知りたい。
ソケットへアドバタイズに必要そうなバイト列を書き込んでいるが、各バイト列が何のためにあるのかわかってないので知りたい。
参考にしているhci.goのsendメソッド/cmd_gen.goとそのコメントに記載されているドキュメント参照先を確認する。
2021/10/2