ひどく眠たいので、違うことを書くかもしれんが許しておくれ。
Android NDEF Push Protocol Specification
Version : 1 2011-02-22
2. Overview :
NDEF Push Protocol (NPP) はLLCPの上に載っかるシンプルなプロトコルで、用途は別デバイスへNDEFメッセージをPUSHするためのもので、client→serverの方向。
NPPをサポートするデバイスは、以下のようにあるべし。
- [MUST]常にNPPサーバを立ち上げておく
- [MAY]NDEFメッセージがPUSH可能なら、NPPクライアントを起動させる
こうすることで、NPPデバイス間で双方向のNDEF交換ができる。
(サーバ実装は必須で、クライアント実装はおまかせってこと?)
3. Data Format
ヘッダとNDEFエントリーから構成されている。
・・・でもヘッダにNDEFエントリーが入っているから、正確にはヘッダだけか。
バージョン
メジャーバージョンとマイナーバージョンがあって、今はメジャー0、マイナー1。
ヘッダの"Protocol version"はそれぞれ4bitで、0x01となる。
NDEFエントリー
このバージョンではNDEFエントリーは1つだけサポートする。
Action code
このバージョンでは0x01固定。
0x01の意味は「NDEFメッセージはpassive tagを読んだかのように処理されねばならない」だ。
(ひとりごと:相手からPUSHされたのではなく、自分でPULLしにいったかのようにということ?)
サーバ
サーバのサービス名は"com.android.npp"であるべし。
そしてService Discovery Protocol(SDP)で検出可能であるべし。
PUSHを受信した場合、そのNDEFエントリーは受信した順番に処理せねばならない。
(原文ではAction codeのことも書いてあるが、どっちにせよ1つしかないから同じだよな?)
サーバは、クライアントから最後のNDEFエントリーを受信後に接続を切られたら、全部受信し終わったと判断することになる。
クライアント
クライアントはNDEFメッセージがあるなら、NFC-DEP接続を確立後、すぐにNPP pushを行うべし。
- サービス名"com.android.npp"でLLCPソケットにてサーバと接続
- データフォーマットに従って送信
- LLCPソケットの切断
クライアントは、NPP pushに失敗したことを表示するために各ステージで失敗をチェックするべし。
エラーによるリトライなどはない。
クライアントは、クライアントが実装しているProtocol versionに従ったAction codeを送信するべし。
(サーバに合わせたりするんじゃないよ、ってことか)
SNEPのヘーダ構成書いてほしいです。
返信削除Headerですか。
削除SNEPのことは、NFC Forumの仕様書がわかりやすかったです。
簡単に、こちらに書いています。
https://sites.google.com/site/hiro99ma/home/experiment/snepunit/snep