201HW(Android 4.0.4 のため、Bluetooth LE に未対応)とペアリングさせたい(できれば最終的に SPP 接続したい)がためだけの目的で、Classic BT の勉強を開始しました。
とはいえ、3月は年度末でバタバタしていて全く手を付けておらず、4月に入ってからようやく HCI Command の資料を斜め読みし始めた次第ですが、なんか急に頭が活性化し、今日ただちに Android 4.0.4 から Inquery したリストに ESP32 を出現させるところまで出来ました。
参考にさせて頂いたサイト様
PIC16F1455 http://www.yts.rdy.jp/pic/GB002/hcic.html レガシー仕様 https://www.bluetooth.com/ja-jp/specifications/adopted-specifications/legacy-specifications
順番 | コマンド | HCI送信 | HCI受信 |
1 | リセット | 01 03 0c 00 | 04 0e 04 05 03 0c 00 |
2 | BT ADDRの取得 | 01 09 10 00 | 04 0e 0a 05 09 10 00 xx xx 02 a4 ae 30 |
3 | スキャン有効化 | 01 1a 0c 01 01 | 04 0e 04 05 1a 0c 00 |
※メモ
スキャン有効化で 01 じゃなくて 03 を指定すると、外から Inquery されたとき落ちる
原因は分からない
※プログラムソースは中途半端なので、もうちょっとまとまってから貼ります。
ちなみにデバイスクラス名を指定するとアイコンになって出てきましたが、ESP32 に相応しいクラス名は何だろう?と考え始めると夜も寝れなくなるので、とりあえず未指定。
んで、本当は BT ADDR じゃなくて名前を通知させたかったので、ESP32という名前で端末名を登録しようと 01 13 0c 06 45 53 50 33 32 00 を送ったら 04 0e 04 05 13 0c 12 が戻ってきてしまいました。
(最後の 12 はパラメータエラーを示すステータスで、00 が戻らないといけないはず)