2015/05/10

汝の名はBlueZ - (9) : hcitoolの(unknown)

うちの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モニタで見ると、こうなっていた。

image

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 = 1000msec

02 : データ長
0A : <<Tx Power Level>>
00 : 0x00

 

hcitoolが(unknown)としているのは、hcitool.cのeir_parse_name()。
深く追わないけど、ADV_INDを拾って解析したけど、Local Nameのデータが入ってないから(unknown)と出力しただけだろう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。