2011/03/09

[pn533]InListPassiveTarget

いわゆる「ポーリング」を行うコマンドである。
名称からすると、自分でRFを出さないターゲットのリストを取得するのだろう。

ここに書いたパラメータは一例にすぎない。
optionalなものは記載しなかったので、必要なら調べよう。


コマンド

main cmd sub cmd MaxTg BrTy data...
d4 4a 01 ※1 ※2

TypeA(106kbps)

main cmd sub cmd MaxTg BrTy
d4 4a 01 00

TypeB(106kbps)

main cmd sub cmd MaxTg BrTy AFI
d4 4a 01 03 ??

FeliCa(212kbps)

main cmd sub cmd MaxTg BrTy cmd system code request code time slot
d4 4a 01 01 00 ff ff 00 00

FeliCa(424kbps)

main cmd sub cmd MaxTg BrTy cmd system code request code time slot
d4 4a 01 02 00 ff ff 00 00

212kと424kの違いはBrTyだけなので、それ以外は共通でよい。

system codeのffffは、ワイルドカード。
メイン名システムが取ってこれる。
request codeの値によっては、レスポンスでシステムコードが取ってこれる。
といっても、全部が取ってこれるわけではない。
ほしければ、FeliCaコマンドを発行する必要がある。
タイムスロットは00固定でよかろう。


レスポンス

main cmd sub cmd NbTg data...
d5 4b nn ※2

nnは検出したターゲット数。
00のときは、data以降はない。
うまくいけば、01のはず。

TypeA(106kbps)

main res sub res NbTg Tg SENS_RES SEL_RES NFCID LEN NFCID1 ATS[]
d5 4b 01 01 xx yy zz mm pp qq rr ss ...

ここでNFCID1と書いたが、ここのサイズは何種類かある。
SENS_RESからわかるが、LENも取得できるからまあいいだろう。
4byte, 7byte, 10byte。4byteはUniqueではなくなったという。

TypeB(106kbps)

main res sub res NbTg Tg ATQB res ATTRIB_RES LEN ATTRIB_RES[]
d5 4b 01 01 [12byte] xx ...

よく知らん。持ってない。

FeliCa(212k/424kbps)

main res sub res NbTg Tg POL_RES LEN res NFCID2 Pad
d5 4b 01 01 xx 01 [8byte] [8byte]

NFCID2は、いわゆるIDm。PadはPMm。
コマンドを投げるときにシステムコードを要求すると、メインのシステムコードも返ってくる。

基本的にFeliCaにコマンドを投げる場合は、まず相手のシステムコードをInListPassiveTargetで投げておくのが無難である。


追記1

InListPassiveTargetというコマンドにまとめられているが、行っている内容は種別によって異なる。
種別というのは、TypeAとかBとかだ。

こういうR/Wに投げたコマンドは、R/Wがエアプロトコルに変換してターゲットに投げる。
ここも、例えばPOL_REQなどに変換されているのだ。
POL_REQのパラメータが、InListPassiveTargetのパラメータと一致している。
なので、詳しいことが知りたければJIS X5211を見るのがよかろう。

0 件のコメント:

コメントを投稿

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

注: コメントを投稿できるのは、このブログのメンバーだけです。