まだ続いている、このネタ。
いい加減終わらせたいのだが、自分が納得するまではやらんと。
前々回はNFC、前回はISO 18092。
そして今回は、PN533のドキュメントで見ていこう。
まず、整理しよう。
「Active」という考え方が出てくるのは、P2Pのときだけのはず。
ターゲットがカードであれば、自分でRFを作ることができないからだ。
「俺のデータを読め」というカードはなく、もしそういうことをやるならDEPになる、と思う。
そうすると、自分でRFを出せる=イニシエータ、になってしまう。
しかしP2Pは、イニシエータとターゲット間のHalf-duplexだ。
イニシエータとイニシエータのP2Pは、ないはず。
ということは、起動時にイニシエータ、ターゲットでそれぞれ起動し、イニシエータがターゲットに「お前がActiveになれよ」と命令するしかないのではなかろうか。
その線でドキュメントを見ていこう。
PN533によると、ホストから見るとActiveもPassiveも使うコマンドは同じとのこと。
RC-S620/Sはわからんが、同じ動きをすると考えておこう。
では、InJumpForDEPのパラメータにあるPassive/Activeは何を意味しているのだ?
このコマンド自体、自分がイニシエータであることを認めている。
イニシエータがDEPとして初めて使うコマンドが、これなのだ。
p.82から説明が載っていた。
ACTIVE MODE
- Activeと通信速度を設定
- ATR_REQにNFCID3iとGiを載せて送信。
- ATR_RESの受信。NFCID3tと属性Tgを覚える。
- ATR_RESの中身はホストにも渡す
PASSIVE MODE
こっちは、106kbpsと212/424kbpsで違うみたい。
if(106kbps) {
- ターゲットを1つ選ぶ(SENS_REQ, SDD_REQ, SEL_REQ)
- 後で使うためにNFCID1tを保存
- ATR_REQにNFCID3iとGiを載せて送信。
} else if(212kbps || 424kbps || 847kbps) {
- SDDを処理?
- POL_REQにPassiveInitiatorDataを載せて送信。
- ATR_REQにNFCID3iとGiを載せて送信。
}
- ATR_RES受信に成功した場合、そのターゲットはTPEだ。
NFCID3tと属性Tgを覚える。
※どっちのmodeにせよ、ターゲットをアクティベートする前にホストでコマンドを中断したら、RFもOFFになる。
「RF出せ」みたいなのは見当たらなかったな。
シーケンスだけ見ると、Activeの方が少なくて済むし、Passiveは普通のカードみたいにポーリングしてから始める、みたいなところしか違いがわからなかった。
このあたりは、18092にも同じようなことが書かれていたように思う(あんまり読んでないけど)。
いろいろとドキュメントを眺めてきたが、ActiveだのPassiveだのは、取り決めの問題だと思った。
「送信側はPassiveにしてね」とか、その程度。
実装する方からすると、Activeに対応するのは面倒だから、Passiveだけがいいなどとなるのかな。
だって、Passiveならカードとも同じなはずだし。
さて、そこがどうあるべきかは、LLCPドキュメントにはなかったと思う。
ということは、Digital ProtocolかActivityか。。。
Activityドキュメントはあんがい重要であることを昨日知ったばかりだ。
読まねば・・・。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。