・NDEF Tag には 0 個以上の NDEF Messages が含まれる
・通常は NDEF Tag に含まれる NDEF Message は 1個
・NDEF Message には複数の NDEF Records が含まれる
* NdefTag の fields は Tag を読んだときにセットされる immutable data だが、このクラスから帰ってくる配列は clone ではないため、modify しないように気をつけること
NDEF Tag - NDEF Message
|
+ NDEF Message - NDEF Record
... |
+ NDEF Record
|
...
・NDEF Record には TNF, type, ID, flag, payload が含まれる
・payload の長さが 0xff 未満の時 short record という
■ TNF
・3 bit = 0x00 - 0x07
・0x00 : TNF_EMPTY
Empty
(type, ID, paylaod は空でなければならない)
・0x01 : TNF_WELL_KNOWN
NFC Forum well-known type [NFC RTD]
(type field は RTD type name format を使う
(RTD_TEXT, RTD_URI など))
・0x02 : TNF_MIME_MEDIA
Media-type as defined in RFC 2046 [RFC 2046]
(type field は RFC 2046 で定義された
media type BNF construct 形式の値を含む)
・0x03 : TNF_ABSOLUTE_URI
Absolute URI as defined in RFC 3986 [RFC 3986]
(RFC 3986 で定義された absolute-URI
BNF construct 形式の値を含む)
・0x04 : TNF_EXTERNAL_TYPE
NFC Forum external type [NFC RTD]
(type field は RTD 外部名定義に従った値を含む、
RTD_TEXT や RTD_URI をこのTNFと使うべきではない)
・0x05 : TNF_UNKNOWN
Unknown
("application/octet-scream" MIME type のようなもの、
payload はNDEF Message にエンコードされていない)
・0x06 : TNF_UNCHANGED
Unchanged
(payload は chunked NDEF Record の中間または最終の chunk、
payload type は最初の chunk で指定され、続く chunks は
TNF_UNCHANGED で type field が空でなければならない。
それ以外の場面で TNF_UNCHANGED を使ってはならない)
・0x07 : TNF_RESERVED
Reserved
(Reserved TNF type、NFC Forum NDEF Specification v1.0 は
この TNF を TNF_UNKNOWN として処理することを推奨している)
■ type
・0 - 255 bytes
・空の場合もある
・0x54 : RTD_TEXT
("T" TNF_WELL_KNOWN と一緒に使う)
・0x55 : RTD_URI
("U" TNF_WELL_KNOWN と一緒に使う)
・{0x53, 0x70} : RTD_SMART_POSTER
("Sp" TNF_WELL_KNOWN と一緒に使う)
・{0x61, 0x63} : RTD_ALTERNATIVE_CARRIER
("ac" TNF_WELL_KNOWN と一緒に使う)
・{0x48, 0x63} : RTD_HANDOVER_CARRIER
("Hc" TNF_WELL_KNOWN と一緒に使う)
・{0x48, 0x72} : RTD_HANDOVER_REQUEST
("Hr" TNF_WELL_KNOWN と一緒に使う)
・{0x48, 0x73} : RTD_HANDOVER_SELECT
("Hs" TNF_WELL_KNOWN と一緒に使う)
■ ID
・0 - 255 bytes
・空の場合もある
■ payload
・< 2^32 -1 bytes
・空の場合もある
■ flag
・5 bit
・b4 : MB flag (最初の record のとき 1)
・b3 : ME flag (最後の record のとき 1)
・b2 : CF flag
・b1 : SR flag (short record のとき 1)
・b0 : IL flag (id length (id) が提供される場合 1,
提供されない場合は ID Length field と
ID field は省略される)
Record Layout 10 byte
b7 b6 b5 b4 b3 b2 b1 b0
| flag | TNF |
| type length |
| payload length 3 |
| payload length 2 |
| payload length 1 |
| payload length 0 |
| id length |
| type |
| id |
| payload |
* NDEF short record
・SR flag が 1
・the PAYLOAD_LENGTH field は 8 byte
・payloads or chunks は 255 byte まで
* NDEF record chunk
・pull payload の 一部
・NDEF record は full payload よりも payload の chunk を含むことが多い
・chunked payload の最後の record chunk 以外は CF flag が 1
・中間と最後の chunked record の TYPE_LENGTH と IL fields は 0x06 (unchanged) でなければならない
・PAYLOAD_LENGTH が 0 かそれ以外かにかかわらず、TYPE fields は entire chunked payload の type でなければならない
* NDEF chunked payload
・Application data は異なる NDEF record で運ばれるの複数の chunk に分けられる
・最後の record を除いて CF flag は 1
・single NDEF record に入らない大規模な entity 向け
・payload size が予め決まっていない動的に生成されるコンテンツの転送向け
・コンテンツの多重送信やストリーミングをサポートすることではない
* The payload type
・コンテンツ部分のタイプ
・URIs [RFC 3986]
・MIME media type constructs [RFC 2046]
・image/png
・image/jpeg
・message/http
・application/xml; charset=“utf-16" など
・NFC-specific type format
・文字コードは US-ASCII
* The payload identifier
・付加的な識別子
・URI 用に応じた識別子や、絶対的な識別子がある
・他の payload との cross-reference 用 URI linking technology をサポートできる
* NDEF Encapsulation Constructs
・NDEF message で運ばれる NDEF records に数に制限はない
・NDEF message を直接ネストすることはできない
・NDEF record 内に Full NDEF message としてネストすることは可能
このコメントは投稿者によって削除されました。
返信削除はじめまして。
返信削除NDEFの調べ事をしてたどりつきました。
NDEF short recordですが、PAYLOAD_LENGTHは"single octet"なので、1byteかと思われます。
flagのb4~b0は、b7~b3の方がわかりやすいかな、と思いました。