블루투스 UUID란? (What is the bluetooth UUID?)

2014. 5. 26. 10:50Programing/Android / Java

블루투스의 UUID란? 

범용 고유 번호(Universally Unique Identifiers)라고 불리며 128비트의 숫자들을 조합한다. 

말 그대로 범용적으로 사용할 수 있는 고유의 ID를 사용하기 위하여 생성되며, 그렇기 때문에 128비트의 Hex조합은 Unique하여야 한다. 

Bluetooth에서는 device에서 제공하는 service를 검색하여 각 service마다 UUID를 부여하는 등 많은 부분에서 사용된다.


UUID의 구성요소

UUID = (time_low) - (time_mid) - (time_high_and_version) - (clock_seq_hi_and_reserved) - (clock_seq_low - node)


// Unique UUID for this application

    private static final UUID MY_UUID_SECURE = UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66");


time_low

    타임 스탬프(시간표시)의 최하위 32비트

time_mid

    타임 스탬프의 16비트 중간 필드

time_high_and_version

    16비트의 값, 이 값의 최하위 12비트는 타임 스탬프의 최상위 12비트, 이 값의 최상위 4비트는 버전번호

clock_seq_hi_and_reserved

    8비트의 값, 이 값의 최하위 6비트는 clock sequence의 최상위 6비트, 이 값의 최하위 2비트는 변형

clock_seq_low - node

    Clock sequence의 최하위 비트들 - 고유 노드 번호


Time stamp는 Universal Time Clock(UTC)를 사용하고 60비트로 조정, 

UTC를 사용할 수 없는 system에서 UUID를 생성할 경우 중복생성이 가능하므로 

이런 경우에는 clock sequence를 적절히 이용하여 UUID를 unique하게 생성한다.


UUID는 SDP에서 서비스의 종류를 구분하기 위해 사용된다. 

SDP Client는 찾고자 하는 service의 UUID를 서버에 보내 이 service의 존재 여부를 확인한다. 


블루투스 device끼리 통신을 하기 위해서 소켓 생성시 UUID가 필요한데 이는 해당 프로토콜을 의미한다. 

안드로이드 플랫폼의 단말기끼리는 어떤 UUID를 사용하여도 되지만 특정 프로토콜의 device에 접근하기 위해서는 아래의 프로토콜 UUID를 사용하여야 한다. 


Bluetooth에 대한 UUID 리스트를 확인하고 싶으시면 아래 링크로 가시면 됩니다.

http://victor8481.tistory.com/287