いつものことだが、マニアックな話だ。
Nexus7が来て、うちでもSNEPの動作が確認できるようになった。
送信(PUT)の方は、できる。
そうなると、SNEPサーバ側になってPUTを受けとる方もやりたいではないか。
PUTするときは、こんなシーケンス(site)だ。
それを受けとる方になるなら、こういうことになるだろう。
単に左右が逆になっただけだ。
そこまではよかった。
PaSoRiと向かい合わせて、Nexus7をタッチするとPDUでCONNECTが来ることもわかった。
しかし、CONNECTと一緒にくるSSAP(Source Service Access Point)が、0x20だったのだ。
SAP(Service Access Point)は、「HTTPだったら80」みたいなものと同じような扱いだ(と思っている)。
SAPの値によって、やりたいことが決まるのだ。
SSAPは、送信元のSAP。DSAPもあって、これは送信先のSAP。
PDUのCONNECTは、SSAPとDSAPを指定することになっているので、両方来る。
SAPの値は、0x00~0x0Fまでが「Well-known」になっていて、固定だ。
SNEPは0x04。
だから、私も「SSAP=0x04、DSAP=0x04」を期待していたのだ。
だが、やってきたのは「SSAP=0x20、DSAP=0x04」。
DSAP、つまり私に対しては、SNEPを要求している。
では、0x20は?
これは、「local LLC as the result of an upper layer service request」ってなってる。
0x20~0x3Fが、その値。
local LLCは、well-known LLCではない、という意味のlocalか。
それに続く「上位層のサービス要求の結果」は、何がいいたいのか。。。
0x00~0x0Fと、0x20~0x3Fは上記の要領だが、その間の0x10~0x1Fもある。
これは、名前検索(SDP)を使って割り当てる、ということらしい。
で?
よくわからんので、試すことにした。
Androidが先生なわけじゃないから、あまり好きではないのだが、わからんのだから仕方が無い。
- SSAPが0x20~0x3Fのときは、PDU CCを返す
これは、いいとしよう。
CCにもSSAPとDSAPがいるので、その値が今回のポイントになる。
- DSAPが0x04になっているので、SSAPも0x04で返す
- SSAPが0x20になっているので、DSAPも0x20で返す
試した結果、前者はSYMMをやり返すだけになってしまったが、後者はI PDUを送り返してきた。
つまり「あんたにはSNEPでやってほしいけど、他の番号でやりとりしようや」ということなのかな。
これは、Nexus7のchromeで、このhiro99ma blogを表示したままタッチしたときのI PDUだ。
D/[analyzePdu() 1259] [D:0x20/S:0x20]
D/[analyzeInfo() 1427] PDU_I(NS:0 / NR:0))
D/[analyzeInfo() 1437] [I]10 SNEP version(1.0)
D/[analyzeInfo() 1437] [I]02 SNEP Put Request
D/[analyzeInfo() 1437] [I]00 Length [0]
D/[analyzeInfo() 1437] [I]00 [1]
D/[analyzeInfo() 1437] [I]00 [2]
D/[analyzeInfo() 1437] [I]1a [3]
D/[analyzeInfo() 1437] [I]d1 SR=1, TNF=WKS, MB=1, ME=1
D/[analyzeInfo() 1437] [I]01 RecordType長
D/[analyzeInfo() 1437] [I]16 Payload長
D/[analyzeInfo() 1437] [I]55 U(URI)
D/[analyzeInfo() 1437] [I]03 http://
D/[analyzeInfo() 1437] [I]68 h
D/[analyzeInfo() 1437] [I]69 i
D/[analyzeInfo() 1437] [I]72 r
D/[analyzeInfo() 1437] [I]6f o
D/[analyzeInfo() 1437] [I]39 9
D/[analyzeInfo() 1437] [I]39 9
D/[analyzeInfo() 1437] [I]6d m
D/[analyzeInfo() 1437] [I]61 a
D/[analyzeInfo() 1437] [I]2e .
D/[analyzeInfo() 1437] [I]62 b
D/[analyzeInfo() 1437] [I]6c l
D/[analyzeInfo() 1437] [I]6f o
D/[analyzeInfo() 1437] [I]67 g
D/[analyzeInfo() 1437] [I]73 s
D/[analyzeInfo() 1437] [I]70 p
D/[analyzeInfo() 1437] [I]6f o
D/[analyzeInfo() 1437] [I]74 t
D/[analyzeInfo() 1437] [I]2e .
D/[analyzeInfo() 1437] [I]6a j
D/[analyzeInfo() 1437] [I]70 p
D/[analyzeInfo() 1437] [I]2f /
いいのか・・・な?
どうも、LLCPについてはNFC Forumのドキュメントを読んでもよくわからんなぁ。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。