티스토리 뷰
목차
NFC 전송 데이터 교환 포맷, NDEF 레코드 구조
NFC 데이터 교환 포맷
NFC 포럼은 태그 혹은 NFC 장치 사이의 데이터 전송 시 상호 호환성을 가능하게 NDEF 데이터 공통 포맷을 정의하였습니다. NDEF는 URL, 카드, 그리고 NFC 관련 데이터 타입을 전달할 수 있는 작고 컴팩트한 이진 포맷입니다.
NDEF는 페이로드를 포함하는 일련의 레코드들로 구성된 메시지로 교환됩니다.
. 페이로드 컨텐츠는 URL, MIME 미디어, 혹은 NFC 관련 데이터 타입이 될 수 있음.
. NFC 관련 데이터 타입의 경우 - 페이로드 컨텐츠는 NFC RTD(Record Type Definition)에 정의됨.
. 레코드 내의 데이터 타입과 레코드 크기는 페이로드가 붙여진 헤더에 포함.
. 페이로드의 타입을 식별하기 위한 타입 필드는 헤더에 포함.
. 페이로드 길이 = 페이로드의 옥텟 수.
. 선택적 페이로드 식별자 - 사용자 명령이 NDEF 레코드 내에 전달되는 페이로드를 식별하도록 도움.
다음은 NDEF의 레코드 구조와 사용 예로서 URI 레코드 표현 방법을 나타냅니다.
[NFC 전송 데이터 교환 포맷, NDEF 레코드 구조] TNF 필드 값
NDEF의 레코드 구조
NDEF 레코드는 아래의 [그림 4]와 같은 공통 포맷의 가변길이 레코드입니다. MB, ME, CF, SR, IL은 1비트의 필드를 나타냅니다.
MB (Message Begin) : NDEF 메시지의 시작 설정을 의미.
ME (Message End) : NDEF 메시지의 끝 설정을 의미.
CF (Chunk Flag) : 첫 번째 레코드 청크(Chunk)나 페이로드 청크 중 중간 레코드 청크를 나타냄.
SR (Short Record) : 구조는 [5]와 같으며, 0~255 옥텟 범위 크기의 페이로드 필드에 맞는 컴팩트한 캡슐화를 위함.
IL (ID_LENGTH 필드 有) : 플래그 값이 0이면, ID_LENGTH 필드는 레코드 헤더에서 생략, 레코드의 ID 필드 생략.
TNF (Type Name Format) : 타입(TYPE) 필드 값의 구조를 나타내며, 아래 [표 4]에 정의된 값을 가진 3비트 필드.
[NFC 전송 데이터 교환 포맷, NDEF 레코드 구조] NDEF 레코드 구조
[NFC 전송 데이터 교환 포맷, NDEF 레코드 구조] NDEF 짧은 레코드 구조
TYPE_LENGTH : 8비트의 정수로 필드의 옥텟 주소를 결정
ID_LENGTH : 8비트의 정수로 ID 필드의 옥텟 주소를 결정. ID 필드가 존재하면 IL 플래그는 1로 설정
PAYLOAD_LENGTH : 필드 크기는 SR 플래그 값으로 결정.
SR 플래그가 설정되면 8비트의 정수인 단일 옥텟을 나타내고,
SR 플래그가 설정되지 않으면 32비트인 4개의 옥텟을 나타냄. 옥텟의 전송 순서는 MSB부터 시작
TYPE : 페이로드의 타입을 설명하는 식별자. 타입 필드의 값은 TNF 필드의 값의 구조와 서식 그리고 인코딩을 따름
ID : URI 참조[RFC 3986]에 안에 있는 식별자
PAYLOAD : NDEF 사용자를 위한 페이로드 운반. 페이로드 필드에 운반되는 데이터의 구조는 NDEF에 보이지 않음
NFC 레코드 타입 : TNF가 0x01로 정의되어 있을 때 사용 가능. NFC 레코드 타입은 아래의 [표 5]와 같음
[NFC 전송 데이터 교환 포맷, NDEF 레코드 구조] NFC 레코드 타입
[NFC 전송 데이터 교환 포맷, NDEF 레코드 구조] URI 레코드 구조
URI 레코드 타입[표 6]은 NDEF 프로토콜을 사용하여 태그에 URL http://www.nfc.com을 넣기 위한 레코드 타입 구조를 보여주고 있으며, 전체 길이는 12바이트입니다. 아래의 데모 프로젝트도 참조하세요.
NFC Demo source
TagReader, TagWriter - NFC_-_Demo.zip