Fields | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Header | MB | ME | CF | SR | IL | Type Name Format | ||
1 | 1 | 0 | 1 | 0 | 0x01 | |||
Type length | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
Payload length | ? | |||||||
Type 16 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
... | ||||||||
Type 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
Payload n | ||||||||
... | ||||||||
Payload 0 | ||||||||
먼저 헤더 필드의 flag를 지정하면
- 태그에는 1개의 메시지, 1개의 레코드를 사용하므로 MB, ME flag 는 1이다.
- Chunk 되지 않았으므로 0의 값
- 짧은 타입의(Short Record) 레코드 이므로 SR = 1
- ID는 사용하지 않으므로 IL = 0
- TNF(Type Name Format) : NFC Forum well-known type = 0x01
NFC 포럼에서 사용하는 규격의 타입이 아니므로 외부타입으로 만들어줘야 한다.
NDEF 상세에 따라 타입 이름을 작성하면 dns-part:name-part 형식에 맞춰서
Type Name : smartmenu.com:RID
US-ASCII 캐릭터 셋으로하여 byte 배열을 얻으면 문자열 길이대로 17개의 바이트 배열이 나오고 결과는 아래의 값이다.
TYPE LENGTH : 0x11, 17(10)
TYPE : 0x73 0x6d 0x61 0x72 0x74 0x6d 0x65 0x6e 0x75 0x2e 0x63 0x6f 0x6d 0x3a 0x52 0x49 0x44
PAYLOAD 의 문자 인코딩은 UTF-8을 사용하고 PAYLOAD에 들어갈 내용은
식당을 식별할 수 있는 사업자 번호와 테이블을 식별할 수 있는 테이블 번호가 연속으로 들어간다.
이에따라 PAYLOAD의 LENGTH가 결정되고, PAYLOAD에 byte 값을 가지게 된다.
- 최종 작성일 : 11.08.17
[참고 사항(제약)]
1. The External Type MUST be formed by taking the domian 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 2.3]
2. Type Name ABNF format - 아래의 규칙을 따라서 Type Name 작성
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 = “(“ / “)” / “+” / “,” / “-” / “:” / “=“ / “@” / “;” / “$”
[RFC 2234]