うちのSensorTagがAdvertisingしているところをBlueZのhcitoolでスキャンすると、こう出てくる。
pi@raspberrypi ~ $ sudo hcitool lescan
LE Scan ...
34:B1:F7:D4:FA:33 (unknown)
34:B1:F7:D4:FA:33 (unknown)
34:B1:F7:D4:FA:33 SensorTag
34:B1:F7:D4:FA:33 (unknown)
34:B1:F7:D4:FA:33 (unknown)
「(unknown)」はなんだろう?
TIのBLEモニタで見ると、こうなっていた。
SensorTagがADV_INDがいくつか送信し、それをhcitoolが読んだらADV_SCAN_REQし、SensorTagがADV_SCAN_RSPを返す、という流れだろう。
ADV_INDのAdvDataと、ADV_SCAN_RSPのScanRspDataのデータ構造は同じで、「PDU長、AD Type、AD Data」が複数あるだけだ(Core_v4.2.pdf Vol.3, Part C 11:"Advertising and Scan Response Data Format")。
AD Typeの値がどういう意味なのかは、Core_v4.2にもCSS_v5にもなく、ネット上だけのようだ(たぶん)。
ネット上にあるのはAD Typeの値が何というデータタイプ名なのかが書いてあるだけで、そのデータタイプ名がどういう値を持っているのかはCSS_v5を見ないとわからない。
PDFに載っていてもおかしくないと思うんだけどなぁ・・・。
ADV_INDで投げているのは、こういうデータ。
02 : データ長
01 : <<Flags>>
05 : "LE Limited Discoverable Mode", "BR/EDR Not Supported"
ADV_SCAN_RSPで返しているのは、こういうデータ。
0A : データ長
09 : <<Complete Local Name>>
xx : "SensorTag"05 : データ長
12 : <<Slave Connection Interval Range>>
xx : connInterval_min = 100msec, connInterval_max = 1000msec02 : データ長
0A : <<Tx Power Level>>
00 : 0x00
hcitoolが(unknown)としているのは、hcitool.cのeir_parse_name()。
深く追わないけど、ADV_INDを拾って解析したけど、Local Nameのデータが入ってないから(unknown)と出力しただけだろう。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。