2014. 5. 26. 10:50ㆍPrograming/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 리스트를 확인하고 싶으시면 아래 링크로 가시면 됩니다.
'Programing > Android / Java' 카테고리의 다른 글
[안드로이드] 커스텀 탭 위젯 (Android Custom Tab Widget Background) (0) | 2014.06.12 |
---|---|
[안드로이드] sendStickyBroadcast() / sendBroadcast() (2) | 2014.06.12 |
안드로이드 블루투스 프로토콜 UUID 리스트 (Android Bluetooth SPP UUID) (0) | 2014.05.26 |
[Open Source] Android Voice Recorder with Waveform (0) | 2014.05.23 |
What is Instance (인스턴스란?) (5) | 2014.05.12 |