タイトルには「できない」と書いたが、うまく行くときもある。
こういうときはだめ、というのがわからないのは、できないのと同じだ。
Connection Establishedとあるから、まず接続して、Centralから「ペアリングしよう」と言われて動き出すようだ。
が、Centralへペアリングの応答を返した後でOOBの入力をやって、それ以降はやりとりがなさそうなのだ。
まあ、OOBだから、Bluetoothのところでは何もしないといわれればそれまでなんだけど。
では、Androidで失敗しているのは、何ができなかったからダメだと思ったのだろう?
ペアリングに成功した端末は、Android設定画面のBluetoothで「ペアリングされたデバイス」に現れている。
ペアリングはしてないが、検出できた端末は「使用可能なデバイス」に出てくるようだ。
TIのSensorTagも、ここに出てくる。
しかし、どうも「使用可能なデバイス」は常に見ているわけじゃなく、設定画面に入ったり、メニューで「更新」としたときにやっているようなのだ。
ペアリングするかどうかのダイアログは、NFCタッチのタイミングで表示される。
サンプルプログラムではNFCタッチのタイミングでAdvertisingをし始めるのだけど、そこら辺にずれがあるんじゃなかろうか。
ならば、だ。
- AndroidのBluetooth設定画面を開く or 「更新」を実行する
- Androidが端末を探している間にPreview nRF52 DKのNFCアンテナに軽くタッチし、Advertisingさせる
- 設定画面の「使用可能なデバイス」にNordic_HRMが表示されたら、ちゃんとタッチしてペアリング確認ダイアログを表示させる
- OKする
だとどうだろう?
・・・やってみたが、だめだった。
ペアリングされたデバイスになってくれない。
そもそも、ペアリングされたデバイスになっていなくても、HRMサンプルは動くようだ。
元のHRMサンプルにペアリングのところだけ付けたものだから、接続さえできればよいのだろう。
あれ、じゃあこのサンプルのペアリングって何のためにやってるのだ?
NXP Tag Infoアプリで読んだデータだ。
XMLも出力してくれるのだが、解析した画面の方がわかりやすい。
仕様は、これだろう。
http://members.nfc-forum.org/apps/group_public/download.php/18688/NFCForum-AD-BTSSP_1_1.pdf
まずNDEFレコードが1つしかない。
これはSimplified Tag Format for a Single Bluetooth Carrierというやつだろう。
そのときは、Bluetooth OOB情報だけをNDEFメッセージに入れるようだ。
以下、順にデータを切り出していく。AD Typeは2番目だ。
02 1c 00 : LE Role - Only Peripheral Role supported
08 1b 9a 7d b8 6a 25 cd 01 : LE Bluetooth Device Address
03 19 41 03 : Appearance - Heart Rate Sensor: Heart Rate Belt
02 01 04 : Flags - BR/EDR Not Supported
0b 09 4e 6f 72 64 69 63 5f 48 52 4d : Complete Local Name - "Nordic_HRM"
Advertisingしているデータは、こんなのだった。
LE Bluetooth Device Addressを確認しよう。
CSS_v5.pdfによると、LE Bluetooth Device Addressのサイズは7byteで、6byteはCore_V4.2のVol.3, Part B, Section1.3と同じ。残りは、bit0がRandom Device AddressかPublic Device Addressか。
まず、最後のデータは01なので、これはRandom Device Address。
では、残りのデバイスアドレスをどう並べるか。Section 1.3だけを見ても、エンディアンなどは書いてない。でも、48bitって書いてあるので、何も考えずにリトルエンディアンにすればいいんじゃないかな。
ならば「cd:25:6a:b8:7d:9a」。
AdvAと一致するな。
暗号化に関することなど書かれているかと思ったが、NFCのデータにはそんな要素はなさそうだ。
結局、今回もペアリングのことはわからないままだった。
AndroidでOOBのペアリングができないというわけでは無く(PaSoRi RC-S390で試した)、NFCでのペアリングができないだけのような気がする。
私が「動いている」と思っていたのも、単にNFCタッチによってAdvertising開始して、アプリがConnectしただけのようだし。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。