3256 lines
129 KiB
Markdown
3256 lines
129 KiB
Markdown
# NFC Data Exchange Format (NDEF)
|
||
|
||
## Technical Specification
|
||
|
||
## NFC Forum
|
||
|
||
#### TM
|
||
|
||
## NDEF 1.
|
||
|
||
## NFCForum-TS-NDEF_1.
|
||
|
||
## 2006-07-
|
||
|
||
|
||
##### RESTRICTIONS ON USE
|
||
|
||
This specification is copyright © 2005-2006 by the NFC Forum, and was made available pursuant to a
|
||
license agreement entered into between the recipient (Licensee) and NFC Forum, Inc. (Licensor) and may
|
||
be used only by Licensee, and in compliance with the terms of that license agreement (License). If you are
|
||
not the Licensee, you are not authorized to make any use of this specification. However, you may obtain a
|
||
copy at the following page of Licensor's Website: [http://www.nfc-forum.org/resources/spec_license](http://www.nfc-forum.org/resources/spec_license) after
|
||
entering into and agreeing to such license terms as Licensor is then requiring. On the date that this
|
||
specification was downloaded by Licensee, those terms were as follows:
|
||
|
||
1. LICENSE GRANT.
|
||
|
||
Licensor hereby grants Licensee the right, without charge, to copy (for internal purposes only) and share
|
||
the Specification with Licensee's members, employees and consultants (as appropriate). This license grant
|
||
does not include the right to sublicense, modify or create derivative works based upon the Specification.
|
||
|
||
2. NO WARRANTIES.
|
||
|
||
THE SPECIFICATION IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, COMPLETENESS AND
|
||
NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL LICENSOR, ITS
|
||
MEMBERS OR ITS CONTRIBUTORS BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL,
|
||
INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
|
||
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
|
||
THE USE OR PERFORMANCE OF THE SPECIFICATION.
|
||
|
||
3. THIRD PARTY RIGHTS.
|
||
|
||
Without limiting the generality of Section 2 above, LICENSOR ASSUMES NO RESPONSIBILITY TO
|
||
COMPILE, CONFIRM, UPDATE OR MAKE PUBLIC ANY THIRD PARTY ASSERTIONS OF
|
||
PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS THAT MIGHT NOW OR IN THE
|
||
FUTURE BE INFRINGED BY AN IMPLEMENTATION OF THE SPECIFICATION IN ITS CURRENT,
|
||
OR IN ANY FUTURE FORM. IF ANY SUCH RIGHTS ARE DESCRIBED ON THE SPECIFICATION,
|
||
LICENSOR TAKES NO POSITION AS TO THE VALIDITY OR INVALIDITY OF SUCH
|
||
ASSERTIONS, OR THAT ALL SUCH ASSERTIONS THAT HAVE OR MAY BE MADE ARE SO
|
||
LISTED.
|
||
|
||
4. TERMINATION OF LICENSE.
|
||
|
||
In the event of a breach of this Agreement by Licensee or any of its employees or members, Licensor shall
|
||
give Licensee written notice and an opportunity to cure. If the breach is not cured within thirty (30) days
|
||
after written notice, or if the breach is of a nature that cannot be cured, then Licensor may immediately or
|
||
thereafter terminate the licenses granted in this Agreement.
|
||
|
||
5. MISCELLANEOUS.
|
||
|
||
All notices required under this Agreement shall be in writing, and shall be deemed effective five days from
|
||
deposit in the mails. Notices and correspondence to the NFC Forum address as it appears below. This
|
||
Agreement shall be construed and interpreted under the internal laws of the United States and the
|
||
Commonwealth of Massachusetts, without giving effect to its principles of conflict of law.
|
||
|
||
NFC Forum, Inc.
|
||
401 Edgewater Place, Suite 600
|
||
Wakefield, MA, USA 01880
|
||
|
||
|
||
## Contents
|
||
|
||
- 1 Overview........................................................................................................ Contents
|
||
- 1.1 Objectives...........................................................................................................................
|
||
- 1.1.1 Design Goals.........................................................................................................
|
||
- 1.1.2 Anti-Goals.............................................................................................................
|
||
- 1.2 References..........................................................................................................................
|
||
- 1.3 Administration....................................................................................................................
|
||
- 1.4 Special Word Usage...........................................................................................................
|
||
- 1.5 Name and Logo Usage.......................................................................................................
|
||
- 1.6 Intellectual Property...........................................................................................................
|
||
- 1.7 Glossary..............................................................................................................................
|
||
- 2 NDEF Mechanisms........................................................................................
|
||
- 2.1 Introduction........................................................................................................................
|
||
- 2.2 Intended Usage...................................................................................................................
|
||
- 2.3 NDEF Encapsulation Constructs........................................................................................
|
||
- 2.3.1 Message.................................................................................................................
|
||
- 2.3.2 Record...................................................................................................................
|
||
- 2.3.3 Record Chunks
|
||
- 2.4 NDEF Payload Description................................................................................................
|
||
- 2.4.1 Payload Length......................................................................................................
|
||
- 2.4.2 Payload Type.........................................................................................................
|
||
- 2.4.3 Payload Identification..........................................................................................
|
||
- 2.5 NDEF Mechanisms Test Requirements...........................................................................
|
||
- 3 The NDEF Specification..............................................................................
|
||
- 3.1 Data Transmission Order..................................................................................................
|
||
- 3.2 Record Layout..................................................................................................................
|
||
- 3.2.1 MB (Message Begin)...........................................................................................
|
||
- 3.2.2 ME (Message End)..............................................................................................
|
||
- 3.2.3 CF (Chunk Flag)..................................................................................................
|
||
- 3.2.4 SR (Short Record)...............................................................................................
|
||
- 3.2.5 IL (ID_LENGTH field is present).......................................................................
|
||
- 3.2.6 TNF (Type Name Format)..................................................................................
|
||
- 3.2.7 TYPE_LENGTH.................................................................................................
|
||
- 3.2.8 ID_LENGTH.......................................................................................................
|
||
- 3.2.9 PAYLOAD_LENGTH........................................................................................
|
||
- 3.2.10 TYPE...................................................................................................................
|
||
- 3.2.11 ID.........................................................................................................................
|
||
- 3.2.12 PAYLOAD..........................................................................................................
|
||
- 3.3 THE NDEF Specification Test Requirements..................................................................
|
||
- 4 Special Considerations...............................................................................
|
||
- 4.1 Internationalization...........................................................................................................
|
||
- 4.2 Security.............................................................................................................................
|
||
- 4.3 Maximum Field Sizes.......................................................................................................
|
||
- 4.4 Use of URIs in NDEF......................................................................................................
|
||
- 4.5 Special Consideration Test Requirements........................................................................
|
||
- A. Revision History..........................................................................................
|
||
|
||
|
||
Figures
|
||
|
||
## Figures
|
||
|
||
#### Figure 1. Example of an NDEF Message with a Set of Records..................................................... 8
|
||
|
||
#### Figure 2. NDEF Octet Ordering.................................................................................................... 13
|
||
|
||
#### Figure 3. NDEF Record Layout.................................................................................................... 14
|
||
|
||
#### Figure 4. NDEF Short-Record Layout (SR=1).............................................................................. 15
|
||
|
||
## Tables
|
||
|
||
#### Table 1. TNF Field Values............................................................................................................ 16
|
||
|
||
#### Table 2. Revision History.............................................................................................................. 21
|
||
|
||
## Test Requirements
|
||
|
||
#### Test Requirements 1. NDEF Mechanisms Test Requirements..................................................... 11
|
||
|
||
#### Test Requirements 2. The NDEF Specification Test Requirements............................................. 18
|
||
|
||
#### Test Requirements 3. Special Consideration Test Requirements.................................................. 20
|
||
|
||
NFC Data Exchange Format (NDEF) Page ii
|
||
|
||
|
||
Overview
|
||
|
||
## 1 Overview
|
||
|
||
The International Standard ISO/IEC 18092, Near Field Communication – Interface and Protocol
|
||
(NFCIP-1), defines an interface and protocol for simple wireless interconnection of closely
|
||
coupled devices operating at 13.56 MHz.
|
||
|
||
The NFC Data Exchange Format (NDEF) specification defines a message encapsulation format to
|
||
exchange information, e.g. between an NFC Forum Device and another NFC Forum Device or an
|
||
NFC Forum Tag.
|
||
|
||
NDEF is a lightweight, binary message format that can be used to encapsulate one or more
|
||
application-defined payloads of arbitrary type and size into a single message construct. Each
|
||
payload is described by a type, a length, and an optional identifier.
|
||
|
||
Type identifiers may be URIs, MIME media types, or NFC-specific types. This latter format
|
||
permits compact identification of well-known types commonly used in NFC Forum applications,
|
||
or self-allocation of a name space for organizations that wish to use it for their own NFC-specific
|
||
purposes.
|
||
|
||
The payload length is an unsigned integer indicating the number of octets in the payload. A
|
||
compact, short-record layout is provided for very small payloads.
|
||
|
||
The optional payload identifier enables association of multiple payloads and cross-referencing
|
||
between them.
|
||
|
||
NDEF payloads may include nested NDEF messages or chains of linked chunks of length
|
||
unknown at the time the data is generated.
|
||
|
||
NDEF is strictly a message format, which provides no concept of a connection or of a logical
|
||
circuit, nor does it address head-of-line problems.
|
||
|
||
### 1.1 Objectives...........................................................................................................................
|
||
|
||
The NFC Data Exchange Format (NDEF) specification is a common data format for NFC Forum
|
||
Devices and NFC Forum Tags.
|
||
|
||
The NFC Data Exchange Format specification defines the NDEF data structure format as well as
|
||
rules to construct a valid NDEF message as an ordered and unbroken collection of NDEF records.
|
||
Furthermore, it defines the mechanism for specifying the types of application data encapsulated in
|
||
NDEF records.
|
||
|
||
The NDEF specification defines only the data structure format to exchange application or service
|
||
specific data in an interoperable way, and it does not define any record types in detail—record
|
||
types are defined in separate specifications.
|
||
|
||
This NDEF specification assumes a reliable underlying protocol and therefore this specification
|
||
does not specify the data exchange between two NFC Forum Devices or the data exchange
|
||
between an NFC Forum Device and an NFC Forum Tag. Readers are encouraged to review the
|
||
NFCIP-1 transport protocol [ISO/IEC 18092].
|
||
|
||
An example of the use of NDEF is when two NFC Forum Devices are in proximity, an NDEF
|
||
message is exchanged over the NFC Forum LLCP protocol. When an NFC Forum Device is in
|
||
proximity of an NFC Forum Tag, an NDEF message is retrieved from the NFC Forum Tag by
|
||
means of the NFC Forum Tag protocols. The data format of the NDEF message is the same in
|
||
these two cases so that an NFC Forum Device may process the NDEF information independent of
|
||
the type of device or tag with which it is communicating.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 1
|
||
|
||
|
||
Overview
|
||
|
||
Because of the large number of existing message encapsulation formats, record marking
|
||
protocols, and multiplexing protocols, it is best to be explicit about the design goals of NDEF
|
||
and, in particular, about what is outside the scope of NDEF.
|
||
|
||
#### 1.1.1 Design Goals.........................................................................................................
|
||
|
||
The design goal of NDEF is to provide an efficient and simple message format that can
|
||
accommodate the following:
|
||
|
||
1. Encapsulating arbitrary documents and entities, including encrypted data, XML documents,
|
||
XML fragments, image data like GIF and JPEG files, etc.
|
||
2. Encapsulating documents and entities initially of unknown size. This capability can be used
|
||
to encapsulate dynamically generated content or very large entities as a series of chunks.
|
||
3. Aggregating multiple documents and entities that are logically associated in some manner
|
||
into a single message. For example, NDEF can be used to encapsulate an NFC-specific
|
||
message and a set of attachments of standardized types referenced from that NFC-specific
|
||
message.
|
||
4. Compact encapsulation of small payloads should be accommodated without introducing
|
||
unnecessary complexity to parsers.
|
||
|
||
To achieve efficiency and simplicity, the mechanisms provided by this specification have been
|
||
deliberately limited to serve these purposes. NDEF has not been designed as a general message
|
||
description or document format such as MIME or XML. Instead, NFC applications can take
|
||
advantage of such formats by encapsulating them in NDEF messages.
|
||
|
||
#### 1.1.2 Anti-Goals.............................................................................................................
|
||
|
||
The following list identifies items outside the scope of NDEF:
|
||
|
||
1. NDEF does not make any assumptions about the types of payloads that are carried within
|
||
NDEF messages or about the message exchange patterns implied by such messages.
|
||
2. NDEF does not in any way introduce the notion of a connection or a logical circuit (virtual or
|
||
otherwise).
|
||
3. NDEF does not attempt to deal with head-of-line blocking problems that might occur when
|
||
using stream-oriented protocols like TCP.
|
||
|
||
### 1.2 References..........................................................................................................................
|
||
|
||
[ISO/IEC 18092] ISO/IEC 18092, “Information Technology- Telecommunications and
|
||
information exchange between systems- Near Field Communication -
|
||
Interface and Protocol (NFCIP-1)”.
|
||
|
||
[NFC RTD] “NFC Record Type Definition (RTD) Specification”, NFC Forum, 2006.
|
||
|
||
[RFC 1700] Reynolds, J. and J. Postel, “Assigned Numbers”, STD 2, RFC 1700,
|
||
October 1994.
|
||
|
||
[RFC 1900] B. Carpenter, Y. Rekhter, “Renumbering Needs Work”, RFC 1900, IAB,
|
||
February 1996.
|
||
|
||
[RFC 2046] N. Freed, N. Borenstein, “Multipurpose Internet Mail Extensions
|
||
(MIME) Part Two: Media Types” RFC 2046, Innosoft, First Virtual,
|
||
November 1996.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 2
|
||
|
||
|
||
Overview
|
||
|
||
[RFC 2047] K. Moore, “MIME (Multipurpose Internet Mail Extensions) Part Three:
|
||
Message Header Extensions for Non-ASCII Text”, RFC 2047,
|
||
University of Tennessee, November 1996.
|
||
|
||
[RFC 2048] N. Freed, J. Klensin, J. Postel, “Multipurpose Internet Mail Extensions
|
||
(MIME) Part Four: Registration Procedures”, RFC 2048, Innosoft, MCI,
|
||
ISI, November 1996.
|
||
|
||
[RFC 2119] S. Bradner, “Key words for use in RFCs to Indicate Requirement
|
||
Levels”, RFC 2119, Harvard University, March 1997.
|
||
[http://www.apps.ietf.org/rfc/rfc2119.html](http://www.apps.ietf.org/rfc/rfc2119.html)
|
||
|
||
[RFC 2616] R. Fielding, J. Gettys, J. C. Mogul, H. F. Nielsen, T. Berners-Lee,
|
||
“Hypertext Transfer Protocol -- HTTP/1.1”, RFC 2616, U.C. Irvine,
|
||
DEC W3C/MIT, DEC, W3C/MIT, W3C/MIT, January 1997.
|
||
|
||
[RFC 2717] R. Petke, I. King, “Registration Procedures for URL Scheme Names”,
|
||
BCP: 35, RFC 2717, UUNET Technologies, Microsoft Corporation,
|
||
November 1999.
|
||
|
||
[RFC 2718] L. Masinter, H. Alvestrand, D. Zigmond, R. Petke, “Guidelines for new
|
||
URL Schemes”, RFC 2718, Xerox Corporation, Maxware, Pirsenteret,
|
||
WebTV Networks, Inc., UUNET Technologies, November 1999.
|
||
|
||
[RFC 2732] R. Hinden, B. Carpenter, L. Masinter, “Format for Literal IPv
|
||
Addresses in URL's”, RFC 2732, Nokia, IBM, AT&T, December 1999.
|
||
|
||
[RFC 3023] M. Murata, S. St. Laurent, D. Kohn, “XML Media Types” RFC 3023,
|
||
IBM Tokyo Research Laboratory, simonstl.com, Skymoon Ventures,
|
||
January 2001.
|
||
|
||
[RFC 3986] T. Berners-Lee, R. Fielding, L. Masinter, “Uniform Resource Identifiers
|
||
(URI): Generic Syntax”, RFC 3986, MIT/LCS, U.C. Irvine, Xerox
|
||
Corporation, January 2005. [http://www.apps.ietf.org/rfc/rfc3986.html](http://www.apps.ietf.org/rfc/rfc3986.html)
|
||
|
||
[URI SCHEME] List of Uniform Resource Identifier (URI) schemes registered by IANA
|
||
is available at:http://www.iana.org/assignments/uri-schemes
|
||
|
||
NFC Data Exchange Format (NDEF) Page 3
|
||
|
||
|
||
Overview
|
||
|
||
### 1.3 Administration....................................................................................................................
|
||
|
||
The NFC Forum Data Exchange Format Specification is an open specification supported by the
|
||
Near Field Communication Forum, Inc., located at:
|
||
|
||
```
|
||
401 Edgewater Place, Suite 600
|
||
Wakefield, MA, 01880
|
||
Tel.: +1 781-876-
|
||
Fax: +1 781-224-
|
||
http://www.nfc-forum.org/
|
||
```
|
||
The Devices technical working group maintains this specification.
|
||
|
||
### 1.4 Special Word Usage...........................................................................................................
|
||
|
||
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
|
||
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this
|
||
document are to be interpreted as described in RFC 2119.
|
||
|
||
### 1.5 Name and Logo Usage.......................................................................................................
|
||
|
||
The Near Field Communication Forum’s policy regarding the use of the trademarks NFC Forum
|
||
and the NFC Forum logo is as follows:
|
||
|
||
- Any company MAY claim compatibility with NFC Forum specifications, whether a member
|
||
of the NFC Forum or not.
|
||
- Permission to use the NFC Forum logos is automatically granted to designated members only
|
||
as stipulated on the most recent Membership Privileges document, during the period of time
|
||
for which their membership dues are paid.
|
||
- Member’s distributors and sales representatives MAY use the NFC Forum logo in promoting
|
||
member’s products sold under the name of the member.
|
||
- The logo SHALL be printed in black or in color as illustrated on the Logo Page that is
|
||
available from the NFC Forum at the address above. The aspect ratio of the logo SHALL be
|
||
maintained, but the size MAY be varied. Nothing MAY be added to or deleted from the
|
||
logos.
|
||
- Since the NFC Forum name is a trademark of the Near Field Communication Forum, the
|
||
following statement SHALL be included in all published literature and advertising material in
|
||
which the name or logo appears:
|
||
NFC Forum and the NFC Forum logo are trademarks of the Near Field Communication
|
||
Forum.
|
||
|
||
### 1.6 Intellectual Property...........................................................................................................
|
||
|
||
The NFC Data Exchange Format (NDEF) Specification conforms to the Intellectual Property
|
||
guidelines specified in the NFC Forum's Intellectual Property Right Policy, as approved on
|
||
November 9, 2004 and outlined in the NFC Forum Rules of Procedures, as approved on
|
||
December 17, 2004.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 4
|
||
|
||
|
||
Overview
|
||
|
||
### 1.7 Glossary..............................................................................................................................
|
||
|
||
NDEF application
|
||
|
||
```
|
||
The logical, higher-layer application on an NFC Forum Device using NDEF to format
|
||
information for exchange with other NFC Forum Devices or NFC Forum Tags. Also user
|
||
application or NDEF user application.
|
||
```
|
||
NDEF message
|
||
|
||
```
|
||
The basic message construct defined by this specification. An NDEF message contains
|
||
one or more NDEF records (see section 2.3.1).
|
||
```
|
||
NDEF record
|
||
|
||
```
|
||
An NDEF record contains a payload described by a type, a length, and an optional
|
||
identifier (see section 2.3.2).
|
||
```
|
||
NDEF short record
|
||
|
||
```
|
||
An NDEF record with the SR flag set to 1; the PAYLOAD_LENGTH field in short
|
||
records is a single octet allowing payloads or chunks of up to 255 bytes to be carried (see
|
||
section 3.2.4).
|
||
```
|
||
NDEF record chunk
|
||
|
||
```
|
||
An NDEF record that contains a chunk of a payload rather than a full payload (see
|
||
section 2.3.3). Each record chunk carrying a portion of the chunked payload, except the
|
||
last record of each chunked payload, has its CF flag set to 1.
|
||
```
|
||
NDEF payload
|
||
|
||
```
|
||
The application data carried within an NDEF record.
|
||
```
|
||
NDEF chunked payload
|
||
|
||
```
|
||
Application data that has been partitioned into multiple chunks each carried in a separate
|
||
NDEF record, where each of these records except the last has the CF flag set to 1. This
|
||
facility can be used to carry dynamically generated content for which the payload size is
|
||
not known in advance or very large entities that don't fit into a single NDEF record.
|
||
Chunked payloads are not intended to support multiplexing or streaming of content and
|
||
such use is deprecated. (See section 2.3.3.)
|
||
```
|
||
NDEF payload length
|
||
|
||
```
|
||
The size of the payload in a single NDEF record indicated as the number of octets (see
|
||
section 2.4.1).
|
||
```
|
||
NDEF payload type
|
||
|
||
```
|
||
An identifier that indicates the type of the payload. This specification supports URIs
|
||
[RFC 3986], MIME media type constructs [RFC 2616], as well as an NFC-specific
|
||
record type as type identifiers (see section 2.4.2).
|
||
```
|
||
NDEF payload identifier
|
||
|
||
```
|
||
An optional URI that can be used to identify a payload (see section 2.4.3).
|
||
```
|
||
NDEF generator
|
||
|
||
```
|
||
An entity or module that encapsulates application-defined payloads within NDEF
|
||
messages.
|
||
```
|
||
NFC Data Exchange Format (NDEF) Page 5
|
||
|
||
|
||
Overview
|
||
|
||
NDEF parser
|
||
|
||
```
|
||
An entity or module that parses NDEF messages and hands off the payloads to an NDEF
|
||
application.
|
||
```
|
||
User Application
|
||
|
||
```
|
||
See NDEF Application.
|
||
```
|
||
NFC Data Exchange Format (NDEF) Page 6
|
||
|
||
|
||
NDEF Mechanisms
|
||
|
||
## 2 NDEF Mechanisms........................................................................................
|
||
|
||
This section describes the mechanisms used in NDEF. The specific syntax for these mechanisms
|
||
is defined in Section 3.
|
||
|
||
### 2.1 Introduction........................................................................................................................
|
||
|
||
NFC Forum Data Exchange Format is a lightweight binary message format designed to
|
||
encapsulate one or more application-defined payloads into a single message construct. An NDEF
|
||
message contains one or more NDEF records, each carrying a payload of arbitrary type and up to
|
||
232 -1 octets in size. Records can be chained together to support larger payloads. An NDEF record
|
||
carries three parameters for describing its payload: the payload length, the payload type, and an
|
||
optional payload identifier. The purpose of these parameters is as follows:
|
||
|
||
The payload length
|
||
|
||
```
|
||
The payload length indicates the number of octets in the payload (see section 2.4.1). By
|
||
providing the payload length within the first 8 octets of a record, efficient record boundary
|
||
detection is possible.
|
||
```
|
||
The payload type
|
||
|
||
```
|
||
The NDEF payload type identifier indicates the type of the payload. NDEF supports URIs
|
||
[RFC 3986], MIME media type constructs [RFC 2046], and an NFC-specific type format as
|
||
type identifiers (see section 2.4.2). By indicating the type of a payload, it is possible to
|
||
dispatch the payload to the appropriate user application.
|
||
```
|
||
The payload identifier
|
||
|
||
```
|
||
A payload may be given an optional identifier in the form of an absolute or relative URI (see
|
||
section 2.4.3). The use of an identifier enables payloads that support URI linking
|
||
technologies to cross-reference other payloads.
|
||
```
|
||
### 2.2 Intended Usage...................................................................................................................
|
||
|
||
The intended usage of NDEF is as follows: A user application wants to encapsulate one or more
|
||
related documents into a single NDEF message. For example, this can be an application-specific
|
||
message along with a set of attachments, each of standardized type. The NDEF generator
|
||
encapsulates each document in NDEF records as payload or chunked payload, indicating the type
|
||
and length of the payload along with an optional identifier. The NDEF records are then put
|
||
together to form a single NDEF message. The NDEF message is transmitted across an NFC link
|
||
to another NFC Forum Device where they are received and parsed, or as an intermediate step, the
|
||
message is written to an NFC Forum Tag. An NFC Forum Device brought close to this NFC
|
||
Forum Tag will read the NDEF message from this tag and hand it over to the NDEF parser. The
|
||
NDEF parser deconstructs the NDEF message and hands the payloads to a (potentially different)
|
||
user application. Each NDEF message MUST be sent or received in its entirety.
|
||
|
||
NDEF records can encapsulate documents of any type. It is possible to carry MIME messages in
|
||
NDEF records by using a media type such as “message/rfc822”. An NDEF message can be
|
||
encapsulated in an NDEF record by using an NFC-specific predefined type (see [NFC RTD]).
|
||
|
||
It is important to note that although MIME entities are supported, there are no assumptions in
|
||
NDEF that a record payload is MIME; NDEF makes no assumption concerning the types of the
|
||
payloads carried in an NDEF message. Said differently, an NDEF parser need not inspect the
|
||
NDEF record type nor peer inside an NDEF record in order to parse the NDEF message.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 7
|
||
|
||
|
||
NDEF Mechanisms
|
||
|
||
NDEF provides no support for error handling. It is up to the NDEF parser to determine the
|
||
implications of receiving a malformed NDEF message or an NDEF message containing a field
|
||
length beyond its processing capabilities. It is the responsibility of the user applications involved
|
||
to provide any additional functionality such as QoS that they may need as part of the overall
|
||
system in which they participate.
|
||
|
||
### 2.3 NDEF Encapsulation Constructs........................................................................................
|
||
|
||
#### 2.3.1 Message.................................................................................................................
|
||
|
||
An NDEF message is composed of one or more NDEF records. The first record in a message is
|
||
marked with the MB (Message Begin) flag set and the last record in the message is marked with
|
||
the ME (Message End) flag set (see sections 3.2.1 and 3.2.2). The minimum message length is
|
||
one record which is achieved by setting both the MB and the ME flag in the same record. Note
|
||
that at least two record chunks are required in order to encode a chunked payload (see section
|
||
2.3.3). The maximum number of NDEF records that can be carried in an NDEF message is
|
||
unbounded.
|
||
|
||
NDEF messages MUST NOT overlap; that is, the MB and the ME flags MUST NOT be used to
|
||
nest NDEF messages. NDEF messages MAY be nested by carrying a full NDEF message as a
|
||
payload within an NDEF record.
|
||
|
||
```
|
||
NDEF Message
|
||
R 1 MB=1 ... Rr ... Rs ... Rt ME=
|
||
```
|
||
```
|
||
Figure 1. Example of an NDEF Message with a Set of Records
|
||
```
|
||
The message head is to the left and the tail to the right, with the logical record indices t > s > r >
|
||
|
||
1. The MB (Message Begin) flag is set in the first record (index 1) and the ME (Message End)
|
||
flag is set in the last record (index t).
|
||
|
||
Actual NDEF records do not carry an index number; the ordering is implicitly given by the order
|
||
in which the records are serialized. For example, if records are repackaged by an intermediate
|
||
application, then that application is responsible for ensuring that the order of records is preserved.
|
||
|
||
#### 2.3.2 Record...................................................................................................................
|
||
|
||
A record is the unit for carrying a payload within an NDEF message. Each payload is described
|
||
by its own set of parameters (see section 2.4).
|
||
|
||
#### 2.3.3 Record Chunks
|
||
|
||
A record chunk carries a chunk of a payload. Chunked payloads can be used to partition
|
||
dynamically generated content or very large entities into multiple subsequent record chunks
|
||
serialized within the same NDEF message.
|
||
|
||
Chunking is not a mechanism for introducing multiplexing or data streaming into NDEF and it
|
||
MUST NOT be used for those purposes. It is a mechanism to reduce the need for outbound
|
||
buffering on the generating side. This is similar to the message chunking mechanism defined in
|
||
HTTP/1.1 [RFC 2616].
|
||
|
||
An NDEF message can contain zero or more chunked payloads. Each chunked payload is
|
||
encoded as an initial record chunk followed by zero or more middle record chunks and finally by
|
||
|
||
NFC Data Exchange Format (NDEF) Page 8
|
||
|
||
|
||
NDEF Mechanisms
|
||
|
||
a terminating record chunk. Each record chunk is encoded as an NDEF record using the
|
||
following encoding rules:
|
||
|
||
- The initial record chunk is an NDEF record with the CF (Chunk Flag) flag set (see section
|
||
3.2.3). The type of the entire chunked payload MUST be indicated in the TYPE field
|
||
regardless of whether the PAYLOAD_LENGTH field value is zero or not. The ID field MAY
|
||
be used to carry an identifier of the entire chunked payload. The PAYLOAD_LENGTH field
|
||
of this initial record indicates the size of the data carried in the PAYLOAD field of the initial
|
||
record only, not the entire payload size (see section 2.4.1).
|
||
- Each middle record chunk is an NDEF record with the CF flag set indicating that this record
|
||
chunk contains the next chunk of data of the same type and with the same identifier as the
|
||
initial record chunk. The value of the TYPE_LENGTH and the IL fields MUST be zero and
|
||
the TNF (Type Name Format) field value MUST be 0x06 (Unchanged) (see section 3.2.6).
|
||
The PAYLOAD_LENGTH field indicates the size of the data carried in the PAYLOAD field
|
||
of this single middle record only (see section 2.4.1).
|
||
- The terminating record chunk is an NDEF record with the CF flag cleared, indicating that
|
||
this record chunk contains the last chunk of data of the same type and with the same identifier
|
||
as the initial record chunk. As with the middle record chunks, the value of the
|
||
TYPE_LENGTH and the IL fields MUST be zero and the TNF (Type Name Format) field
|
||
value MUST be 0x06 (Unchanged) (see section 3.2.6). The PAYLOAD_LENGTH field
|
||
indicates the size of the data carried in the PAYLOAD field of this terminating record chunk
|
||
(see section 2.4.1).
|
||
|
||
A chunked payload MUST be entirely encapsulated within a single NDEF message. That is, a
|
||
chunked payload MUST NOT span multiple NDEF messages. As a consequence, neither an
|
||
initial nor a middle record chunk can have the ME (Message End) flag set.
|
||
|
||
### 2.4 NDEF Payload Description................................................................................................
|
||
|
||
Each record contains information about the payload carried within it. This section introduces the
|
||
mechanisms by which these payloads are described.
|
||
|
||
#### 2.4.1 Payload Length......................................................................................................
|
||
|
||
Regardless of the relationship of a record to other records, the payload length always indicates the
|
||
length of the payload encapsulated in this record. The length of the payload is indicated in the
|
||
PAYLOAD_LENGTH field. The PAYLOAD_LENGTH field is one octet for short records and
|
||
four octets for normal records. Short records are indicated by setting the SR bit flag to a value of 1
|
||
(see section 3.2.4). Zero is a valid payload length.
|
||
|
||
#### 2.4.2 Payload Type.........................................................................................................
|
||
|
||
The payload type of a record indicates the kind of data being carried in the payload of that record.
|
||
This may be used to guide the processing of the payload at the discretion of the user application.
|
||
The type of the first record, by convention, SHOULD provide the processing context not only for
|
||
the first record but for the whole NDEF message. Additional context for processing the message
|
||
MAY be provided, for example, by the link layer service access point (LSAP) or transport service
|
||
port (e.g. TCP, UDP, etc) at which the message was received and by other communication
|
||
parameters.
|
||
|
||
It is important to emphasize that NDEF mandates no specific processing model for NDEF
|
||
messages. The usage of the payload types is entirely at the discretion of the user application. The
|
||
|
||
NFC Data Exchange Format (NDEF) Page 9
|
||
|
||
|
||
NDEF Mechanisms
|
||
|
||
comments regarding usage above should be taken as guidelines for building processing
|
||
conventions, including mappings of higher level application semantics onto NDEF.
|
||
|
||
The format of the TYPE field value is indicated using the TNF (Type Name Format) field (see
|
||
section 3.2.6). This specification supports TYPE field values in the form of NFC Forum well-
|
||
known types, NFC Forum external types, absolute URIs [RFC 3986], and MIME media-type
|
||
constructs. The first allows for NFC Forum specified payload types supporting NFC Forum
|
||
reference applications [NFC RTD]; URIs provide for decentralized control of the value space;
|
||
media types allow NDEF to take advantage of the media type value space maintained by IANA
|
||
[RFC 1700].
|
||
|
||
The media type registration process is outlined in RFC 2048 [RFC 2048]. Use of non-registered
|
||
media types is discouraged. The URI scheme registration process is described in RFC 2717 [RFC
|
||
2717]. It is RECOMMENDED that only well-known URI schemes registered by IANA be used
|
||
(see [URI SCHEME] for a current list).
|
||
|
||
URIs can be used for message types that are defined by URIs. Records that carry a payload with
|
||
an XML-based message type MAY use the XML namespace identifier of the root element as the
|
||
TYPE field value. A SOAP/1.1 message, for example, may be represented by the URI
|
||
|
||
```
|
||
http://schemas.xmlsoap.org/soap/envelope/
|
||
```
|
||
NOTE: Encoding of URI characters which fall outside the US-ASCII range is left to the NDEF
|
||
application. Therefore, an NDEF parser must not assume any particular encoding for this field.
|
||
See [RFC 3986] and the specifications of particular protocol schemes (e.g. HTTP, URN, etc.) for
|
||
more information on parsing of URIs and character encoding requirements for non-ASCII
|
||
characters.
|
||
|
||
Records that carry a payload with an existing, registered media type SHOULD carry a TYPE
|
||
field value of that media type. The TYPE field indicates the type of the payload; it does NOT
|
||
refer to a MIME message that contains an entity of the given type. For example, the media type
|
||
|
||
```
|
||
image/jpeg
|
||
```
|
||
indicates that the payload is an image in JPEG format using JFIF encoding as defined by RFC
|
||
2046 [RFC 2046]. Similarly, the media type
|
||
|
||
```
|
||
message/http
|
||
```
|
||
indicates that the payload is an HTTP message as defined by RFC 2616 [RFC 2616]. The value
|
||
|
||
```
|
||
application/xml; charset=“utf-16”
|
||
```
|
||
indicates that the payload is an XML document as defined by RFC 3023 [RFC3023].
|
||
|
||
#### 2.4.3 Payload Identification..........................................................................................
|
||
|
||
The optional payload identifier allows user applications to identify the payload carried within an
|
||
NDEF record. By providing a payload identifier, it becomes possible for other payloads
|
||
supporting URI-based linking technologies to refer to that payload. NDEF does not mandate any
|
||
particular linking mechanism or format but leaves this to the user application to define in the
|
||
language it prefers.
|
||
|
||
It is important that payload identifiers are maintained so that references to those payloads are not
|
||
broken. If records are repackaged, for example, by an intermediate application, then that
|
||
application is responsible for ensuring that the linked relationship between identified payloads is
|
||
preserved.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 10
|
||
|
||
|
||
NDEF Mechanisms
|
||
|
||
### 2.5 NDEF Mechanisms Test Requirements...........................................................................
|
||
|
||
This section identifies the testable requirements of the NDEF mechanisms defined in chapter 2.
|
||
The purpose of this section and the table below is to guide the development of conformance tests
|
||
and does not supersede the normative requirements presented in the other sections of this chapter.
|
||
|
||
```
|
||
Test Requirements 1. NDEF Mechanisms Test Requirements
|
||
```
|
||
Message requirements
|
||
|
||
Each NDEF message MUST be exchanged in its entirety.
|
||
|
||
The first record in a message is marked with the MB (Message Begin) flag set.
|
||
|
||
The last record in the message is marked with the ME (Message End) flag set.
|
||
|
||
NDEF messages MUST NOT overlap; that is, the MB and the ME flags MUST NOT be used to
|
||
nest NDEF messages.
|
||
|
||
Record chunk requirements
|
||
|
||
Each chunked payload is encoded as an initial record chunk followed by 0 or more middle record
|
||
chunks and finally by a terminating record chunk.
|
||
|
||
The initial record chunk is an NDEF record with the CF (Chunk Flag) flag set.
|
||
|
||
The type of the entire chunked payload MUST be indicated in the TYPE field of the initial record
|
||
chunk.
|
||
|
||
The PAYLOAD_LENGTH field of the initial record indicates the size of the data carried in the
|
||
PAYLOAD field of the initial record only, not the entire payload size.
|
||
|
||
Each middle record chunk is an NDEF record with the CF flag set.
|
||
|
||
For each middle record chunk the value of the TYPE_LENGTH and the IL fields MUST be 0.
|
||
|
||
For each middle record chunk the TNF (Type Name Format) field value MUST be 0x
|
||
(Unchanged).
|
||
|
||
For each middle record chunk, the PAYLOAD_LENGTH field indicates the size of the data
|
||
carried in the PAYLOAD field of this single record only.
|
||
|
||
The terminating record chunk is an NDEF record with the CF flag cleared.
|
||
|
||
For the terminating record chunk, the value of the TYPE_LENGTH and the IL fields MUST be 0.
|
||
|
||
For the terminating record chunk, the TNF (Type Name Format) field value MUST be 0x
|
||
(Unchanged).
|
||
|
||
For the terminating record chunk, the PAYLOAD_LENGTH field indicates the size of the data
|
||
carried in the PAYLOAD field of this record only.
|
||
|
||
A chunked payload MUST be entirely encapsulated within a single NDEF message.
|
||
|
||
An initial record chunk MUST NOT have the ME (Message End) flag set.
|
||
|
||
A middle record chunk MUST NOT have the ME (Message End) flag set.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 11
|
||
|
||
|
||
NDEF Mechanisms
|
||
|
||
NDEF payload requirements
|
||
|
||
The PAYLOAD_LENGTH field is four octets for normal records.
|
||
|
||
The PAYLOAD_LENGTH field is one octet for records with an SR (Short Record) bit flag value
|
||
of 1.
|
||
|
||
The PAYLOAD_LENGTH field of a short record MUST have a value between 0 and 255.
|
||
|
||
The PAYLOAD_LENGTH field of a normal record MUST have a value between 0 and 2^32 -1.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 12
|
||
|
||
|
||
The NDEF Specification
|
||
|
||
## 3 The NDEF Specification..............................................................................
|
||
|
||
### 3.1 Data Transmission Order..................................................................................................
|
||
|
||
The order of transmission of the NDEF record described in this document is resolved to the octet
|
||
level. For diagrams showing a group of octets, the order of transmission of those octets is first left
|
||
to right and then top to bottom, as they are read in English. For example, in the diagram in Figure
|
||
2, the octets are transmitted in the order they are numbered.
|
||
|
||
+--+--+--+--+--+--+--+--+
|
||
| Octet 1 |
|
||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||
| Octet 2 | Octet 3 |
|
||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||
| Octet 4 |
|
||
+--+--+--+--+--+--+--+--+
|
||
| Octet 5 |
|
||
+--+--+--+--+--+--+--+--+
|
||
|
||
```
|
||
Figure 2. NDEF Octet Ordering
|
||
```
|
||
Whenever an octet represents a numeric quantity, the leftmost bit in the diagram is the high order
|
||
or most significant bit. For each multi-octet field representing a numeric quantity defined by
|
||
NDEF, the leftmost bit of the whole field is the most significant bit. Such quantities are
|
||
transmitted in a big-endian manner with the most significant octet transmitted first.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 13
|
||
|
||
|
||
The NDEF Specification
|
||
|
||
### 3.2 Record Layout..................................................................................................................
|
||
|
||
NDEF records are variable length records with a common format illustrated in the figure below.
|
||
In the following sections, the individual record fields are described in more detail.
|
||
|
||
```
|
||
7 6 5 4 3 2 1 0
|
||
```
|
||
```
|
||
MB ME CF SR IL TNF
|
||
```
|
||
```
|
||
TYPE LENGTH
|
||
```
|
||
```
|
||
PAYLOAD LENGTH 3
|
||
```
|
||
```
|
||
PAYLOAD LENGTH 2
|
||
```
|
||
```
|
||
PAYLOAD LENGTH 1
|
||
```
|
||
```
|
||
PAYLOAD LENGTH 0
|
||
```
|
||
```
|
||
ID LENGTH
|
||
```
|
||
```
|
||
TYPE
|
||
```
|
||
```
|
||
ID
|
||
```
|
||
```
|
||
PAYLOAD
|
||
```
|
||
```
|
||
Figure 3. NDEF Record Layout
|
||
```
|
||
#### 3.2.1 MB (Message Begin)...........................................................................................
|
||
|
||
The MB flag is a 1-bit field that when set indicates the start of an NDEF message (see section
|
||
2.3.1).
|
||
|
||
#### 3.2.2 ME (Message End)..............................................................................................
|
||
|
||
The ME flag is a 1-bit field that when set indicates the end of an NDEF message (see section
|
||
2.3.1). Note, that in case of a chunked payload, the ME flag is set only in the terminating record
|
||
chunk of that chunked payload (see section 2.3.3).
|
||
|
||
#### 3.2.3 CF (Chunk Flag)..................................................................................................
|
||
|
||
The CF flag is a 1-bit field indicating that this is either the first record chunk or a middle record
|
||
chunk of a chunked payload (see section 2.3.3 for a description of how to encode a chunked
|
||
payload).
|
||
|
||
NFC Data Exchange Format (NDEF) Page 14
|
||
|
||
|
||
The NDEF Specification
|
||
|
||
#### 3.2.4 SR (Short Record)...............................................................................................
|
||
|
||
The SR flag is a 1-bit field indicating, if set, that the PAYLOAD_LENGTH field is a single octet.
|
||
This short record layout is intended for compact encapsulation of small payloads which will fit
|
||
within PAYLOAD fields of size ranging between 0 to 255 octets.
|
||
|
||
```
|
||
7 6 5 4 3 2 1 0
|
||
```
|
||
```
|
||
MB ME CF 1 IL TNF
|
||
```
|
||
```
|
||
TYPE LENGTH
|
||
```
|
||
```
|
||
PAYLOAD LENGTH
|
||
```
|
||
```
|
||
ID LENGTH
|
||
```
|
||
```
|
||
TYPE
|
||
```
|
||
```
|
||
ID
|
||
```
|
||
```
|
||
PAYLOAD
|
||
```
|
||
```
|
||
Figure 4. NDEF Short-Record Layout (SR=1)
|
||
```
|
||
While it is tempting for implementers to choose one or the other record layout exclusively for a
|
||
given application, NDEF parsers MUST accept both normal and short record layouts. NDEF
|
||
generators MAY generate either record layout as they deem appropriate. A single NDEF message
|
||
MAY contain both normal and short records.
|
||
|
||
#### 3.2.5 IL (ID_LENGTH field is present).......................................................................
|
||
|
||
The IL flag is a 1-bit field indicating, if set, that the ID_LENGTH field is present in the header as
|
||
a single octet. If the IL flag is zero, the ID_LENGTH field is omitted from the record header and
|
||
the ID field is also omitted from the record.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 15
|
||
|
||
|
||
The NDEF Specification
|
||
|
||
#### 3.2.6 TNF (Type Name Format)..................................................................................
|
||
|
||
The TNF field value indicates the structure of the value of the TYPE field (see section 2.4.2 for a
|
||
description of the TYPE field and section 4 for a description of internationalization issues related
|
||
to the TYPE field). The TNF field is a 3-bit field with values defined in the table below:
|
||
|
||
```
|
||
Table 1. TNF Field Values
|
||
```
|
||
```
|
||
Type Name Format Value
|
||
```
|
||
```
|
||
Empty 0x
|
||
NFC Forum well-known type [NFC RTD] 0x
|
||
```
|
||
```
|
||
Media-type as defined in RFC 2046 [RFC 2046] 0x
|
||
Absolute URI as defined in RFC 3986 [RFC 3986] 0x
|
||
NFC Forum external type [NFC RTD] 0x
|
||
```
|
||
```
|
||
Unknown 0x
|
||
Unchanged (see section 2.3.3) 0x
|
||
```
|
||
```
|
||
Reserved 0x
|
||
```
|
||
The value 0x00 (Empty) indicates that there is no type or payload associated with this record.
|
||
When used, the TYPE_LENGTH, ID_LENGTH, and PAYLOAD_LENGTH fields MUST be
|
||
zero and the TYPE, ID, and PAYLOAD fields are thus omitted from the record. This TNF value
|
||
can be used whenever an empty record is needed; for example, to terminate an NDEF message in
|
||
cases where there is no payload defined by the user application.
|
||
|
||
The value 0x01 (NFC Forum well-known type) indicates that the TYPE field contains a value that
|
||
follows the RTD type name format defined in the NFC Forum RTD specification [NFC RTD].
|
||
|
||
The value 0x02 (media-type) indicates that the TYPE field contains a value that follows the
|
||
media-type BNF construct defined by RFC 2046 [RFC 2046].
|
||
|
||
The value 0x03 (absolute-URI) indicates that the TYPE field contains a value that follows the
|
||
absolute-URI BNF construct defined by RFC 3986 [RFC 3986].
|
||
|
||
The value 0x04 (NFC Forum external type) indicates that the TYPE field contains a value that
|
||
follows the type name format defined in [NFC RTD] for external type names.
|
||
|
||
The value 0x05 (Unknown) SHOULD be used to indicate that the type of the payload is
|
||
unknown. This is similar to the “application/octet-stream” media type defined by MIME [RFC
|
||
2046]. When used, the TYPE_LENGTH field MUST be zero and thus the TYPE field is omitted
|
||
from the NDEF record. Regarding implementation, it is RECOMMENDED that an NDEF parser
|
||
receiving an NDEF record of this type, without further context to its use, provides a mechanism
|
||
for storing but not processing the payload (see section 4.2).
|
||
|
||
The value 0x06 (Unchanged) MUST be used in all middle record chunks and the terminating
|
||
record chunk used in chunked payloads (see section 2.3.3). It MUST NOT be used in any other
|
||
record. When used, the TYPE_LENGTH field MUST be zero and thus the TYPE field is omitted
|
||
from the NDEF record.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 16
|
||
|
||
|
||
The NDEF Specification
|
||
|
||
There is no default value for the TNF field. Reserved (or unassigned) TNF field values are for
|
||
future use and MUST NOT be used. An NDEF parser that receives an NDEF record with an
|
||
unknown or unsupported TNF field value SHOULD treat it as 0x05 (Unknown).
|
||
|
||
#### 3.2.7 TYPE_LENGTH.................................................................................................
|
||
|
||
The TYPE_LENGTH field is an unsigned 8-bit integer that specifies the length in octets of the
|
||
TYPE field. The TYPE_LENGTH field is always zero for certain values of the TNF field (see
|
||
section 3.2.6).
|
||
|
||
#### 3.2.8 ID_LENGTH.......................................................................................................
|
||
|
||
The ID_LENGTH field is an unsigned 8-bit integer that specifies the length in octets of the ID
|
||
field. This field is present only if the IL flag is set to 1 in the record header. An ID_LENGTH of
|
||
zero octets is allowed and, in such cases, the ID field is omitted from the NDEF record.
|
||
|
||
#### 3.2.9 PAYLOAD_LENGTH........................................................................................
|
||
|
||
The PAYLOAD_LENGTH field is an unsigned integer that specifies the length in octets of the
|
||
PAYLOAD field (the application payload). The size of the PAYLOAD_LENGTH field is
|
||
determined by the value of the SR flag (see section 3.2.4).
|
||
|
||
If the SR flag is set, the PAYLOAD_LENGTH field is a single octet representing an 8-bit
|
||
unsigned integer.
|
||
|
||
If the SR flag is clear, the PAYLOAD_LENGTH field is four octets representing a 32-bit
|
||
unsigned integer. Transmission order of the octets is MSB-first (see section 3.1).
|
||
|
||
A payload length of 0 is allowed in which case the PAYLOAD field is omitted from the NDEF
|
||
record. Application payloads larger than 2^32 -1 octets can be accommodated by using chunked
|
||
payloads (see section 2.3.3).
|
||
|
||
#### 3.2.10 TYPE...................................................................................................................
|
||
|
||
The value of the TYPE field is an identifier describing the type of the payload (see section 2.4.2).
|
||
The value of the TYPE field MUST follow the structure, encoding, and format implied by the
|
||
value of the TNF field (see section 3.2.6).
|
||
|
||
An NDEF parser receiving an NDEF record with a TNF field value that it supports but an
|
||
unknown TYPE field value SHOULD interpret the type identifier of that record as if the TNF
|
||
field value were 0x05 (Unknown).
|
||
|
||
It is STRONGLY RECOMMENDED that the type identifier be globally unique and maintained
|
||
with stable and well-defined semantics over time.
|
||
|
||
#### 3.2.11 ID.........................................................................................................................
|
||
|
||
The value of the ID field is an identifier in the form of a URI reference [RFC 3986] (see sections
|
||
2.4.3 and 4.4). The required uniqueness of the message identifier is guaranteed by the generator.
|
||
The URI reference can be either relative or absolute; NDEF does not define a base URI which
|
||
means that user applications using relative URIs MUST provide an actual or a virtual base URI
|
||
(see [RFC 3986]).
|
||
|
||
Middle and terminating record chunks (that is, records containing other than the initial chunk of a
|
||
chunked payload; see section 2.3.3) MUST NOT have an ID field. All other records MAY have
|
||
an ID field.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 17
|
||
|
||
|
||
The NDEF Specification
|
||
|
||
#### 3.2.12 PAYLOAD..........................................................................................................
|
||
|
||
The PAYLOAD field carries the payload intended for the NDEF user application. Any internal
|
||
structure of the data carried within the PAYLOAD field is opaque to NDEF.
|
||
|
||
### 3.3 THE NDEF Specification Test Requirements..................................................................
|
||
|
||
This section identifies the testable requirements of the NDEF mechanisms defined in chapter 3.
|
||
The purpose of this section is to guide the development of conformance tests and does not
|
||
supersede the normative requirements presented in the other sections of this chapter.
|
||
|
||
```
|
||
Test Requirements 2. The NDEF Specification Test Requirements
|
||
```
|
||
Data transmission order requirements
|
||
|
||
Quantities are transmitted in a big-endian manner with the most significant octet transmitted
|
||
first.
|
||
|
||
Record layout requirements
|
||
|
||
NDEF parsers MUST accept both normal and short record layouts.
|
||
|
||
NDEF parsers MUST accept single NDEF messages composed of both normal and short
|
||
records.
|
||
|
||
If the IL flag is 1, the ID_LENGTH field MUST be present.
|
||
|
||
If the IL flag is 0, the ID_LENGTH field MUST NOT be present.
|
||
|
||
If the IL flag is 0, the ID field MUST NOT be present.
|
||
|
||
The TNF field MUST have a value between 0x00 and 0x06.
|
||
|
||
If the TNF value is 0x00, the TYPE_LENGTH, ID_LENGTH, and PAYLOAD_LENGTH
|
||
fields MUST be zero and the TYPE, ID, and PAYLOAD fields MUST be omitted from the
|
||
record.
|
||
|
||
If the TNF value is 0x05 (Unknown), the TYPE_LENGTH field MUST be 0 and the TYPE
|
||
field MUST be omitted from the NDEF record.
|
||
|
||
If the TNF value is 0x06 (Unchanged), the TYPE_LENGTH field MUST be 0 and the TYPE
|
||
field MUST be omitted from the NDEF record.
|
||
|
||
The TNF value MUST NOT be 0x07.
|
||
|
||
If the ID_LENGTH field has a value 0, the ID field MUST NOT be present.
|
||
|
||
If the SR flag is 0, the PAYLOAD_LENGTH field is four octets, representing a 32-bit
|
||
unsigned integer, and the transmission order of the octets is MSB-first.
|
||
|
||
If the SR flag is 1, the PAYLOAD_LENGTH field is a single octet representing an 8-bit
|
||
unsigned integer.
|
||
|
||
If the PAYLOAD_LENGTH field value is 0, the PAYLOAD field MUST NOT be present.
|
||
|
||
The value of the TYPE field MUST follow the structure, encoding, and format implied by the
|
||
value of the TNF field.
|
||
|
||
Middle and terminating record chunks MUST NOT have an ID field.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 18
|
||
|
||
|
||
Special Considerations
|
||
|
||
## 4 Special Considerations...............................................................................
|
||
|
||
### 4.1 Internationalization...........................................................................................................
|
||
|
||
Identifiers used in NDEF such as URIs and MIME media-type constructs may provide different
|
||
levels of support for internationalization. Implementers are referred to RFC 2718 [RFC 2718] for
|
||
internationalization considerations of URIs, RFC 2046 [RFC 2046] for internationalization
|
||
considerations of MIME media types and RFC 2047 [RFC 2047] for internationalization of
|
||
message headers (MIME).
|
||
|
||
### 4.2 Security.............................................................................................................................
|
||
|
||
Implementers should pay special attention to the security implications of any record types that
|
||
can cause the remote execution of any actions in the recipient’s environment. Before accepting
|
||
records of any type, an application should be aware of the particular security implications
|
||
associated with that type.
|
||
|
||
Security considerations for media types in general are discussed in RFC 2048 [RFC 2048] and in
|
||
the context of the “application” media types in RFC 2046 [RFC 2046].
|
||
|
||
### 4.3 Maximum Field Sizes.......................................................................................................
|
||
|
||
The size of the PAYLOAD field and the values used in the ID field and the TYPE field are
|
||
limited by the maximum size of these fields. The maximum size of the PAYLOAD field is 2^32 -1
|
||
octets in the normal NDEF record layout and 255 octets in the short record layout (see section
|
||
3.2.4). The maximum size of values in the ID and TYPE fields is 255 octets in both record
|
||
layouts.
|
||
|
||
While messages formed to these maximal record and field sizes are considered well-formed, not
|
||
all user applications will have the ability or the need to handle payload content, payload IDs, or
|
||
types identifiers of these maximal sizes. NDEF parsers that are resource-constrained MAY
|
||
choose to reject messages that are not sized to fit their specific needs.
|
||
|
||
However, NDEF parsers MUST NOT reject an NDEF message based solely on the value of the
|
||
SR flag.
|
||
|
||
### 4.4 Use of URIs in NDEF......................................................................................................
|
||
|
||
NDEF uses URIs [RFC 3986] for some identifiers. To NDEF, a URI is simply a formatted string
|
||
that identifies—via name, location, or any other characteristic—a resource.
|
||
|
||
The use of IP addresses in URIs SHOULD be avoided whenever possible (see RFC 1900 [RFC
|
||
1900]). However, when used, the literal format for IPv6 addresses in URIs as described by RFC
|
||
2732 [RFC 2732] SHOULD be supported.
|
||
|
||
NDEF does not define any equivalence rules for URIs in general as these are defined by the
|
||
individual URI schemes and by RFC 3986 [RFC 3986]. However, because of inconsistencies
|
||
with respect to some URI equivalence rules in many current URI parsers, it is RECOMMENDED
|
||
that generators of NDEF messages rely only on the most rudimentary equivalence rules defined
|
||
by RFC 3986.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 19
|
||
|
||
|
||
Special Considerations
|
||
|
||
### 4.5 Special Consideration Test Requirements........................................................................
|
||
|
||
This section identifies the testable requirements of the NDEF mechanisms defined in chapter 4.
|
||
The purpose of this section and the table below is to guide the development of conformance tests
|
||
and does not supersede the normative requirements presented in the other sections of this chapter.
|
||
|
||
```
|
||
Test Requirements 3. Special Consideration Test Requirements
|
||
```
|
||
An NDEF parser MUST NOT reject an NDEF message based solely on the value of the SR
|
||
flag.
|
||
|
||
An NDEF parser MAY reject messages that include records with TYPE, ID, or PAYLOAD
|
||
fields larger than its design limits.
|
||
|
||
NFC Data Exchange Format (NDEF) Page 20
|
||
|
||
|
||
Revision History
|
||
|
||
## A. Revision History..........................................................................................
|
||
|
||
The following table outlines the revision history of the NDEF Technical Specification.
|
||
|
||
```
|
||
Table 2. Revision History
|
||
```
|
||
Document Name Revision and
|
||
Release Date
|
||
|
||
```
|
||
Status Change notice Supersedes
|
||
```
|
||
NFCForum-TS-
|
||
NDEF_1.0
|
||
|
||
```
|
||
1.0, July 2006 Final none
|
||
```
|
||
NFC Data Exchange Format (NDEF) Page 21
|
||
|
||
|
||
# NFC Record Type Definition (RTD)
|
||
|
||
## Technical Specification
|
||
|
||
## NFC Forum
|
||
|
||
#### TM
|
||
|
||
## RTD 1.0
|
||
|
||
## NFCForum-TS-RTD_1.0
|
||
|
||
## 2006-07-24
|
||
|
||
|
||
##### RESTRICTIONS ON USE
|
||
|
||
This specification is copyright © 2005-2006 by the NFC Forum, and was made available pursuant to a
|
||
license agreement entered into between the recipient (Licensee) and NFC Forum, Inc. (Licensor) and may
|
||
be used only by Licensee, and in compliance with the terms of that license agreement (License). If you are
|
||
not the Licensee, you are not authorized to make any use of this specification. However, you may obtain a
|
||
copy at the following page of Licensor's Website: [http://www.nfc-forum.org/resources/spec_license](http://www.nfc-forum.org/resources/spec_license) after
|
||
entering into and agreeing to such license terms as Licensor is then requiring. On the date that this
|
||
specification was downloaded by Licensee, those terms were as follows:
|
||
|
||
1. LICENSE GRANT.
|
||
|
||
Licensor hereby grants Licensee the right, without charge, to copy (for internal purposes only) and share
|
||
the Specification with Licensee's members, employees and consultants (as appropriate). This license grant
|
||
does not include the right to sublicense, modify or create derivative works based upon the Specification.
|
||
|
||
2. NO WARRANTIES.
|
||
|
||
THE SPECIFICATION IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, COMPLETENESS AND
|
||
NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL LICENSOR, ITS
|
||
MEMBERS OR ITS CONTRIBUTORS BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL,
|
||
INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
|
||
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
|
||
THE USE OR PERFORMANCE OF THE SPECIFICATION.
|
||
|
||
3. THIRD PARTY RIGHTS.
|
||
|
||
Without limiting the generality of Section 2 above, LICENSOR ASSUMES NO RESPONSIBILITY TO
|
||
COMPILE, CONFIRM, UPDATE OR MAKE PUBLIC ANY THIRD PARTY ASSERTIONS OF
|
||
PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS THAT MIGHT NOW OR IN THE
|
||
FUTURE BE INFRINGED BY AN IMPLEMENTATION OF THE SPECIFICATION IN ITS CURRENT,
|
||
OR IN ANY FUTURE FORM. IF ANY SUCH RIGHTS ARE DESCRIBED ON THE SPECIFICATION,
|
||
LICENSOR TAKES NO POSITION AS TO THE VALIDITY OR INVALIDITY OF SUCH
|
||
ASSERTIONS, OR THAT ALL SUCH ASSERTIONS THAT HAVE OR MAY BE MADE ARE SO
|
||
LISTED.
|
||
|
||
4. TERMINATION OF LICENSE.
|
||
|
||
In the event of a breach of this Agreement by Licensee or any of its employees or members, Licensor shall
|
||
give Licensee written notice and an opportunity to cure. If the breach is not cured within thirty (30) days
|
||
after written notice, or if the breach is of a nature that cannot be cured, then Licensor may immediately or
|
||
thereafter terminate the licenses granted in this Agreement.
|
||
|
||
5. MISCELLANEOUS.
|
||
|
||
All notices required under this Agreement shall be in writing, and shall be deemed effective five days from
|
||
deposit in the mails. Notices and correspondence to the NFC Forum address as it appears below. This
|
||
Agreement shall be construed and interpreted under the internal laws of the United States and the
|
||
Commonwealth of Massachusetts, without giving effect to its principles of conflict of law.
|
||
|
||
NFC Forum, Inc.
|
||
401 Edgewater Place, Suite 600
|
||
Wakefield, MA, USA 01880
|
||
|
||
|
||
Contents
|
||
|
||
## Contents
|
||
|
||
#### 1 Introduction....................................................................................................1
|
||
|
||
#### 1.1 Objectives........................................................................................................................... 1
|
||
|
||
#### 1.2 Purpose ............................................................................................................................... 1
|
||
|
||
#### 1.2.1 Mission Statement and Goals................................................................................ 1
|
||
|
||
#### 1.3 References.......................................................................................................................... 2
|
||
|
||
#### 1.4 Administration.................................................................................................................... 2
|
||
|
||
#### 1.5 Special Word Usage........................................................................................................... 2
|
||
|
||
#### 1.6 Name and Logo Usage....................................................................................................... 3
|
||
|
||
#### 1.7 Intellectual Property........................................................................................................... 3
|
||
|
||
#### 1.8 Glossary.............................................................................................................................. 3
|
||
|
||
#### 2 Record Types.................................................................................................5
|
||
|
||
#### 2.1 NFC Forum Well-known Type.......................................................................................... 5
|
||
|
||
#### 2.1.1 NFC Forum Global Type...................................................................................... 5
|
||
|
||
#### 2.1.2 NFC Forum Local Type........................................................................................ 6
|
||
|
||
#### 2.2 NFC Forum External Type................................................................................................. 6
|
||
|
||
#### 2.3 Record Types Generic Requirements................................................................................. 7
|
||
|
||
#### 3 RTD Type Names...........................................................................................8
|
||
|
||
#### 3.1 Binary Encoding................................................................................................................. 9
|
||
|
||
#### 3.2 Percent Encoding in NFC Forum Types............................................................................ 9
|
||
|
||
#### 3.3 Equivalence of Record Type Names.................................................................................. 9
|
||
|
||
#### 3.4 RTD Type Names Requirements...................................................................................... 10
|
||
|
||
#### 4 Error Handling.............................................................................................11
|
||
|
||
#### 4.1 Illegal characters............................................................................................................... 11
|
||
|
||
#### 4.2 Unknown Record Types................................................................................................... 11
|
||
|
||
#### 4.3 Error Handling Requirements.......................................................................................... 11
|
||
|
||
#### A. Character Set for Record Types.................................................................12
|
||
|
||
#### B. Record Type Name Examples....................................................................13
|
||
|
||
#### C. Discussion on Associating Records.........................................................14
|
||
|
||
#### D. Revision History..........................................................................................16
|
||
|
||
## Figures
|
||
|
||
#### Figure 1. NDEF Messages (Multiple)........................................................................................... 14
|
||
|
||
#### Figure 2. NDEF Message with Metadata...................................................................................... 14
|
||
|
||
NFC Record Type Definition (RTD) Page i
|
||
|
||
|
||
Tables
|
||
|
||
## Tables
|
||
|
||
#### Table 1. Definitions......................................................................................................................... 3
|
||
|
||
#### Table 2. Acronyms.......................................................................................................................... 4
|
||
|
||
#### Table 3. ASCII Character Chart.................................................................................................... 12
|
||
|
||
#### Table 4. Translating Record Type Names into Binary Representation......................................... 13
|
||
|
||
#### Table 5. Revision History.............................................................................................................. 16
|
||
|
||
## Test Requirements
|
||
|
||
#### Test Requirements 1. Record Types Generic Requirements........................................................... 7
|
||
|
||
#### Test Requirements 2. RTD Type Names Requirements................................................................ 10
|
||
|
||
#### Test Requirements 3. Error Handling Requirements..................................................................... 11
|
||
|
||
NFC Record Type Definition (RTD) Page ii
|
||
|
||
|
||
Introduction
|
||
|
||
## 1 Introduction
|
||
|
||
The International Standard ISO/IEC 18092, Near Field Communication - Interface and Protocol
|
||
(NFCIP-1), defines an interface and protocol for simple wireless interconnection of closely
|
||
coupled devices operating at 13.56 MHz.
|
||
|
||
The NFC Data Exchange Format (NDEF) specification defines a data format to exchange
|
||
information between an NFC Forum Device and another NFC Forum Device or an NFC Forum
|
||
Tag. The information that can be exchanged by means of NDEF may describe which services an
|
||
NFC Forum Device or NFC Forum Tag offers, it may contain application or service-specific
|
||
parameters and meta-data, or it may describe capabilities of NFC Forum Devices or NFC Forum
|
||
Tags.
|
||
|
||
NDEF supports the use of standardized MIME content types and URIs to describe record content
|
||
which is specified outside of the NFC Forum. This specification describes two NFC Forum
|
||
specific types, known as “NFC Forum Well Known Types” and “NFC external types”.
|
||
|
||
### 1.1 Objectives
|
||
|
||
The NFC Data Exchange Format (NDEF) specification is a common data format for NFC Forum
|
||
Devices.
|
||
|
||
The NFC Data Exchange Format specification defines the NDEF data structure format as well as
|
||
rules to construct a valid NDEF packet as a collection of NDEF records. Furthermore, it defines
|
||
the mechanism for constructing unique NDEF record type names by different parties, including a
|
||
format for NFC Forum well-known types.
|
||
|
||
The NDEF specification defines only the data structure format to exchange application or service
|
||
specific data in an interoperable way, and it does not define any record types in detail. Specific
|
||
record types are defined in separate documents.
|
||
|
||
The first part of this specification considers the type format of the NFC Forum well-known
|
||
types—that is, the contents of an NDEF Type field when the “TNF” header field value is 0x01
|
||
(NFC Well-known Type).
|
||
|
||
The second part of this specification considers the third party extension type known as an “NFC
|
||
external type”, which is signified by the TNF header field value of 0x04.
|
||
|
||
### 1.2 Purpose
|
||
|
||
#### 1.2.1 Mission Statement and Goals
|
||
|
||
It is the mission of the NFC Forum to ensure interoperability of the NFC technology in a broad
|
||
variety of devices. The RTD specification is intended to support NFC-specific application and
|
||
service frameworks by providing a means for reservation of well-known record types, and third
|
||
party extension types.
|
||
|
||
The RTD specification provides guidelines for the specification of well-known types for inclusion
|
||
in NDEF messages exchanged between NFC Forum devices and between NFC Forum Devices
|
||
and NFC Forum Tags.
|
||
|
||
Actual type registrations are not provided in this specification but are expected to be included in
|
||
other documents.
|
||
|
||
NFC Record Type Definition (RTD) Page 1
|
||
|
||
|
||
Introduction
|
||
|
||
### 1.3 References
|
||
|
||
[ASCII] ANSI X3.4-1986, Coded Character Set 7-bit American Standard Code
|
||
for Information Interchange
|
||
|
||
[ISO/IEC 18092] Information Technology- Telecommunications and information
|
||
exchange between systems- Near Field Communication - Interface and
|
||
Protocol (NFCIP-1).
|
||
|
||
[NDEF] NFC Data Exchange Format, NFC Forum, 2006.
|
||
|
||
[NFC Best] Best Practices for NFC Forum Terminology, NFC Forum, Technical
|
||
Committee Document.
|
||
|
||
[RFC 2119] S. Bradner, “Key words for use in RFCs to Indicate Requirement
|
||
Levels”, RFC 2119, Harvard University, March 1997.
|
||
[http://www.apps.ietf.org/rfc/rfc2119.html](http://www.apps.ietf.org/rfc/rfc2119.html)
|
||
|
||
[RFC 2046] N. Freed, N. Borenstein, “Multipurpose Internet Mail Extensions
|
||
(MIME) Part Two: Media Types” RFC 2046, Innosoft, First Virtual,
|
||
November 1996.
|
||
|
||
[RFC 2141] R. Moats, “URN SYNTAX”, May 1997.
|
||
|
||
[RFC 2234] D. Crocker, P. Overell, “Augmented BNF for Syntax Specifications:
|
||
ABNF”, November 1997.
|
||
|
||
[RFC 3986] T. Berners-Lee, R. Fielding, L. Masinter, “Uniform Resource Identifiers
|
||
(URI): Generic Syntax”, RFC 3986, MIT/LCS, U.C. Irvine, Xerox
|
||
Corporation, January 2005. [http://www.apps.ietf.org/rfc/rfc3986.html](http://www.apps.ietf.org/rfc/rfc3986.html)
|
||
|
||
### 1.4 Administration
|
||
|
||
The NFC Record Type Definition (RTD) Specification is an open specification supported by the
|
||
Near Field Communication Forum, Inc., located at:
|
||
|
||
401 Edgewater Place, Suite 600
|
||
Wakefield, MA, 01880
|
||
|
||
Tel.: +1 781-876-8955
|
||
Fax: +1 781-224-1239
|
||
|
||
[http://www.nfc-forum.org](http://www.nfc-forum.org)
|
||
|
||
The Reference Applications Framework technical working group maintains this specification.
|
||
|
||
This specification has been contributed to by Microsoft, Nokia, Panasonic, Philips, and Sony.
|
||
|
||
### 1.5 Special Word Usage
|
||
|
||
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
|
||
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this
|
||
document are to be interpreted as described in RFC 2119.
|
||
|
||
NFC Record Type Definition (RTD) Page 2
|
||
|
||
|
||
Introduction
|
||
|
||
### 1.6 Name and Logo Usage
|
||
|
||
The Near Field Communication Forum’s policy regarding the use of the trademarks NFC Forum
|
||
and the NFC Forum logo is as follows:
|
||
|
||
- Any company MAY claim compatibility with NFC Forum specifications, whether a member
|
||
of the NFC Forum or not.
|
||
- Permission to use the NFC Forum logos is automatically granted to designated members only
|
||
as stipulated on the most recent Membership Privileges document, during the period of time
|
||
for which their membership dues are paid.
|
||
- Member’s distributors and sales representatives MAY use the NFC Forum logo in promoting
|
||
member’s products sold under the name of the member.
|
||
- The logo SHALL be printed in black or in color as illustrated on the Logo Page that is
|
||
available from the NFC Forum at the address above. The aspect ratio of the logo SHALL be
|
||
maintained, but the size MAY be varied. Nothing MAY be added to or deleted from the
|
||
logos.
|
||
- Since the NFC Forum name is a trademark of the Near Field Communication Forum, the
|
||
following statement SHALL be included in all published literature and advertising material in
|
||
which the name or logo appears:
|
||
NFC Forum and the NFC Forum logo are trademarks of the Near Field Communication
|
||
Forum.
|
||
|
||
### 1.7 Intellectual Property
|
||
|
||
The NFC Record Type Definition (RTD) Specification conforms to the Intellectual Property
|
||
guidelines specified in the NFC Forum's Intellectual Property Right Policy, as approved on
|
||
November 9, 2004 and outlined in the NFC Forum Rules of Procedures, as approved on
|
||
December 17, 2004.
|
||
|
||
### 1.8 Glossary
|
||
|
||
This section defines all relevant terms and acronyms used in this specification.
|
||
|
||
```
|
||
Table 1. Definitions
|
||
```
|
||
NDEF application
|
||
|
||
```
|
||
The logical, higher-layer application on an NFC Forum Device using NDEF to format
|
||
information for exchange with other NFC Forum Devices or NFC Forum Tags. Also user
|
||
application or NDEF user application.
|
||
```
|
||
NDEF message
|
||
|
||
```
|
||
The basic message construct defined by this specification. An NDEF message contains
|
||
one or more NDEF records.
|
||
```
|
||
NDEF record
|
||
|
||
```
|
||
An NDEF record contains a payload described by a type, a length, and an optional
|
||
identifier.
|
||
```
|
||
NFC Record Type Definition (RTD) Page 3
|
||
|
||
|
||
Introduction
|
||
|
||
NDEF payload
|
||
|
||
```
|
||
The application data carried within an NDEF record.
|
||
```
|
||
NDEF generator
|
||
|
||
```
|
||
An entity or module that encapsulates application-defined payloads within NDEF
|
||
messages.
|
||
```
|
||
NDEF parser
|
||
|
||
```
|
||
An entity or module that parses NDEF messages and hands off the payloads to an NDEF
|
||
application.
|
||
```
|
||
User Application
|
||
|
||
```
|
||
See NDEF Application.
|
||
```
|
||
```
|
||
Table 2. Acronyms
|
||
```
|
||
NDEF NFC Data Exchange Format. See NFC DATA EXCHANGE FORMAT
|
||
(NDEF, Re-Draft Revision 0.96), NFC Forum Draft, October 2005
|
||
|
||
NID Namespace Identifier. Identifies uniquely an URN namespace. Please see
|
||
[RFC 2141] for a full definition.
|
||
|
||
NSS Namespace Specific String. The rest of the URN after the NID. See
|
||
[RFC 2141] for a full definition.
|
||
|
||
MIME Multipurpose Internet Mail Extensions. A standard specifying the format
|
||
of strongly-typed data transferred over the Internet. Defined in [RFC
|
||
2045-2049]
|
||
|
||
RTD Record Type Definition. An NFC-specific record type and type name
|
||
which may be carried in an NDEF record with a TNF field value of 0x01
|
||
(NFC Well-Known Type).
|
||
|
||
URI Uniform Resource Identifier. A compact sequence of characters that
|
||
identifies an abstract or physical resource. [RFC 3986] Uniform
|
||
Resource Names (URNs) and Uniform Resource Locators (URLs) are
|
||
both forms of URI.
|
||
|
||
URN Uniform Resource Name. A particular type of URI that is defined in
|
||
[RFC 2141].
|
||
|
||
NFC Record Type Definition (RTD) Page 4
|
||
|
||
|
||
Record Types
|
||
|
||
## 2 Record Types
|
||
|
||
The record type string field of an NDEF record contains the name of the record type (called
|
||
“record type name”). Record type names are used by NDEF applications to identify the semantics
|
||
and structure of the record content.
|
||
|
||
Record type names may be specified in several formats, called Type Name Formats, as signified
|
||
by the TNF field of the NDEF record header. Record type names may be MIME media types,
|
||
absolute URIs, NFC Forum external type names, or may be well-known NFC type names
|
||
(RTD’s, the subject of this specification).
|
||
|
||
Each record type definition is identified by its record type name.
|
||
|
||
Record type names can be defined by the NFC Forum and by third parties. In the following
|
||
sections, the rules governing the RTD type name space are defined.
|
||
|
||
### 2.1 NFC Forum Well-known Type
|
||
|
||
The NFC Forum Well-known Type is a dense format designed for tags and creating primitives for
|
||
certain common types. It is meant to be used in case there is no equivalent URI or MIME type
|
||
available, or when message size limitations require a very short name.
|
||
|
||
An NFC Forum Well Known Type is identified inside an NDEF message by setting the TNF field
|
||
of a record to the value of 0x01, as defined in the NDEF specification.
|
||
|
||
An NFC Forum Well-Known Type is a URN as defined by [RFC 2141], with the namespace
|
||
identifier (NID) “nfc”.
|
||
|
||
The Namespace Specific String of the NFC Well Known Type URN is prefixed with “wkt:”.
|
||
However, when encoded in an NDEF message, the Well Known Type MUST be written as a
|
||
relative-URI construct [RFC 3896], omitting the NID and the “wkt:” –prefix.
|
||
|
||
For example, the Well Known Type “urn:nfc:wkt:a” would be encoded as “a”. The Well Known
|
||
Type “urn:nfc:wkt:Very-complicated-type” would be encoded as “Very-complicated-type”.
|
||
|
||
There are two kinds of NFC Forum Well Known Types detailed in the sections below. For
|
||
brevity, we exclude the URN NID and the NSS prefix from the examples.
|
||
|
||
For a definition of the character ranges used in the Well Known Types, please see chapter 3.
|
||
|
||
#### 2.1.1 NFC Forum Global Type
|
||
|
||
The NFC Forum is responsible for defining and managing NFC Forum Global Types. Other
|
||
parties MUST NOT define or redefine these.
|
||
|
||
An NFC Forum Global Type SHALL start with an upper-case letter (character range <upper>).
|
||
|
||
Examples of NFC Forum Global Types: “U”, “Cfq”, “Trip-to-Texas”.
|
||
|
||
NFC Record Type Definition (RTD) Page 5
|
||
|
||
|
||
Record Types
|
||
|
||
#### 2.1.2 NFC Forum Local Type
|
||
|
||
NFC Forum Local Types SHALL start with a character in sets <lower> or <number>.
|
||
|
||
NFC Forum Local Types are available for use within the context of another record. A processing
|
||
application MUST NOT process these types when application context is not available. Local
|
||
types are used whenever the burden of using a long, domain name–based external type is too
|
||
much, and there is no need to define its meaning outside of the local context.
|
||
|
||
An RTD or an application defines the context for the interpretation for a Local Type. A Local
|
||
Type MAY be reused by another application in a different context and with different content.
|
||
|
||
Examples of NFC Forum Local Types: “0”, “foo”, “u”.
|
||
|
||
### 2.2 NFC Forum External Type
|
||
|
||
The External Type Name is meant for organizations that wish to self-allocate a name space to be
|
||
used for their own purposes.
|
||
|
||
An External Type is identified in an NDEF record by setting the TNF field value to 0x04, as
|
||
defined in the NDEF specification [NDEF].
|
||
|
||
The External Type is, much like a Well Known Type, an URN, with the NID of “nfc”. However,
|
||
the NSS specific part is put into another namespace named “ext”. A canonical version of the
|
||
External Type Name would look like:
|
||
|
||
```
|
||
“urn:nfc:ext:example.com:f”
|
||
```
|
||
The External Type Name MUST be formed by taking the domain name of the issuing
|
||
organization, adding a colon, and then adding the type name as managed by the organization.
|
||
|
||
As with Well Known Types, the binary encoding of External Type Name inside NDEF messages
|
||
MUST omit the NID and the NSS prefix of “ext”.
|
||
|
||
NFC Record Type Definition (RTD) Page 6
|
||
|
||
|
||
Record Types
|
||
|
||
### 2.3 Record Types Generic Requirements
|
||
|
||
```
|
||
Test Requirements 1. Record Types Generic Requirements
|
||
```
|
||
NFC Forum standardized types defined as RTD records SHALL use NFC Forum Well-
|
||
Known type names.
|
||
|
||
When packaged into NDEF records, NFC Forum standardized types defined as RTD records
|
||
SHALL be signified in the NDEF record header by the Type Name Format (TNF) field value
|
||
of 0x01 (NFC Forum Well-Known Type).
|
||
|
||
An NFC Forum Well Known Type SHALL be a URN with the “urn:nfc:wkt:” prefix.
|
||
|
||
An NFC Forum Global Type MUST NOT be defined or redefined by other parties than NFC
|
||
Forum.
|
||
|
||
An NFC Forum Global Type SHALL start with a character in the range <upper> as defined in
|
||
Chapter 3.
|
||
|
||
An NFC Forum Local Type SHALL start with a character in the range <lower> or <number>
|
||
as defined in Chapter 3.
|
||
|
||
A processing application MUST NOT process a NFC Forum Local Type if an application
|
||
context is not available.
|
||
|
||
An NFC Forum Local Type MAY be reused by another application in a different context and
|
||
with different content.
|
||
|
||
An NFC Forum External Type SHALL be identified with the TNF field value of 0x04.
|
||
|
||
An NFC Forum External Type SHALL be a URN with the prefix of “urn:nfc:ext:”.
|
||
|
||
In the NDEF binary format, the URN prefix MUST NOT be used.
|
||
|
||
The External Type MUST be formed by taking the domain name of the issuing organization,
|
||
adding a colon, and then adding a type name. An External Type MUST include a colon and a
|
||
non-zero length type name.
|
||
|
||
NFC Record Type Definition (RTD) Page 7
|
||
|
||
|
||
RTD Type Names
|
||
|
||
## 3 RTD Type Names
|
||
|
||
This section defines the normative requirements for the NFC Forum Well-Known Type Names
|
||
(below: RTD-URI). The language used is the ABNF format as defined in RFC 2234 [RFC 2234].
|
||
|
||
RTD-URI = “urn:nfc:” nfc-nss
|
||
|
||
nfc-nss = wkt-nss / external-nss
|
||
|
||
wkt-nss = wkt-id “:” WKT-type
|
||
|
||
external-nss = external-id “:” external-type
|
||
|
||
wkt-id = “wkt”
|
||
|
||
external-id = “ext”
|
||
|
||
WKT-type = local / global
|
||
|
||
local = ( lower / number ) *WKT-char
|
||
|
||
global = upper *WKT-char
|
||
|
||
external-type = dns-part “:” name-part
|
||
|
||
dns-part = 1*DNS-char
|
||
|
||
name-part = 1*WKT-char
|
||
|
||
WKT-char = upper / lower / number / other
|
||
|
||
DNS-char = upper / lower / number / “.” / “-”
|
||
|
||
upper = “A” / “B” / “C” / “D” / “E” / “F” / “G” / “H” /
|
||
“I” / “J” / “K” / “L” / “M” / “N” / “O” / “P” /
|
||
“Q” / “R” / “S” / “T” / “U” / “V” / “W” / “X” /
|
||
“Y” / “Z”
|
||
|
||
lower = “a” / “b” / “c” / “d” / “e” / “f” / “g” / “h” /
|
||
“i” / “j” / “k” / “l” / “m” / “n” / “o” / “p” /
|
||
“q” / “r” / “s” / “t” / “u” / “v” / “w” / “x” /
|
||
“y” / “z”
|
||
|
||
number = “0” / “1” / “2” / “3” / “4” / “5” / “6” / “7” /
|
||
“8” / “9”
|
||
|
||
other = “(“ / “)” / “+” / “,” / “-” /
|
||
“:” / “=“ / “@” / “;” / “$” /
|
||
“_” / “!” / “*” / “'“ / “.”
|
||
|
||
reserved = “%” / “/” / “?” / “#”
|
||
|
||
NFC Record Type Definition (RTD) Page 8
|
||
|
||
|
||
RTD Type Names
|
||
|
||
### 3.1 Binary Encoding
|
||
|
||
The binary encoding of Well Known Types and External Type Names for NDEF MUST be done
|
||
according to the ASCII chart in Appendix A.
|
||
|
||
The URN NID and the NFC NSS prefixes MUST NOT be included in the binary NDEF format.
|
||
(However, if RTDs are used in other formats, such as XML, the URNs SHOULD be given in the
|
||
absolute URN format.)
|
||
|
||
NOTE: This specification does not define legal characters for any particular record content.
|
||
Record content is specified in other documents, specific to those record types.
|
||
|
||
### 3.2 Percent Encoding in NFC Forum Types
|
||
|
||
To help define equivalence rules for NFC Forum Well Known Types, NFC Forum will not issue
|
||
a Global Type Name using percent-encoding as defined in [RFC 2141]. Any Local Type Name
|
||
used by third parties MUST NOT use the percent encoding.
|
||
|
||
External Types SHOULD NOT use the percent encoding. However, an application using such an
|
||
external type MUST first encode the string in UTF-8 before converting it to the percent encoding.
|
||
|
||
### 3.3 Equivalence of Record Type Names
|
||
|
||
The comparison of record type names is done on a character-by-character basis.
|
||
|
||
Two Well Known Type names MUST be compared in a case-sensitive manner. Because of the
|
||
fact that the encoding is fixed to US-ASCII, it also implies that two Well Known Types MUST be
|
||
considered equivalent if and only if their binary representations are identical.
|
||
|
||
Example:
|
||
|
||
“Foobar”
|
||
“fooBar”
|
||
“fOoBaR”
|
||
“foobar”
|
||
|
||
The four examples above are all different Well Known Type names.
|
||
|
||
Two External Type Names MUST be compared in a case-insensitive manner. Example:
|
||
|
||
“example.com:foobar”
|
||
“Example.com:foobar”
|
||
“Example.COM:Foobar”
|
||
“eXaMpLe.CoM:fOoBaR”
|
||
|
||
The four examples above represent all the same External Type Name.
|
||
|
||
NFC Record Type Definition (RTD) Page 9
|
||
|
||
|
||
RTD Type Names
|
||
|
||
### 3.4 RTD Type Names Requirements
|
||
|
||
```
|
||
Test Requirements 2. RTD Type Names Requirements
|
||
```
|
||
The binary encoding of Well Known Types (including Global and Local Names) and External
|
||
Type names MUST be done according to the ASCII chart in Appendix A.
|
||
|
||
Well Known Types (including Global and Local Names) MUST NOT use the percent-
|
||
encoding as defined by RFC 2141.
|
||
|
||
External types SHOULD NOT use the percent encoding as defined by RFC 2141.
|
||
|
||
Two Well Known Types (including Global and Local Names) MUST be compared on a case-
|
||
sensitive, character-by-character basis. In other words, two Well Known Types MUST be
|
||
considered equal if and only if their binary representations are identical.
|
||
|
||
Two External Types MUST be compared on a case insensitive, character-by-character basis.
|
||
|
||
NFC Record Type Definition (RTD) Page 10
|
||
|
||
|
||
Error Handling
|
||
|
||
## 4 Error Handling
|
||
|
||
### 4.1 Illegal characters
|
||
|
||
A record with a type name containing characters outside of the valid range of characters defined
|
||
in Chapter 3 MUST be ignored.
|
||
|
||
### 4.2 Unknown Record Types
|
||
|
||
Applications MUST ignore records which have a Well Known Type or an External Type that
|
||
they do not recognize.
|
||
|
||
### 4.3 Error Handling Requirements
|
||
|
||
```
|
||
Test Requirements 3. Error Handling Requirements
|
||
```
|
||
Any character not defined as a valid character in Chapter 3 SHALL be considered an illegal
|
||
character in a record type name.
|
||
|
||
Records containing illegal characters in the record type name MUST be ignored.
|
||
|
||
An application that does not recognize a record type name MUST ignore the entire record.
|
||
|
||
NFC Record Type Definition (RTD) Page 11
|
||
|
||
|
||
```
|
||
Character Set for Record Types
|
||
```
|
||
## A. Character Set for Record Types
|
||
|
||
```
|
||
Record type names SHALL be formed of characters from of the US ASCII [ASCII] character set.
|
||
Characters in the range [0-31] and 127 decimal, as shown in the following table, SHALL NOT be
|
||
used in record type names.
|
||
Table 3. ASCII Character Chart
|
||
```
|
||
Binary Dec Hex Graph. Binary Dec Hex Graph. Binary Dec Hex Graph.
|
||
|
||
0010 0000 32 20 (blank)^ 0100 0000 64 40 @^ 0110 0000 96 60 `
|
||
|
||
0010 0001 33 21!^ 0100 0001 65 41 A^ 0110 0001 97 61 a
|
||
|
||
0010 0010 34 22 “^ 0100 0010 66 42 B^ 0110 0010 98 62 b
|
||
|
||
0010 0011 35 23 #^ 0100 0011 67 43 C^ 0110 0011 99 63 c
|
||
|
||
0010 0100 36 24 $^ 0100 0100 68 44 D^ 0110 0100 100 64 d
|
||
|
||
0010 0101 37 25 %^ 0100 0101 69 45 E^ 0110 0101 101 65 e
|
||
|
||
0010 0110 38 26 &^ 0100 0110 70 46 F^ 0110 0110 102 66 f
|
||
|
||
0010 0111 39 27 ’^ 0100 0111 71 47 G^ 0110 0111 103 67 g
|
||
|
||
0010 1000 40 28 (^ 0100 1000 72 48 H^ 0110 1000 104 68 h
|
||
|
||
0010 1001 41 29 )^ 0100 1001 73 49 I^ 0110 1001 105 69 i
|
||
|
||
0010 1010 42 2A *^ 0100 1010 74 4A J^ 0110 1010 106 6A j
|
||
|
||
0010 1011 43 2B +^ 0100 1011 75 4B K^ 0110 1011 107 6B k
|
||
|
||
0010 1100 44 2C , , 0100 1100 76 4C L^ 0110 1100 108 6C l
|
||
|
||
0010 1101 45 2D - 0100 1101 77 4D M^ 0110 1101 109 6D m
|
||
|
||
0010 1110 46 2E.^ 0100 1110 78 4E N^ 0110 1110 110 6E n
|
||
|
||
0010 1111 47 2F /^ 0100 1111 79 4F O^ 0110 1111 111 6F o
|
||
|
||
0011 0000 48 30 0 0101 0000 80 50 P^ 0111 0000 112 70 p
|
||
|
||
0011 0001 49 31 1 0101 0001 81 51 Q^ 0111 0001 113 71 q
|
||
|
||
0011 0010 50 32 2 0101 0010 82 52 R^ 0111 0010 114 72 r
|
||
|
||
0011 0011 51 33 3 0101 0011 83 53 S^ 0111 0011 115 73 s
|
||
|
||
0011 0100 52 34 4 0101 0100 84 54 T^ 0111 0100 116 74 t
|
||
|
||
0011 0101 53 35 5 0101 0101 85 55 U^ 0111 0101 117 75 u
|
||
|
||
0011 0110 54 36 6 0101 0110 86 56 V^ 0111 0110 118 76 v
|
||
|
||
0011 0111 55 37 7 0101 0111 87 57 W^ 0111 0111 119 77 w
|
||
|
||
0011 1000 56 38 8 0101 1000 88 58 X^ 0111 1000 120 78 x
|
||
|
||
0011 1001 57 39 9 0101 1001 89 59 Y^ 0111 1001 121 79 y
|
||
|
||
0011 1010 58 3A :^ 0101 1010 90 5A Z^ 0111 1010 122 7A z
|
||
|
||
0011 1011 59 3B ;^ 0101 1011 91 5B [^ 0111 1011 123 7B {
|
||
|
||
0011 1100 60 3C <^ 0101 1100 92 5C \^ 0111 1100 124 7C |
|
||
|
||
0011 1101 61 3D =^ 0101 1101 93 5D ]^ 0111 1101 125 7D }
|
||
|
||
0011 1110 62 3E >^ 0101 1110 94 5E ^^ 0111 1110 126 7E ~
|
||
|
||
0011 1111 63 3F?^ 0101 1111 95 5F _^
|
||
|
||
```
|
||
NFC Record Type Definition (RTD) Page 12
|
||
```
|
||
|
||
Record Type Name Examples
|
||
|
||
## B. Record Type Name Examples
|
||
|
||
The contents of this appendix are informative and describe examples for encoding and comparing
|
||
record type names into their binary representation.
|
||
|
||
An example of translating a record type name into binary representation:
|
||
|
||
```
|
||
Table 4. Translating Record Type Names into Binary Representation
|
||
```
|
||
```
|
||
String Representation Binary Representation (as hexadecimal)
|
||
Sms 53 6D 73
|
||
```
|
||
```
|
||
sms 73 6D 73
|
||
```
|
||
To encode the binary representation of the type names, each character from the string
|
||
representation is replaced by its binary value from Appendix A.
|
||
|
||
In this example, the two record type names are considered non-equivalent since their binary
|
||
representations are not identical. The case-sense of letters in the string, white space, and other
|
||
language comparison rules are not considered when comparing type strings for equivalence. Only
|
||
the binary representations are considered.
|
||
|
||
NFC Record Type Definition (RTD) Page 13
|
||
|
||
|
||
Discussion on Associating Records
|
||
|
||
## C. Discussion on Associating Records
|
||
|
||
The contents of this appendix are informative.
|
||
|
||
There are two basic ways to associate NDEF records to each other. The first one is called
|
||
“association by reference”, which is amounts to a flat hierarchy or a list of objects.
|
||
|
||
When associating records by reference, the context is typically given by the first record in the
|
||
message. This is the same association model that is used by MIME. For example, if you wish to
|
||
represent an email message with two PNG attachments as an NDEF message, you first send the
|
||
email message in one record (typed message/rfc822), then the first PNG image as a separate
|
||
record (image/png), and the second PNG image (again, image/png). To illustrate:
|
||
|
||
```
|
||
NDEF MESSAGE
|
||
Email (message/rfc822) Pic1.png (image/png) Pic2.png (image/png)
|
||
```
|
||
```
|
||
Figure 1. NDEF Messages (Multiple)
|
||
```
|
||
This method allows an application to lift the PNG images off the message, even if it does not
|
||
understand the email message. In general, when designing your own record types, you should
|
||
choose association by reference if your message parts would be valuable even on their own, i.e.,
|
||
even if the context is not understood. Association by reference is also a good model if you are
|
||
moving a large amount of data because it allows you to take advantage of the chunking feature of
|
||
NDEF. In addition, it also allows the processing to start at the receiver end before the message is
|
||
finished (this is one of the reasons why it is good to declare the context at the beginning of the
|
||
message).
|
||
|
||
The second way is called “association by containment”. This is a hierarchical model (not entirely
|
||
unlike XML or HTML), where the content portion of an NDEF records contains an NDEF
|
||
message. This is very useful in the case where you wish to imply a stronger relationship between
|
||
records, or need to serialize information that is already in a hierarchical format. Also, if you are
|
||
going to send multiple objects of the same type within the message, you probably wish to use an
|
||
containment model, and then string them together in a list(so yes, it is possible and very sensible
|
||
to mix these models).
|
||
|
||
For example, the Smart Poster record defines a URI plus some added metadata about that URI.
|
||
The added metadata is not useful to an application without the URI itself, and in fact, it would be
|
||
relatively meaningless. To illustrate:
|
||
|
||
```
|
||
NDEF Message
|
||
Sp (Smart Poster) application/vcard
|
||
URI Text Action Configuration vCard data
|
||
```
|
||
```
|
||
Figure 2. NDEF Message with Metadata
|
||
```
|
||
In this case, there are two records in the NDEF message. The first one is a Smart Poster
|
||
containing a URI, a Text record for a title, an action, and a configuration record; whereas the
|
||
other one is just a normal vCard (using the vCard standard). (In this case, there is no particular
|
||
context defined for the vCard, so an application may either ignore it or use it for some purpose;
|
||
this is an implementation detail. In general, putting records describing different things and
|
||
assuming some particular context or processing model will probably result in interoperability
|
||
trouble.)
|
||
|
||
NFC Record Type Definition (RTD) Page 14
|
||
|
||
|
||
Discussion on Associating Records
|
||
|
||
Anyway, since the Text, Action, and Configuration are so tightly coupled with the URI (the URI
|
||
might not even be fetchable without the proper configuration, if the config defines a local access
|
||
point), they work better using a containment model than a reference model.
|
||
|
||
Neither of these examples displayed any use of the ID field, which can be used in both models
|
||
with equal efficiency. In association by reference, the first record typically lists the IDs that it
|
||
uses and defines the context that way; in association by containment, the IDs would typically be
|
||
used to signify the role of a record (e.g., “A record with an ID of 'config' shall be used for
|
||
defining an access point.”)
|
||
|
||
Of course, an application is free to mix-and-match these association types. There is no hard-and-
|
||
fast rule to say which one is better in a given situation, and as designed, this allows maximum
|
||
flexibility to the application developer.
|
||
|
||
A third, but deprecated, practice would be using ordering (i.e., record #1 would always signify
|
||
something, record #2 something else, record #3 again something else), but this, in general, is not
|
||
a good idea, since you cannot rely on any particular behavior of a NDEF processor. It could be
|
||
that by the time your application receives the NDEF message, records may have been inserted or
|
||
removed. Do not rely on any implementation-specific behavior. This seems obvious to any
|
||
seasoned developer, but it is easy to forget in the rush of a deadline.
|
||
|
||
The advice in this discussion is offered because it is likely that developers at some point face the
|
||
need to associate NDEF records with each other, and it is good that some of the best practices and
|
||
conventions are laid out for all to see. Reading a new specification can be difficult, and hopefully
|
||
discussion such as this will ease the work of the developer.
|
||
|
||
NFC Record Type Definition (RTD) Page 15
|
||
|
||
|
||
Revision History
|
||
|
||
## D. Revision History
|
||
|
||
The following table outlines the revision history of the RTD Technical Specification.
|
||
|
||
```
|
||
Table 5. Revision History
|
||
```
|
||
Document Name Revision and
|
||
Release Date
|
||
|
||
```
|
||
Status Change notice Supersedes
|
||
```
|
||
NFCForum-TS-
|
||
RTD_1.0
|
||
|
||
```
|
||
1.0, July 2006 Final none
|
||
```
|
||
NFC Record Type Definition (RTD) Page 16
|
||
|
||
|
||
# Text Record Type Definition
|
||
|
||
## Technical Specification
|
||
|
||
## NFC Forum
|
||
|
||
#### TM
|
||
|
||
## RTD-Text 1.0
|
||
|
||
## NFCForum-TS-RTD_Text_1.0
|
||
|
||
## 2006-07-24
|
||
|
||
|
||
##### RESTRICTIONS ON USE
|
||
|
||
This specification is copyright © 2005-2006 by the NFC Forum, and was made available pursuant to a
|
||
license agreement entered into between the recipient (Licensee) and NFC Forum, Inc. (Licensor) and may
|
||
be used only by Licensee, and in compliance with the terms of that license agreement (License). If you are
|
||
not the Licensee, you are not authorized to make any use of this specification. However, you may obtain a
|
||
copy at the following page of Licensor's Website: [http://www.nfc-forum.org/resources/spec_license](http://www.nfc-forum.org/resources/spec_license) after
|
||
entering into and agreeing to such license terms as Licensor is then requiring. On the date that this
|
||
specification was downloaded by Licensee, those terms were as follows:
|
||
|
||
1. LICENSE GRANT.
|
||
|
||
Licensor hereby grants Licensee the right, without charge, to copy (for internal purposes only) and share
|
||
the Specification with Licensee's members, employees and consultants (as appropriate). This license grant
|
||
does not include the right to sublicense, modify or create derivative works based upon the Specification.
|
||
|
||
2. NO WARRANTIES.
|
||
|
||
THE SPECIFICATION IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, COMPLETENESS AND
|
||
NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL LICENSOR, ITS
|
||
MEMBERS OR ITS CONTRIBUTORS BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL,
|
||
INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
|
||
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
|
||
THE USE OR PERFORMANCE OF THE SPECIFICATION.
|
||
|
||
3. THIRD PARTY RIGHTS.
|
||
|
||
Without limiting the generality of Section 2 above, LICENSOR ASSUMES NO RESPONSIBILITY TO
|
||
COMPILE, CONFIRM, UPDATE OR MAKE PUBLIC ANY THIRD PARTY ASSERTIONS OF
|
||
PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS THAT MIGHT NOW OR IN THE
|
||
FUTURE BE INFRINGED BY AN IMPLEMENTATION OF THE SPECIFICATION IN ITS CURRENT,
|
||
OR IN ANY FUTURE FORM. IF ANY SUCH RIGHTS ARE DESCRIBED ON THE SPECIFICATION,
|
||
LICENSOR TAKES NO POSITION AS TO THE VALIDITY OR INVALIDITY OF SUCH
|
||
ASSERTIONS, OR THAT ALL SUCH ASSERTIONS THAT HAVE OR MAY BE MADE ARE SO
|
||
LISTED.
|
||
|
||
4. TERMINATION OF LICENSE.
|
||
|
||
In the event of a breach of this Agreement by Licensee or any of its employees or members, Licensor shall
|
||
give Licensee written notice and an opportunity to cure. If the breach is not cured within thirty (30) days
|
||
after written notice, or if the breach is of a nature that cannot be cured, then Licensor may immediately or
|
||
thereafter terminate the licenses granted in this Agreement.
|
||
|
||
5. MISCELLANEOUS.
|
||
|
||
All notices required under this Agreement shall be in writing, and shall be deemed effective five days from
|
||
deposit in the mails. Notices and correspondence to the NFC Forum address as it appears below. This
|
||
Agreement shall be construed and interpreted under the internal laws of the United States and the
|
||
Commonwealth of Massachusetts, without giving effect to its principles of conflict of law.
|
||
|
||
NFC Forum, Inc.
|
||
401 Edgewater Place, Suite 600
|
||
Wakefield, MA, USA 01880
|
||
|
||
|
||
Contents
|
||
|
||
## Contents
|
||
|
||
#### 1 Overview........................................................................................................1
|
||
|
||
#### 1.1 Objectives........................................................................................................................... 1
|
||
|
||
#### 1.2 Purpose ............................................................................................................................... 1
|
||
|
||
#### 1.2.1 Mission Statement and Goals................................................................................ 1
|
||
|
||
#### 1.3 References.......................................................................................................................... 1
|
||
|
||
#### 1.4 Administration.................................................................................................................... 1
|
||
|
||
#### 1.5 Special Word Usage........................................................................................................... 2
|
||
|
||
#### 1.6 Name and Logo Usage....................................................................................................... 2
|
||
|
||
#### 1.7 Intellectual Property........................................................................................................... 2
|
||
|
||
#### 1.8 Acronyms........................................................................................................................... 2
|
||
|
||
#### 2 Text Record....................................................................................................3
|
||
|
||
#### 2.1 Introduction........................................................................................................................ 3
|
||
|
||
#### 2.2 Dependencies...................................................................................................................... 3
|
||
|
||
#### 2.3 Security Considerations...................................................................................................... 3
|
||
|
||
#### 3 NDEF structure..............................................................................................4
|
||
|
||
#### 3.1 Messaging Sequence.......................................................................................................... 4
|
||
|
||
#### 3.2 Records Mapping............................................................................................................... 4
|
||
|
||
#### 3.2.1 Syntax.................................................................................................................... 4
|
||
|
||
#### 3.2.2 Structure................................................................................................................ 5
|
||
|
||
#### 3.3 Language Codes................................................................................................................. 5
|
||
|
||
#### 3.4 UTF-16 Byte Order............................................................................................................ 5
|
||
|
||
#### A. Example UTF-8 Encoding.............................................................................6
|
||
|
||
#### B. Revision History............................................................................................7
|
||
|
||
## Tables
|
||
|
||
#### Table 1. Acronyms.......................................................................................................................... 2
|
||
|
||
#### Table 2. Text Record Content Syntax............................................................................................. 4
|
||
|
||
#### Table 3. Status Byte Encodings....................................................................................................... 4
|
||
|
||
#### Table 4. Example: “Hello, world!”.................................................................................................. 6
|
||
|
||
#### Table 5. Revision History................................................................................................................ 7
|
||
|
||
Text Record Type Definition Page i
|
||
|
||
|
||
Overview
|
||
|
||
## 1 Overview
|
||
|
||
The Text Record Type Description defines an NFC Forum Well Known Type [NFC RTD] for
|
||
plain text data. It may be used as free form text descriptions of other objects on an RFID tag.
|
||
|
||
### 1.1 Objectives
|
||
|
||
The objective of this document is to function as a normative reference to the Text RTD.
|
||
|
||
### 1.2 Purpose
|
||
|
||
#### 1.2.1 Mission Statement and Goals
|
||
|
||
The Text RTD was designed to be used as a general purpose text field to add metadata to things
|
||
such as URLs. It needs to provide a lightweight component with clearly defined semantics.
|
||
|
||
The goal is not to replace text/plain, but to define a clear subset that can be used in cases where
|
||
there is not much space to be used, and to cover the most probable use cases.
|
||
|
||
The Text RTD must work well for non-western languages also, and it needs to include the
|
||
language information for localization purposes so that the language can be identified and served
|
||
to the user.
|
||
|
||
### 1.3 References
|
||
|
||
[NDEF] “NFC Data Exchange Format Specification”, NFC Forum, 2006.
|
||
|
||
[NFC RTD] “NFC Record Type Definition (RTD) Specification”, NFC Forum, 2006.
|
||
|
||
[RFC 2119] S. Bradner, “Key words for use in RFCs to Indicate Requirement
|
||
Levels”, RFC 2119, Harvard University, March 1997.
|
||
[http://www.apps.ietf.org/rfc/rfc2119.html](http://www.apps.ietf.org/rfc/rfc2119.html)
|
||
|
||
[RFC 3066] H. Alvestrand, “Tags for the Identification of Languages”, RFC 3066,
|
||
Cisco Systems, January 2001. [http://www.faqs.org/rfcs/rfc3066.html](http://www.faqs.org/rfcs/rfc3066.html)
|
||
|
||
[RFC 3066bis] A. Phillips, M. Davis, “Tags for the Identification of Languages”. IETF
|
||
Draft. [http://www.ietf.org/internet-drafts/draft-ietf-ltru-registry-14.txt](http://www.ietf.org/internet-drafts/draft-ietf-ltru-registry-14.txt)
|
||
|
||
[UNICODE] “The Unicode 4.0.1 standard”.
|
||
[http://www.unicode.org/versions/Unicode4.0.1/](http://www.unicode.org/versions/Unicode4.0.1/)
|
||
|
||
### 1.4 Administration
|
||
|
||
The Text RTD Specification is an open specification supported by the Near Field Communication
|
||
Forum, Inc., located at:
|
||
|
||
401 Edgewater Place, Suite 600
|
||
Wakefield, MA, 01880
|
||
|
||
Tel.: +1 781-876-8955
|
||
Fax: +1 781-224-1239
|
||
|
||
[http://www.nfc-forum.org](http://www.nfc-forum.org)
|
||
|
||
The Reference Applications Framework technical working group maintains this specification.
|
||
|
||
Text Record Type Definition Page 1
|
||
|
||
|
||
Overview
|
||
|
||
### 1.5 Special Word Usage
|
||
|
||
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
|
||
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this
|
||
document are to be interpreted as described in RFC 2119.
|
||
|
||
### 1.6 Name and Logo Usage
|
||
|
||
The Near Field Communication Forum’s policy regarding the use of the trademarks NFC Forum
|
||
and the NFC Forum logo is as follows:
|
||
|
||
- Any company MAY claim compatibility with NFC Forum specifications, whether a member
|
||
of the NFC Forum or not.
|
||
- Permission to use the NFC Forum logos is automatically granted to designated members only
|
||
as stipulated on the most recent Membership Privileges document, during the period of time
|
||
for which their membership dues are paid.
|
||
- Member’s distributors and sales representatives MAY use the NFC Forum logo in promoting
|
||
member’s products sold under the name of the member.
|
||
- The logo SHALL be printed in black or in color as illustrated on the Logo Page that is
|
||
available from the NFC Forum at the address above. The aspect ratio of the logo SHALL be
|
||
maintained, but the size MAY be varied. Nothing MAY be added to or deleted from the
|
||
logos.
|
||
- Since the NFC Forum name is a trademark of the Near Field Communication Forum, the
|
||
following statement SHALL be included in all published literature and advertising material in
|
||
which the name or logo appears:
|
||
NFC Forum and the NFC Forum logo are trademarks of the Near Field Communication
|
||
Forum.
|
||
|
||
### 1.7 Intellectual Property
|
||
|
||
The Text RTD Specification conforms to the Intellectual Property guidelines specified in the
|
||
NFC Forum's Intellectual Property Right Policy, as approved on November 9, 2004 and outlined
|
||
in the NFC Forum Rules of Procedures, as approved on December 17, 2004.
|
||
|
||
### 1.8 Acronyms
|
||
|
||
This table defines all relevant terms and acronyms used in this specification.
|
||
|
||
```
|
||
Table 1. Acronyms
|
||
```
|
||
Acronyms Definition
|
||
|
||
LSB Least Significant Bit
|
||
|
||
NDEF NFC Data Exchange Format
|
||
|
||
RFU Reserved for Future Use
|
||
|
||
RTD Record Type Description
|
||
|
||
URI Uniform Resource Identifier
|
||
|
||
URL Uniform Resource Locator (this is a special case of an URI)
|
||
|
||
Text Record Type Definition Page 2
|
||
|
||
|
||
Text Record
|
||
|
||
## 2 Text Record
|
||
|
||
### 2.1 Introduction
|
||
|
||
The “Text” record contains freeform plain text. It can be used to describe a service or the contents
|
||
of the tag, for example.
|
||
|
||
The Text record MAY appear as a sole record in an NDEF message [NDEF], but in this case the
|
||
behavior is undefined and left to the application to handle. Typically, the Text record should be
|
||
used in conjunction with other records to provide explanatory text.
|
||
|
||
### 2.2 Dependencies
|
||
|
||
There are no dependencies for the Text element.
|
||
|
||
### 2.3 Security Considerations
|
||
|
||
It is possible to write different text on the Text record than what the tag actually does, and thus
|
||
spoof the user into doing something else than what he actually wanted (i.e., phishing). Thus it is a
|
||
good idea for the user interface to use the Text field only as an informative field.
|
||
|
||
Text Record Type Definition Page 3
|
||
|
||
|
||
NDEF structure
|
||
|
||
## 3 NDEF structure
|
||
|
||
### 3.1 Messaging Sequence
|
||
|
||
There is no particular messaging sequence available for this RTD.
|
||
|
||
### 3.2 Records Mapping
|
||
|
||
#### 3.2.1 Syntax
|
||
|
||
The NFC Forum Well Known Type [NDEF], [NFC RTD] for the Text record is “T” (in NFC
|
||
binary encoding: 0x54).
|
||
|
||
The data content is as follows:
|
||
|
||
```
|
||
Table 2. Text Record Content Syntax
|
||
```
|
||
```
|
||
Offset
|
||
(bytes)
|
||
```
|
||
```
|
||
Length
|
||
(bytes)
|
||
```
|
||
```
|
||
Content
|
||
```
|
||
```
|
||
0 1 Status byte. See Table 3.
|
||
```
|
||
```
|
||
1 <n> ISO/IANA language code. Examples: “fi”, “en-US”, “fr-
|
||
CA”, “jp”. The encoding is US-ASCII.
|
||
n+1 <m> The actual text. Encoding is either UTF-8 or UTF-16,
|
||
depending on the status bit.
|
||
```
|
||
The Status bit encodings are as described in Table 3. Any value marked RFU SHALL be ignored,
|
||
and any software writing these bits SHALL use the value zero for these bits.
|
||
|
||
```
|
||
Table 3. Status Byte Encodings
|
||
```
|
||
```
|
||
Bit number (0
|
||
is LSB)
|
||
```
|
||
```
|
||
Content
|
||
```
|
||
```
|
||
7 0: The text is encoded in UTF-8
|
||
1: The text is encoded in UTF16
|
||
```
|
||
```
|
||
6 RFU (MUST be set to zero)
|
||
```
|
||
```
|
||
5..0 The length of the IANA language code.
|
||
```
|
||
The contents of the text field MAY be shown to the user. If multiple 'T' records exist, the one
|
||
with the closest matching language to the user preference SHOULD be displayed. To have
|
||
multiple text elements within a single application, context with the same language code SHOULD
|
||
be considered an error.
|
||
|
||
Text Record Type Definition Page 4
|
||
|
||
|
||
NDEF structure
|
||
|
||
Control characters (0x00-0x1F in UTF-8) should be removed prior to display, except for newline,
|
||
line feed (0x0D, 0x0A) and tab (0x08) characters. Markup MUST NOT be embedded (please use
|
||
the “text/xhtml” or other suitable MIME types). The Text record should be considered to be equal
|
||
to the MIME type “text/plain; format=fixed”.
|
||
|
||
Line breaks in the text MUST be represented using the CRLF (so-called DOS convention, the
|
||
sequence 0x0D,0x0A in UTF-8). The device may deal with the tab character as it wishes.
|
||
|
||
White space other than newline and tab SHOULD be collapsed, i.e., multiple space characters are
|
||
to be considered a single space character.
|
||
|
||
To find the length of the actual text in bytes, you calculate the length via “m=(length of the
|
||
payload – length of the IANA language code – 1)”
|
||
|
||
#### 3.2.2 Structure
|
||
|
||
If the Text record describes an element, it SHOULD occur in the NDEF record list before the
|
||
element it is describing. This makes it faster to find and display to the user if the element is very
|
||
large.
|
||
|
||
### 3.3 Language Codes
|
||
|
||
All language codes MUST be done according to RFC 3066 [RFC3066]. The language code MAY
|
||
NOT be omitted.
|
||
|
||
The language code length is encoded in the six least significant bits of the status byte. Thus it is
|
||
easy to find by masking the status byte with the value 0x3F.
|
||
|
||
The language code is typically either two characters or five characters, though in the future, it is
|
||
likely that it will be possible to have longer codes. At this time, IETF is considering an extension
|
||
to RFC 3066 which will cover language codes up to 33 bytes in length [RFC 3066bis]. The two-
|
||
character version disregards any dialects, and thus is used most often; for example, “fi” for
|
||
Finnish, “jp” for Japanese, “fr” for French. However, in some cases you might want to
|
||
differentiate between variants of the same language, such as providing US-English and British
|
||
English versions via “en-US” and “en-UK” respectively.
|
||
|
||
### 3.4 UTF-16 Byte Order
|
||
|
||
The Unicode Byte-Order-Mark (BOM) in the actual string MUST be tolerated (i.e. no error
|
||
condition). When generating a Text record, the BOM MAY be omitted. If the BOM is omitted,
|
||
the byte order shall be big-endian (UTF-16 BE).
|
||
|
||
Text Record Type Definition Page 5
|
||
|
||
|
||
Example UTF-8 Encoding
|
||
|
||
## A. Example UTF-8 Encoding
|
||
|
||
Here’s an example on how the English phrase “Hello, world!” would be encoded in UTF-8:
|
||
|
||
```
|
||
Table 4. Example: “Hello, world!”
|
||
```
|
||
```
|
||
Offset Content Explanation Syntactical info
|
||
```
|
||
```
|
||
0 N/A IL flag = 0 (no ID field), SF=1
|
||
(Short format)
|
||
1 0x01 Length of the record name
|
||
```
|
||
```
|
||
2 0x10 The length of the payload data (16
|
||
bytes)
|
||
3 “T” The binary encoding of the name,
|
||
as defined in [1]
|
||
```
|
||
```
|
||
NDEF record header
|
||
```
|
||
```
|
||
4 0x02 Status byte: This is UTF-8, and
|
||
has a two-byte language code
|
||
5 “en” “en” is the ISO code for “English”
|
||
```
|
||
```
|
||
Payload
|
||
```
|
||
```
|
||
7 “Hello,
|
||
world!”
|
||
```
|
||
```
|
||
UTF-8 string “Hello, world!”
|
||
The actual body text.
|
||
```
|
||
Text Record Type Definition Page 6
|
||
|
||
|
||
Revision History
|
||
|
||
## B. Revision History
|
||
|
||
The following table outlines the revision history of the Text RTD Technical Specification.
|
||
|
||
```
|
||
Table 5. Revision History
|
||
```
|
||
Document
|
||
Name
|
||
|
||
```
|
||
Revision and
|
||
Release Date
|
||
```
|
||
```
|
||
Status Change Notice Supersedes
|
||
```
|
||
NFCForum-TS-
|
||
RTD_Text_1.0
|
||
|
||
```
|
||
1.0, July 2006 None First Revision
|
||
```
|
||
Text Record Type Definition Page 7
|
||
|
||
|
||
# URI Record Type Definition
|
||
|
||
## Technical Specification
|
||
|
||
## NFC Forum
|
||
|
||
#### TM
|
||
|
||
## RTD-URI 1.0
|
||
|
||
## NFCForum-TS-RTD_URI_1.0
|
||
|
||
## 2006-07-24
|
||
|
||
|
||
##### RESTRICTIONS ON USE
|
||
|
||
This specification is copyright © 2005-2006 by the NFC Forum, and was made available pursuant to a
|
||
license agreement entered into between the recipient (Licensee) and NFC Forum, Inc. (Licensor) and may
|
||
be used only by Licensee, and in compliance with the terms of that license agreement (License). If you are
|
||
not the Licensee, you are not authorized to make any use of this specification. However, you may obtain a
|
||
copy at the following page of Licensor's Website: [http://www.nfc-forum.org/resources/spec_license](http://www.nfc-forum.org/resources/spec_license) after
|
||
entering into and agreeing to such license terms as Licensor is then requiring. On the date that this
|
||
specification was downloaded by Licensee, those terms were as follows:
|
||
|
||
1. LICENSE GRANT.
|
||
|
||
Licensor hereby grants Licensee the right, without charge, to copy (for internal purposes only) and share
|
||
the Specification with Licensee's members, employees and consultants (as appropriate). This license grant
|
||
does not include the right to sublicense, modify or create derivative works based upon the Specification.
|
||
|
||
2. NO WARRANTIES.
|
||
|
||
THE SPECIFICATION IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, COMPLETENESS AND
|
||
NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL LICENSOR, ITS
|
||
MEMBERS OR ITS CONTRIBUTORS BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL,
|
||
INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
|
||
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
|
||
THE USE OR PERFORMANCE OF THE SPECIFICATION.
|
||
|
||
3. THIRD PARTY RIGHTS.
|
||
|
||
Without limiting the generality of Section 2 above, LICENSOR ASSUMES NO RESPONSIBILITY TO
|
||
COMPILE, CONFIRM, UPDATE OR MAKE PUBLIC ANY THIRD PARTY ASSERTIONS OF
|
||
PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS THAT MIGHT NOW OR IN THE
|
||
FUTURE BE INFRINGED BY AN IMPLEMENTATION OF THE SPECIFICATION IN ITS CURRENT,
|
||
OR IN ANY FUTURE FORM. IF ANY SUCH RIGHTS ARE DESCRIBED ON THE SPECIFICATION,
|
||
LICENSOR TAKES NO POSITION AS TO THE VALIDITY OR INVALIDITY OF SUCH
|
||
ASSERTIONS, OR THAT ALL SUCH ASSERTIONS THAT HAVE OR MAY BE MADE ARE SO
|
||
LISTED.
|
||
|
||
4. TERMINATION OF LICENSE.
|
||
|
||
In the event of a breach of this Agreement by Licensee or any of its employees or members, Licensor shall
|
||
give Licensee written notice and an opportunity to cure. If the breach is not cured within thirty (30) days
|
||
after written notice, or if the breach is of a nature that cannot be cured, then Licensor may immediately or
|
||
thereafter terminate the licenses granted in this Agreement.
|
||
|
||
5. MISCELLANEOUS.
|
||
|
||
All notices required under this Agreement shall be in writing, and shall be deemed effective five days from
|
||
deposit in the mails. Notices and correspondence to the NFC Forum address as it appears below. This
|
||
Agreement shall be construed and interpreted under the internal laws of the United States and the
|
||
Commonwealth of Massachusetts, without giving effect to its principles of conflict of law.
|
||
|
||
NFC Forum, Inc.
|
||
401 Edgewater Place, Suite 600
|
||
Wakefield, MA, USA 01880
|
||
|
||
|
||
Contents
|
||
|
||
## Contents
|
||
|
||
#### 1 Overview........................................................................................................1
|
||
|
||
#### 1.1 Objectives........................................................................................................................... 1
|
||
|
||
#### 1.2 Purpose ............................................................................................................................... 1
|
||
|
||
#### 1.2.1 Mission Statement and Goals................................................................................ 1
|
||
|
||
#### 1.3 References.......................................................................................................................... 1
|
||
|
||
#### 1.4 Administration.................................................................................................................... 1
|
||
|
||
#### 1.5 Special Word Usage........................................................................................................... 2
|
||
|
||
#### 1.6 Name and Logo Usage....................................................................................................... 2
|
||
|
||
#### 1.7 Intellectual Property........................................................................................................... 2
|
||
|
||
#### 1.8 Acronyms........................................................................................................................... 3
|
||
|
||
#### 2 URI Service.....................................................................................................4
|
||
|
||
#### 2.1 NDEF Message Sequences................................................................................................. 4
|
||
|
||
#### 2.2 Dependencies...................................................................................................................... 4
|
||
|
||
#### 3 NDEF Structure..............................................................................................5
|
||
|
||
#### 3.1 Messaging Sequence.......................................................................................................... 5
|
||
|
||
#### 3.2 Records Mapping............................................................................................................... 5
|
||
|
||
#### 3.2.1 URI Record Type.................................................................................................. 5
|
||
|
||
#### 3.2.2 URI Identifier Code............................................................................................... 5
|
||
|
||
#### 3.2.3 URI Field............................................................................................................... 7
|
||
|
||
#### 4 Handling Guideline........................................................................................8
|
||
|
||
#### A. Examples........................................................................................................9
|
||
|
||
#### A.1 Simple URL with No Substitution..................................................................................... 9
|
||
|
||
#### A.2 Storing a Telephone Number............................................................................................. 9
|
||
|
||
#### A.3 Storing a Proprietary URI on the Tag............................................................................... 10
|
||
|
||
#### B. Revision History..........................................................................................11
|
||
|
||
## Tables
|
||
|
||
#### Table 1. Acronyms.......................................................................................................................... 3
|
||
|
||
#### Table 2. URI Record Contents........................................................................................................ 5
|
||
|
||
#### Table 3. Abbreviation Table............................................................................................................ 5
|
||
|
||
#### Table 4. Simple URL with No Substitution.................................................................................... 9
|
||
|
||
#### Table 5. Storing a Telephone Number............................................................................................ 9
|
||
|
||
#### Table 6. Storing a Proprietary URI on the Tag.............................................................................. 10
|
||
|
||
#### Table 7. Revision History.............................................................................................................. 11
|
||
|
||
URI Record Type Definition Page i
|
||
|
||
|
||
Overview
|
||
|
||
## 1 Overview
|
||
|
||
The URI Service RTD (Record Type Description) is an NFC RTD describing a record to be used
|
||
with the NFC Data Exchange Format (NDEF) to retrieve a URI stored in a NFC-compliant tag or
|
||
to transport a URI from one NFC device to another.
|
||
|
||
The URI (either a URN or URL) also provides a way to store URIs inside other NFC elements,
|
||
such as a Smart Poster (please see the Smart Poster RTD for more information).
|
||
|
||
### 1.1 Objectives
|
||
|
||
The RTD defines the use of NDEF by the means of the NDEF records mapping.
|
||
|
||
### 1.2 Purpose
|
||
|
||
#### 1.2.1 Mission Statement and Goals
|
||
|
||
The purpose of the URI RTD is to provide a “primitive” to contain URIs as defined by RFC 3986
|
||
in a compact manner.
|
||
|
||
### 1.3 References
|
||
|
||
[NDEF] “NFC Data Exchange Format Specification”, NFC Forum, 2006.
|
||
|
||
[NFC RTD] “NFC Record Type Definition (RTD) Specification”, NFC Forum, 2006.
|
||
|
||
[RFC 2119] S. Bradner, “Key words for use in RFCs to Indicate Requirement
|
||
Levels”, RFC 2119, Harvard University, March 1997.
|
||
[http://www.apps.ietf.org/rfc/rfc2119.html](http://www.apps.ietf.org/rfc/rfc2119.html)
|
||
|
||
[RFC 3492] A. Costello: “Punycode: A Bootstring encoding of Unicode for
|
||
Internationalized Domain Names in Applications (IDNA)”, RFC 3492,
|
||
March 2003. [http://www.apps.ietf.org/rfc/rfc3492.html](http://www.apps.ietf.org/rfc/rfc3492.html)
|
||
|
||
[RFC 3986] T. Berners-Lee, R. Fielding, L. Masinter, “Uniform Resource Identifiers
|
||
(URI): Generic Syntax”, RFC 3986, MIT/LCS, U.C. Irvine, Xerox
|
||
Corporation, January 2005. [http://www.apps.ietf.org/rfc/rfc3986.html](http://www.apps.ietf.org/rfc/rfc3986.html)
|
||
|
||
[RFC 3987] M. Duerst, M. Suignard, “Internationalized Resource Identifiers (IRIs)”,
|
||
RFC 3987, Microsoft Corporation, January 2005.
|
||
[http://rfc.net/rfc3987.html](http://rfc.net/rfc3987.html)
|
||
|
||
[SMARTPOSTER] “Smart Poster RTD Specification”, NFC Forum, 2006.
|
||
|
||
[URI SCHEME] List of Uniform Resource Identifier (URI) schemes registered by IANA.
|
||
[http://www.iana.org/assignments/uri-schemes](http://www.iana.org/assignments/uri-schemes)
|
||
|
||
### 1.4 Administration
|
||
|
||
The URI RTD Specification is an open specification supported by the Near Field Communication
|
||
Forum, Inc., located at:
|
||
|
||
401 Edgewater Place, Suite 600
|
||
Wakefield, MA, 01880
|
||
|
||
Tel.: +1 781-876-8955
|
||
Fax: +1 781-224-1239
|
||
|
||
URI Record Type Definition Page 1
|
||
|
||
|
||
Overview
|
||
|
||
[http://www.nfc-forum.org](http://www.nfc-forum.org)
|
||
|
||
The Reference Applications technical working group maintains this specification.
|
||
|
||
This specification has been contributed to by Sony, Panasonic, Philips and Nokia.
|
||
|
||
### 1.5 Special Word Usage
|
||
|
||
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
|
||
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this
|
||
document are to be interpreted as described in RFC 2119.
|
||
|
||
### 1.6 Name and Logo Usage
|
||
|
||
The Near Field Communication Forum’s policy regarding the use of the trademarks NFC Forum
|
||
and the NFC Forum logo is as follows:
|
||
|
||
- Any company MAY claim compatibility with NFC Forum specifications, whether a member
|
||
of the NFC Forum or not.
|
||
- Permission to use the NFC Forum logos is automatically granted to designated members only
|
||
as stipulated on the most recent Membership Privileges document, during the period of time
|
||
for which their membership dues are paid.
|
||
- Member’s distributors and sales representatives MAY use the NFC Forum logo in promoting
|
||
member’s products sold under the name of the member.
|
||
- The logo SHALL be printed in black or in color as illustrated on the Logo Page that is
|
||
available from the NFC Forum at the address above. The aspect ratio of the logo SHALL be
|
||
maintained, but the size MAY be varied. Nothing MAY be added to or deleted from the
|
||
logos.
|
||
- Since the NFC Forum name is a trademark of the Near Field Communication Forum, the
|
||
following statement SHALL be included in all published literature and advertising material in
|
||
which the name or logo appears:
|
||
NFC Forum and the NFC Forum logo are trademarks of the Near Field Communication
|
||
Forum.
|
||
|
||
### 1.7 Intellectual Property
|
||
|
||
The URI Record Type Definition Specification conforms to the Intellectual Property guidelines
|
||
specified in the NFC Forum's Intellectual Property Right Policy, as approved on November 9,
|
||
2004 and outlined in the NFC Forum Rules of Procedures, as approved on December 17, 2004.
|
||
|
||
URI Record Type Definition Page 2
|
||
|
||
|
||
Overview
|
||
|
||
### 1.8 Acronyms
|
||
|
||
This table defines all relevant terms and acronyms used in this specification.
|
||
|
||
```
|
||
Table 1. Acronyms
|
||
```
|
||
Acronyms Definition
|
||
|
||
NDEF NFC Data Exchange Format
|
||
|
||
URI Uniform Resource Identifier
|
||
|
||
URL Uniform Resource Locator (this is a special case of an URI)
|
||
|
||
RFU Reserved for Future Use
|
||
|
||
NFC Near Field Communication
|
||
|
||
URI Record Type Definition Page 3
|
||
|
||
|
||
URI Service
|
||
|
||
## 2 URI Service
|
||
|
||
This document defines URI Service with data model, describing the application scenarios for
|
||
simple Smart Poster applications, the structure of an URI located on an NFC compliant device or
|
||
tag, and provides examples.
|
||
|
||
The URI record type MAY also be used as a part of some other RTD, in which case it implies no
|
||
specific action. A typical example of this might be a case where the developer wants to build his
|
||
own record type containing multiple URLs. In this case, it is impossible to divine the meaning of
|
||
each URL automatically, so it is left to the handler taking care of the developer’s own type.
|
||
|
||
Devices are NOT required to implement any particular URI protocol.
|
||
|
||
### 2.1 NDEF Message Sequences
|
||
|
||
There are no specific message sequences.
|
||
|
||
### 2.2 Dependencies
|
||
|
||
The Smart Poster RTD [SMARTPOSTER] may be considered to be an extended version of the
|
||
URI RTD. It uses auxiliary records to add metadata to the URI.
|
||
|
||
URI Record Type Definition Page 4
|
||
|
||
|
||
NDEF Structure
|
||
|
||
## 3 NDEF Structure
|
||
|
||
### 3.1 Messaging Sequence
|
||
|
||
There is no particular messaging sequence.
|
||
|
||
### 3.2 Records Mapping
|
||
|
||
#### 3.2.1 URI Record Type
|
||
|
||
The Well Known Type for an URI record is “U” (0x55 in the NDEF binary representation).
|
||
|
||
The structure of an URI record is described below.
|
||
|
||
```
|
||
Table 2. URI Record Contents
|
||
```
|
||
```
|
||
Name Offset Size Value Description
|
||
Identifier
|
||
code
|
||
```
|
||
```
|
||
0 1 byte URI identifier code The URI identifier code, as
|
||
specified in Table 3.
|
||
URI
|
||
field
|
||
```
|
||
```
|
||
1 N UTF-8 string The rest of the URI, or the entire
|
||
URI (if identifier code is 0x00).
|
||
```
|
||
#### 3.2.2 URI Identifier Code
|
||
|
||
In order to shorten the URI, the first byte of the record data describes the protocol field of an
|
||
URI. The following table MUST be used to encode and decode the URI, though applications
|
||
MAY use the 0x00 value to denote no prefixing when encoding, regardless of whether there
|
||
actually is a suitable abbreviation code.
|
||
|
||
For explanations of the different protocols, please refer to the protocol documentations
|
||
themselves. NFC devices are not required to support any particular protocol.
|
||
|
||
```
|
||
Table 3. Abbreviation Table
|
||
```
|
||
```
|
||
Decimal Hex Protocol
|
||
0 0x00 N/A. No prepending is done, and the URI field
|
||
contains the unabridged URI.
|
||
```
|
||
```
|
||
1 0x01 http://www.
|
||
2 0x02 https://www.
|
||
3 0x03 http://
|
||
4 0x04 https://
|
||
5 0x05 tel:
|
||
6 0x06 mailto:
|
||
7 0x07 ftp://anonymous:anonymous@
|
||
```
|
||
```
|
||
8 0x08 ftp://ftp.
|
||
9 0x09 ftps://
|
||
```
|
||
URI Record Type Definition Page 5
|
||
|
||
|
||
NDEF Structure
|
||
|
||
```
|
||
Decimal Hex Protocol
|
||
10 0x0A sftp://
|
||
11 0x0B smb://
|
||
12 0x0C nfs://
|
||
13 0x0D ftp://
|
||
14 0x0E dav://
|
||
15 0x0F news:
|
||
```
|
||
```
|
||
16 0x10 telnet://
|
||
17 0x11 imap:
|
||
18 0x12 rtsp://
|
||
19 0x13 urn:
|
||
20 0x14 pop:
|
||
21 0x15 sip:
|
||
22 0x16 sips:
|
||
```
|
||
```
|
||
23 0x17 tftp:
|
||
24 0x18 btspp://
|
||
25 0x19 btl2cap://
|
||
26 0x1A btgoep://
|
||
27 0x1B tcpobex://
|
||
28 0x1C irdaobex://
|
||
29 0x1D file://
|
||
```
|
||
```
|
||
30 0x1E urn:epc:id:
|
||
31 0x1F urn:epc:tag:
|
||
32 0x20 urn:epc:pat:
|
||
33 0x21 urn:epc:raw:
|
||
34 0x22 urn:epc:
|
||
35 0x23 urn:nfc:
|
||
36...255 0x24..0xFF RFU
|
||
```
|
||
For example, if the content of this field is 0x02, and the content of the URI field reads as “nfc-
|
||
forum.org”, the resulting URI is “https://www.nfc-forum.org”.
|
||
|
||
If the content this field is zero (0x00), then NO prepending SHALL be done.
|
||
|
||
All fields marked RFU SHALL be treated as if they were value zero (no prepending). A
|
||
compliant system MUST NOT produce values that are marked RFU.
|
||
|
||
URI Record Type Definition Page 6
|
||
|
||
|
||
NDEF Structure
|
||
|
||
#### 3.2.3 URI Field
|
||
|
||
This field provides the URI as per RFC 3987 [RFC 3987] (so that it is actually an IRI, or
|
||
Internationalized Resource Identifier, but for legacy reasons we use the word URI). This IRI can
|
||
be a URL or URN as explained before. The encoding used MUST be UTF-8, unless the URI
|
||
scheme specifies some particular encoding.
|
||
|
||
The length of the IRI can be calculated by taking the length of the payload, and subtracting 1 for
|
||
the protocol abbreviation code byte. This is the length in bytes, not in characters (as UTF-8
|
||
characters can occupy more than one byte).
|
||
|
||
URIs are defined only in the 7-bit US-ASCII space. Therefore, a compliant application SHOULD
|
||
transform the UTF-8 IRI string to a 7-bit US-ASCII string by changing code points above 127
|
||
into the proper encoding. This coding has been defined in the RFC 3987 [RFC 3987] and IDN
|
||
[RFC 3492] documents. For different schemes, the encoding may be different.
|
||
|
||
For example, if the URI (after the prepending of the URI type field) contains the following string:
|
||
“http://www.hääyö.com/”, it is transformed, as per standard IDN [RFC 3492] rules, into
|
||
“http://www.xn--hy-viaa5g.com” before acting on it. Most modern applications already support
|
||
this new Internationalized Resource Identifier (IRI) scheme. It is RECOMMENDED that
|
||
implementations include support for IRI where display of the URI in human-readable form is
|
||
anticipated.
|
||
|
||
To clarify: yes, the URI MAY contain UTF-8 characters. However, the Internet cannot handle
|
||
them, and therefore the URI needs to be transformed before use. For most devices, this
|
||
conversion is handled by the application.
|
||
|
||
Any character value within the URI between (and including) 0 and 31 SHALL be recorded as an
|
||
error, and the URI record to be discarded. Any invalid UTF-8 sequence SHALL be considered an
|
||
error, and the entire URI record SHALL be discarded.
|
||
|
||
URI Record Type Definition Page 7
|
||
|
||
|
||
Handling Guideline
|
||
|
||
## 4 Handling Guideline
|
||
|
||
The URI RTD does not define any specific action that the device is required to perform. This is
|
||
left to the implementation.
|
||
|
||
Please see the Smart Poster RTD [SMARTPOSTER] for an example on how to use the URI RTD
|
||
in your own application.
|
||
|
||
URI Record Type Definition Page 8
|
||
|
||
|
||
Examples
|
||
|
||
## A. Examples
|
||
|
||
These examples omit the MB and ME flags from the URI RTD, and assume the Short Record
|
||
format. See the NDEF specification [NDEF] for more information.
|
||
|
||
### A.1 Simple URL with No Substitution
|
||
|
||
To put the URL [http://www.nfc.com](http://www.nfc.com) on a tag using the NDEF protocol, add the following byte
|
||
sequence. Total length: 12 bytes.
|
||
|
||
```
|
||
Table 4. Simple URL with No Substitution
|
||
```
|
||
```
|
||
Offset Content Explanation
|
||
```
|
||
```
|
||
0 0xD1 SR = 1, TNF = 0x01 (NFC Forum Well Known
|
||
Type), ME=1, MB=1
|
||
1 0x01 Length of the Record Type (1 byte)
|
||
```
|
||
```
|
||
2 0x08 Length of the payload (8 bytes)
|
||
```
|
||
```
|
||
3 0x55 The URI record type (“U”)
|
||
```
|
||
```
|
||
4 0x01 URI identifier (“http://www.”)
|
||
```
|
||
```
|
||
5 0x6e 0x66 0x63 0x2e
|
||
0x63 0x6f 0x6d
|
||
```
|
||
```
|
||
The string “nfc.com” in UTF-8.
|
||
```
|
||
### A.2 Storing a Telephone Number
|
||
|
||
To store a telephone number (for example, to make a mobile phone make a call to this number),
|
||
use the following byte sequence. The number is ‘+358-9-1234567’. Total length is 17 bytes.
|
||
|
||
```
|
||
Table 5. Storing a Telephone Number
|
||
```
|
||
```
|
||
Offset Content Explanation
|
||
```
|
||
```
|
||
0 0xD1 SR = 1, TNF = 0x01 (NFC Forum Well Known
|
||
Type), MB=1, ME=1
|
||
1 0x01 Length of the Record Type (1 byte)
|
||
```
|
||
```
|
||
2 0x0D Length of the payload (13 bytes)
|
||
```
|
||
```
|
||
3 0x55 The Record Name (“U”)
|
||
```
|
||
```
|
||
4 0x05 Abbreviation for “tel:”
|
||
```
|
||
```
|
||
5 0x2b 0x33 0x35 0x38
|
||
0x39 0x31 0x32 0x33
|
||
0x34 0x35 0x36 0x37
|
||
```
|
||
```
|
||
The string “+35891234567” in UTF-8.
|
||
```
|
||
URI Record Type Definition Page 9
|
||
|
||
|
||
Examples
|
||
|
||
### A.3 Storing a Proprietary URI on the Tag
|
||
|
||
To store a proprietary URI, you can use the following byte sequence. The URI in this case is
|
||
“mms://example.com/download.wmv”. Total length is 35 bytes.
|
||
|
||
```
|
||
Table 6. Storing a Proprietary URI on the Tag
|
||
```
|
||
```
|
||
Offset Content Explanation
|
||
```
|
||
```
|
||
0 0xD1 SR = 1, TNF = 0x01 (NFC Forum Well Known
|
||
Type), MB=1, ME=1
|
||
1 0x01 Length of the Record Type (1 byte)
|
||
```
|
||
```
|
||
2 0x1F Length of the payload (31 bytes)
|
||
```
|
||
```
|
||
3 0x55 The Record Name (“U”)
|
||
```
|
||
```
|
||
4 0x00 No abbreviation
|
||
```
|
||
```
|
||
5 0x6d 0x6d 0x73 0x3a
|
||
0x2f 0x2f 0x65 0x78
|
||
0x61 0x6d 0x70 0x6c
|
||
0x65 0x2e 0x63 0x6f
|
||
0x6d 0x2f 0x64 0x6f
|
||
0x77 0x6e 0x6c 0x6f
|
||
0x61 0x64 0x2e 0x77
|
||
0x6d 0x76
|
||
```
|
||
```
|
||
The string
|
||
“mms://example.com/download.wmv“.
|
||
```
|
||
URI Record Type Definition Page 10
|
||
|
||
|
||
Revision History
|
||
|
||
## B. Revision History
|
||
|
||
The following table outlines the revision history of the RTD_URI Technical Specification.
|
||
|
||
```
|
||
Table 7. Revision History
|
||
```
|
||
Document
|
||
Name
|
||
|
||
```
|
||
Revision and
|
||
Release Date
|
||
```
|
||
```
|
||
Status Change Notice Supersedes
|
||
```
|
||
NFCForum-TS-
|
||
RTD_URI_1.0
|
||
|
||
```
|
||
1.0, July 2006 Final None
|
||
```
|
||
URI Record Type Definition Page 11
|
||
|
||
|