2011/02/11

[nfc]NFCでデータ交換するまでに

LLCPしてみよう!とドキュメントを読んでいた。

読み進めていってようやくわかったのだが、LLCP仕様書を読んだだけではデータ交換できないことがわかった。
LLCP仕様書で定義しているのはOSIモデルでいうところのデータリンク層のうち、IEEE802.2にあたるLLC副層についてのみ定義されていると思われるのだ。
なぜ「思われる」なのかというと、IEEE802.2を読んでないから。。。


私の理解では、LLCP仕様書に書かれているのは、これこれこういう種類のPDU(Protocol Data Unit : やりとりするデータの塊みたいなもの)を用意して、このPDUにはこういうデータが、このPDUにはこんなデータがあるので上手にやりましょうね、という感じ。

PDUタイプのIとUIに、ユーザが送りたいようなデータをひっつけられるようだ。
で、このPDUはどうやって送るの?


PDUを送るのは、PHY層になる。
PHYは「NFC Forum Digital Protocols」とあるので、それを読む。
ISO-DEPとNFC-DEP。
この2つのプロトコルを使えばいいようである。

ISO-DEPは、Type-4A, 4B用。
NFC-DEPは、NFC-A, NFC-F用。

ISO-DEPについてはあまり書かれていない。
これは、ISO/IEC 14443を参照しろということのようだ。

NFC-DEPについては書いてあることが多いが、基本的にISO/IEC 18092を参照しろということらしい。
なので、JIS X5211を見てみた。
パケットの説明についてはDigital Protocolにも同じようなことが書かれている。
違いは、JIS X5211にはシーケンス的なものが書かれていること。
これがないと、まったく何もできない。
(前に書いたけど、WUP_REQなんかはNFC-DEPに書かれてなかったけど、いいんかいな?)

ただ・・・この文書だけでデータ交換するのは厳しい。
X5211に書いてあるのは無線プロトコルなので、これをRC-S620/Sのコマンドに置き換えなくてはならない。
ここはまた、PN533のコマンドが使えるのか見ていくしかなさそうだ。

さて、ここまでで下回りはだいたい見なくてはならない範囲がわかったと思う。
ではでは、一体なんのデータを送ればいいの?


ここで、NDEFが出てくる。
NFC Data Exchange Format。
なんとなくカード上のメモリに書き込んでおくときのフォーマットと思い込んでいたのだが、データ交換するときの基本構造になっているのだ。
まだ読んでないけど、アプリ層的な位置づけになるのかな。


そんなわけで、私が「LLCPする」といっていたのは、「NFC-DEPを使ってLLCPを実現し、NDEFデータをやりとりする」ということになりそうだ。

これ、ほんとにやるのー?ってくらい、大変そうな香りがしている。
Android2.3.3になってandroid.nfc.techってのができたから、そこにあわせたりしないと・・・。

と思って見たら、サポートされてるのはISO-DEPやん!
NFC-DEPじゃないんだ。。。
ここら辺は、海外の携帯電話がそうなってるからなんだろうなぁ。。。

0 件のコメント:

コメントを投稿

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

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