2012/06/23

[llcp]CONNECTで行き詰まる

息詰まる展開!だったらいいのだが、行き詰まっている・・・。
いつものことながら、NFCのLLCPについてだ。

 

LLCPのLink Activationが終わると、通信を始めることができる。
Normal Operation、という状態だ。
そのとき、UDP/IPみたいなConnectionless Transport Modeか、TCP/IPみたいなConnection-oriented Transport Modeかによって、シーケンスが変わってくる。

私はSNEPしたいので、Connection-oriented。
最初に使うPDUは、「5.6.3 Connection Establishment」によるとCONNECTだ。
さて、ここで問題だ。
誰がCONNECT PDUを送信するのか?

 

LLCPの開始は、InitiatorがATR_REQを投げ、TargetがATR_RESを返す。
この段階でLink Activationが終わると思うので、ボールはInitiatorが持っている。
だから、CONNECTはInitiatorが投げるのだろう。

だろうと思っていたのだ。
しかしnstの実装を見てみると、CONNECTが来るとLinkを切断しようとしているのだ。
InitiatorからはSYMMを送ってくるので、それに対してnstがCONNECTを投げるようになっている。
なんだ、この自信ありげなCONNECT排除の実装は!

ここまで実装されていると、仕様として何か記載があるんじゃないかと思う。
思うのだけど・・・見つけられない。
この数時間、仕様書をにらみつけているが、さっぱりわからん。
暴れてしまいそうだ。

 

SYMMが来たとしても、自分でCONNECTする、という実装ならわかるのだが、相手から来たCONNECTを断るというのは、何か確信があってのことに違いない。
こういうのを誰かに質問したくてGoogle検索から削除したのだけど・・・出てこんなぁ。