まだISO 18092を眺めている。
ようやく、DEPの章に入った。
前回、DIDとNADはPN533が自動でやってくれている、と書いた。
しかしDEPの場合は、アプリ側がやってやらなくてはならないようだ。
InDataExchange()は、パラメータをそのまま送るだけである。
受けとる方も、そのまま受けとるだけである。
このパラメータの中身が、プロトコルによって変わってくる。
私が見ているのはISO 18092のDEPで、おそらくNFC-DEPと同じ物だ。
しかし、ISO 14443にもDEPがあり、それはそれで別の物だろう。
どっちにしても、送るコマンドはInDataExchange()で済む、ということになる。
さて、ISO 18092のDEPでは、パケットの頭にPFBというデータがつく。
「Information」「ACK/NACK」「Supervisory」のどれかとなる。
そして、それらの使い方も書いてある。
基本ルールは3つ。
- Initiatorから始める。
- More Informationを受信したら、ACKを返す。
- Supervisoryはペアで使う。REQとRES。
Initiatorルール
- 不正なパケットだったら、NACKを返す。
- NACK未送信でタイムアウトしたら、attentionコマンドを送信する。
- NACK送信済みでタイムアウトしたら、NACKを再送する。
- ACKを受信したら、データの続きを送信する。
- DSL_REQに対するDSL_RESがなかったら、DSL_REQを再送するかターゲットを無視する。
Targetルール
- Targetはdata pduの代わりにRTO pduを送信できる。
- chainingを含まないパケットを受信したら、データだと認識する。
- NAKを受信したら、再送する。
- 不正なパケットを受信したら、返事はせずにそのまま待つ。
- Supervisoryのattentionコマンドを受信したら、attension応答を返す。
いくつか、新しく用語が出てきた。
chaningは、連続しているデータのこと。
1回に254byteくらいまでしか送信できないので、何度かに分けてデータを小分けにして送ることになる。
その小分けした部分を送るとき「まだ続いてますよー」という意味を持つ。
それがPFBの「Multiple Information」なのだけど、ここで「More Information」と書いてあるのが気になる。
同じものと思いたいのだが、それなら同じ用語を使ってほしい。。。
そしてRTO。
これはいきなり出てきた上に、説明がない。
どうやらこれは、ネットワークの用語みたいだ。
Receive Time Out。受信タイムアウト。
Supervisoryにtimeoutビットがあるのだが、それを指しているのだろう。
Targetにのみ、Response timeout extensionというデータが載っていた。
さて、R/Wから見ると、この仕様はかなりシンプルである。
無線上はあれこれとパケットの種別が違うのだけど、有線コマンドとしてはそんなに種類がないからだ。
LLCPは、この上に載っかることになる。
ISO 14443であっても、同じことだ。
しかし・・・LLCPの上には何を載せたらいいんだろう?
OSI参照モデルでは、ネットワーク層が来る。
TCP/IP参照モデルでは、インターネット層にあたるらしい。IP、の部分。
たぶん最後はAndroidに載せるつもりなのだろうが、どうしたものか。。。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。