본문 바로가기
Game Programming

iBeacon data frame format

by 게임혼 2015. 6. 14.

요즘 진행하는 것은 비콘 또는 BLE기반의 기술들인데


BLE기반의 아이비콘의 경우 애플의 인증이 필요없긴 합니다. classic 호환을 위해서는 MFI 받아야 한다는 거죠 그런데


블루투스 마크를 찍으려면 블루투스 인증도 필요합니다. 각각 2천만원정도 든다는 것이 문제입니다. 


// GAP - Advertisement data (max size = 31 bytes, we use 30 bytes)  
 static uint8 advertData[] =  
 {  
  0x02,  // length of first data structure (2 bytes excluding length byte)  
  0x01,  // AD Type = Flags  
  0x1A,  // Flags value  
   
  0x1A,  // length of second data structure (26 excluding length byte)  
  0xFF,  // GAP_ADTYPE_MANUFACTURER_SPECIFIC  
   
  0x4c, 0x00,  // Company ID (0x4C00 = Apple)   
  0x02, 0x15,  // iBeacon AD indicator  
    
  // Device UUID (16 bytes)  
  0xB9, 0x40, 0x7F, 0x30, 0xF5, 0xF8, 0x46, 0x6E,   
  0xAF, 0xF9, 0x25, 0x55, 0x6B, 0x57, 0xFE, 0x6D,  
   
  0x00, 0x01,  // Major No. for a group of beacons  
  0x00, 0x01,  // Minor No. for each beacon  
  0xC5, // -59 dBm TX power  
 };  


마침 이렇게 아이비콘의 데이터 프레임이 공개되어 있어서 이대로 구성했더니 잘 동작합니다.


왜 아이비콘이냐면 ㅜㅜ 애플은 Peripheral 기반의 장치는 백그라운드에서 구동 및 검색이 안됩니다.


iBeacon만 가능해요.


그래서 장치를 아이비콘으로 속여야 합니다. 그런데 이렇게 하면 Advertisement data가 은닉되는 문제도 있지만요.


ㅎㅎ;


iBeacon은 내부적으로 비콘 캐시를 가지고 해당 캐시가 비워지거나 리플레시 되려면 3~10초 가량이 소요됩니다.


beacon in 에서 beacon out까지 무조건 해당 시간을 유지한다는 거죠. 이 부분은 비콘이 단방향 통신을 하기 때문에 어쩔 수 없는 선택입니다.


iOS9에서는 좀 다를까 했는데 아직 어렵네요.


이에 반해서 안드로이드는 완전 맘대로 하라는 거 같을 정도입니다.


마지막으로 flag value는 디바이스 업체마다 다른 규격을 가지고 있습니다.


1A # Flags value 0x1A = 000011010  
   bit 0 (OFF) LE Limited Discoverable Mode
   bit 1 (ON) LE General Discoverable Mode
   bit 2 (OFF) BR/EDR Not Supported
   bit 3 (ON) Simultaneous LE and BR/EDR to Same Device Capable (controller)
   bit 4 (ON) Simultaneous LE and BR/EDR to Same Device Capable (Host)

대부분은 1A가 아니라 06으로 픽스됩니다. 이 부분은 하드웨어의 지원여부이니까 속이면 좋지 않아요.


이제 좀 더 이 기술을 활용하여 프라레슬러나 만들어봐야죠 ㅎㅎ

'Game Programming' 카테고리의 다른 글

GH2D for Unity3d update  (0) 2015.11.15
Unreal 대이동의 시작!  (0) 2015.08.25
Unity 5 custom font bug  (0) 2015.05.26
Unity3d ugui - Pixel per unit  (0) 2015.05.03
핫스팟 추가!  (0) 2015.04.25