2011/06/25

[nfc]ISO-DEPとは?

コメントをいただいたので、久しぶりにNFCの資料を眺めている。
Nexus SとPN532でDEPできるか?というもの。

Nexus Sといえば、Android 2.3.4。
Android 2.3.4といえば、IsoDep
IsoDepはISO 14443-4。
NFC Forum的にはISO-DEPもNFC-DEP、すなわちISO 18092のDEPもある。
手近に資料があるので、NFC Forumのドキュメントから見ていこう。


-- NFC Forum --

ISO-DEPは、Type 4AかType 4Bタグを使用する。
Type 1は、NFC-A。でもCRC_B。
Type 2も、NFC-A。こっちはCRC_A。
Type-3は、NFC-F。あれ、Listen Modeはoptionalなんだ。。。
Type-4Aは、NFC-Aで、Listen Modeはoptional。
Type-4Bは、NFC-Bで、Listen Modeはoptional。

今までR/W周りをやってきてわかったのは、R/Wコマンド1発でいろいろとパケットをやりとりしていること。
それと、パケットの中身もうまいこと作ってくれていること。
CRCやDIDなんかは、上位層は気にしなくてよかったからな。
なので、RFパケットのところはあまり深く見なくても済む。


-- ISO 14443-4 --

ネットで、ISO 14443-4ドキュメントが出てきた。
いいんだろうか。。。
詳細な説明は見ない。それは前述した通りだ。
ただ、用語は把握しておいた方がよい。
DEP、という言葉は使われていないのだ。
「Half-duplex block transmission」とか「chaining mechanism」とか。
そういった言葉がデータ交換周りで使われている。

これを基礎知識として、PN533のドキュメントを読んでみよう。


-- PN533 --

ここでは「ISO/IEC14443-4 chaining mechanism」と「DEP chaining mechanism」という言葉が出てきている。
chainingというのは、大きいデータを複数パケットに分割するやり方、みたいなものだと把握している。
なので、これは送信した後の話だ。
送信するパケット自体の話は、そのシーケンスを見るとよい。

ISO14443-4 chaining mechanismのシーケンス例として、PN533(Initiator)とISO 14443-4 PICC間のものが描かれている。
PICCはProximity IC Cardのことだが、おそらくTargetと同じ意味だろう。
InitiatorがInListPassiveTargetでポーリングすると、相手からSEL_REQの応答SEL_RESとして「ISO14443-4 compliant」が返ってくるとなっている。

では、SEL_RESを見てみよう。
NFC Forumのドキュメントを見ると、SEL_RESのbit7, 6で判断できるようだ(bit8~1)。
・00 : Type2 Tag
・01 : Type 4A Tag
・10 : NFC-DEP
・11 : Type 4A TagとNFC-DEP
つまり、bit6=1であればISO-DEPが可能ということになる。
このSEL_RESは、ISO18092のものを拡張してある。こちらはbit7をチェックするだけになっている。

シーケンスの続きでは、InListPassiveTargetのあとはInDataExchangeになっている。
では、とInDataExchangeの詳細を読むと、ああ、説明が全部書いてあった。
SetParametersも一緒にやってやらんといかんかも。


そんなわけで、R/Wから見たISO-DEPは、
  • PN533ではInDataExchangeでDEP Initiator側になれるはず
  • Initiatorになるなら、InListPassiveTargetでSEL_RESを見るとよい
  • TgInitAsTargetでDEP Target側にもなれるはず
というところでしょうかね。

2 件のコメント:

  1. 先日コメントした者です。

    丁寧な説明、本当にありがとうございます。
    この記事がなければ行き詰まっていたところでした。
    setparameters
    TgInitAsTarget
    TgGetData
    TgSetData
    のコマンド列でNexus Sが反応しました。
    InDataExchangeもやってみようかと思います。

    返信削除
  2. 役だったようで何よりです。
    R/Wのプロトコルは、失敗しても応答がないだけで理由がわかりづらいですよね。

    返信削除

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