[BLE] 저전력 블루투스 BLE(Bluetooth Low Energy)란?
BLE(Bluetooth Low Energy)란?
Bluetooth는 마우스, 키보드 또는 PC와 같은 장치에서 근거리 케이블을 대체하기 위한 무선(wireless) 통신 기술로 시작되었습니다. 초기에는 당시 표준이었던 Bluetooth Classic(BR/EDR)이라는 기술을 사용했습니다. 하지만, Bluetooth Classic에는 큰 문제점이 있었는데 배터리가 빨리 소모된다는 단점이 있었고 많은 불편함이 있었습니다. 그리고 마침내 2010년에 Bluetooth 4.0이 새로운 Bluetooth의 표준으로 채택 되었고 Bluetooth Classic의 단점을 보완하여 훨씬 적은 전력을 사용하고 Bluetooth Classic과 비슷한 성능의 무선 통신이 가능해졌습니다. 당시 배터리 소모 문제는 Bluetooth의 가장 큰 문제점이었기 때문에 이러한 변화는 Bluetooth 업계에 큰 반향을 일으켰습니다. 이런 방식으로 저전력으로 무선 통신하는 방식을 BLE(Bluetooth Low Energy)
라고 불렀으며, Bluetooth 4.0 이후의 버전들은 BLE로 대체해서 부릅니다.
이 두 타입의 Bluetooth 디바이스는 ISM 대역 동일한 브랜드 및 사양 문서를 공유하더라도 서로 호환되지 않습니다. 그러므로, Bluetooth Classic 디바이스는 BLE 디바이스와 직접 통신할 수 없습니다. 그렇기 때문에 스마트폰과 같은 일부 디바이스는 두 가지 타입 모두 추가하여 서로 통신할 수 있도록 구현되어 있습니다. 또한, 두 타입 모두 ISM 대역인 동일한 주파수 스펙트럼인 2.4GHz에서 동작하기 때문에 간섭을 막기위해 40개의 채널을 이용하여 다른 디바이스와의 간섭을 최소화 시킵니다.
BLE(Bluetooth Low Energy)의 특징
BLE의 가장 중요한 기술적인 특징을 요약하면 아래와 같습니다.
- BLE의 주파수 스펙트럼은 2.400 ~ 2.4835 GHz 입니다.
- BLE의 주파수 스펙트럼은 2MHz 간격으로 40개의 채널로 분할합니다.
- BLE의 통신 범위는 BLE 장치의 환경과 사용하는 모드에 따라 크게 달라집니다. 예를 들면, long-range Mode(장거리 모드)에서는 LE 2M PHY high-speed Mode(LE 2M PHY 고속 모드)보다 훨씬 길며, 일반적인 통신 범위는 10-30 미터입니다.
- 전력 소비도 매우 다양하며 응용 프로그램의 구현에 따라 달라집니다. 예를 들면, BLE 매개변수, 사용되는 칩셋에 따라 달라지며 BLE 칩셋의 전력 소비는 일반적으로 15 mA 미만입니다.
- Security(보안)은 BLE 통신에서 선택 사항이며, 이를 구현하는 것은 하드웨어 및 어플리케이션 개발자의 몫 입니다. 구현할 수 있는 보안 수준은 매우 다양합니다.
- 모든 암호화 작업에 대해서, BLE는 128-bit 키와 함께 AES-CCM을 사용합니다.
- BLE는 low-bandwidth data transfer(저대역폭 데이터 전송)을 위해 설계되었습니다. 만약, 고대역폭 어플리케이션을 위해 BLE를 사용하면 저전력 소비에 대한 약속이 깨지게 됩니다. 따라서, 무선 사용을 최대한 최소하면 최적의 전력 소비로 사용할 수 있습니다.
- BLE의 다른 버전은 서로 호환됩니다. 하지만, 통신은 2개의 통신 디바이스 중 낮은 버전의 특징으로 제한될 수 있습니다. 예를 들면, BLE 5.0 버전의 디바이스와 BLE 4.1 버전의 디바이스가 통신을 한다면 BLE 5.0 버전의 특정 기능은 지원되지 않을 수 있습니다. 반면에 연결(Connection), 광고(Primary Advertisements), 서비스 검색(discovering Services), 특성 검색(discovering Characteristics), Characteristics 읽기 / 쓰기는 지원되는 Bluetooth 버전에 상관없이 지원 가능합니다. (BLE 초기 버전에서 지원했기 때문에)
BLE(Bluetooth Low Energy)의 장점 및 한계
장점(Advantages)
낮은 전력 소비
-> 다른 저전력 기술과 비교하더라도, BLE는 경쟁사보다 낮은 전력 소비를 가지고 있습니다. 최적화 되어있으며 라디오를 최대한 끄고 낮은 전송속도로 소량의 데이터를 전송합니다.
공식 사양 문서에 액세스하는 데 비용이 들지 않음
-> 대부분의 다른 무선 프로토콜 및 기술을 사용하는 경우 사양에 액세스하려면 해당 표준에 대한 공식 그룹 혹은 컨소시엄의 구성원이 되어야 하고 그룹 회원이 되려면 상당한 비용이 소요되지만, BLE의 사양 문서는 Bluetooth 웹 사이트에서 무료로 다운로드 할 수 있습니다.
모듈 및 칩셋의 가격이 저렴하다
-> 다른 유사한 기술과 비교했을 때 모듈 및 칩셋의 비용이 저렴합니다.
스마트폰 시장에서 가장 많이 사용중이다
-> BLE는 경쟁 업체인 ZigBee, Z-Wave에 비해 시장 점유율이 굉장히 높습니다.
한계(Limitations)
데이터 처리량(Data throughput)
BLE의 데이터 처리량(Data throughput)
은 라디오가 데이터를 전송하는 속도인 physical radio data rate에 의해 제한됩니다. 이 속도는 사용하는 Bluetooth 버전에 따라 다릅니다. 예를 들면, Bluetooth 4.2 이하의 경우의 속도는 1Mbps로 고정됩니다. 하지만, Bluetooth 5.0 이상에서는 사용 중인 모드 및 PHY에 따라 속도가 달라집니다. Bluetooth 5.0에서는 이전 버전과 같이 기본적으로 1Mbps이고, 고속(high-speed) 기능을 사용할 때 2Mbps가 될 수 있으며, 장거리(long-range) 기능을 사용할 때는 500Kbps 혹은 125Kbps까지 떨어질 수 있습니다.
어플리케이션 계층의 최종 사용자의 경우 데이터 처리량은 아래와 같은 요인으로 무선 데이터 속도보다 훨씬 낮아질 수 있습니다.
패킷 간의 간격
-> Bluetooth의 사양은 사양을 준수하기 위한 요구 사항으로 전송되는 패킷 사이에 150 마이크로초의 간격을 정의합니다. 이 간격은 두 장치간에 데이터가 교환되지 않아서 손실되는 시간입니다.
패킷 오버헤드
-> 모든 패킷에는 헤더 정보 및 어플리케이션 계층보다 낮은 계층의 데이터가 포함되며 이는 전송되는 데이터에는 포함되지만 어플리케이션 계층에는 포함되지 않습니다.
슬레이브 데이터 패킷 요구 사항
-> 데이터를 보낼 필요가 없고, 빈 패킷을 보낼 필요가 없음에도 Slave(Peripheral)에서 데이터 패킷을 보내야 합니다.
데이터 패킷 재전송
-> 패킷 손실 또는 주변 환경의 장치 간섭의 경우 패킷이 손실되거나 손상된 데이터 패킷은 발신자에 의해 재전송 됩니다.
범위(Range)
BLE의 범위(Range)
는 단거리 어플리케이션용으로 설계되었으므로 범위가 제한적입니다.
아래 나열한 요소들은 BLE의 범위를 제한하는 요소들입니다.
2.4GHz ISM 스펙트럼에서 작동
-> 금속 물체, 벽, 물(특히 인체)와 같이 우리 주변에 존재하는 장애물의 영향을 크게 받습니다.
BLE 디바이스는 안테나를 사용
-> 안테나의 성능 및 디자인에 따라 영향을 받습니다. 특히, 내부 안테나인 경우 디바이스 외장 케이스에 따라 성능에 영향을 미치며, 안테나의 방향(orientation)에 따라 더 효과적으로 사용할 수 있습니다.
인터넷 연결을 위한 Gateway 필요
BLE에서 인터넷으로 데이터를 전송하려면, 이 데이터를 수신하기 위해 IP 연결이 동작하는 다른 BLE 디바이스를 이용하거나 인터넷이 있는 장치(예를 들면, 스마트폰)이 필요합니다.
BLE의 구조(Architecture of BLE)
위의 그림은 BLE 아키텍처 내의 여러 계층들을 보여줍니다. BLE 아키텍처의 세 가지 주요 블록은 어플리케이션(application)
, 호스트(HOST)
, 컨트롤러(Controller)
이며 위의 그림은 호스트와 컨트롤러만 보여주고 있지만 호스트 상위 계층에 어플리케이션이 존재하는 구조입니다.
Physical Layer(PHY)
물리 계층(PHY)
은 통신 및 데이터 modulating/de-modulating에 사용되는 무선 하드웨어를 말합니다. BLE는 ISM 대역인 2.4GHz 스펙트럼에서 작동하며, 각각 20MHz로 분리하여 40 RF 채널로 분할됩니다.
40개의 채널 중 3개의 채널은 기본 광고 채널(Primary Advertising Channels)이라고 하고, 나머지 37개의 채널은 보조 광고(Secondary Advertisements) 및 연결 중에 데이터 전송을 하는데에 사용됩니다.
Advertsing은 항상 3개의 기본 광고 채널(혹은 채널의 하위 집합)에서 전송되는 Advertising Packet으로 시작됩니다. 이를 통해 Advertiser를 검색하는 장치가 Advertiser를 찾고 광고 데이터를 읽을 수 있습니다. 그 후, Scanner는 Advertiser가 허용하는 경우 연결을 시작할 수 있습니다. 또한, Scanner는 스캔 요청을 요청할 수 있고, Advertiser가 이 스캔 요청 기능을 지원하는 경우 스캔 응답으로 응답합니다. 스캔 요청 및 스캔 응답을 통해 Advertiser는 이 데이터를 수신하고자 원하는 장치에 추가 광고 데이터를 보낼 수 있습니다.
또한, FHHS(Frequency Hopping Spread Spectrum)를 사용하여 두 통신 장치가 데이터 교환을 위해 무작위로(합의된) 선택된 주파수로 전환할 수 있습니다. 이를 통해서 신뢰성이 크게 향상되고 주변의 다른 장치가 사용하는 주파수 채널을 피해서 사용할 수 있습니다.
전송 파워 레벨(The trasmit power levels)은 Bluetooth 5.0 이상에서 최대값은 100mW (+20 dBm), Bluetooth 4.2 이하는 10mW(+10dBm)이며, 최소값은 0.01mW (-20 dBm)입니다.
데이터 속도(data rate)는 이전 버전(Bluetooth 4.0, 4.1, 4.2)에서는 1Mbps로 고정되었습니다. 이 경우 PHY(Physical Layer Radio)를 1M PHY라고 부르며 Bluetooth 5.0을 포함한 모든 버전에서 필수이며 Bluetooth 5.0에서는 두가지 새로운 새로운 PHY 옵션이 추가되었습니다. 그리고, 2Mbps PHY는 이전 버전의 Bluetooth보다 2배 빠르며, Coded PHY는 장거리 통신에 사용됩니다.
Link Layer(LL)
링크 계층(LL)
은 물리 계층과 추상화 및 직접 상호작용하는 부분으로 일반적으로 하드웨어와 소프트웨어의 조합으로 구현되어 있습니다. 하드웨어에서 소프트웨어에서 중앙처리 장치의 과부화를 막기위해 일반적으로 계산 비용이 많이 들고 쉽게 자동화되는 기능을 처리합니다. (Preamble, Access Address and air protocol, framing, CRC generation and verification, Data whitening, Random number generation, AES encryption). 소프트웨어에서는 BLE 디바이스의 연결 상태인 Link State를 관리합니다. 그리고 무선 상태와 BLE 사양을 충족하는 데에 필요한 타이밍 요구 사항을 관리하는 역할을 수행합니다.
Roles
링크 계층에서는 4가지 역할(Role)
들을 정의하며 논리적으로 두 쌍으로 그룹화할 수 있습니다. Connection을 지원하지 않는 그룹인 Scanner, Advertiser와 Connection을 지원하는 그룹인 Master, Slave로 나눌 수 있습니다.
Scanner
-> Advertising Packet을 Scanning 역할을 수행하는 디바이스
Advertiser
-> Advertising Packet을 보내는 역할을 수행하는 디바이스
Master
-> Connection을 시작하며 관리하는 역할을 수행하는 디바이스
Slave
-> Connection 요청을 수락하고 Master의 timing을 따르는 디바이스
States
BLE 디바이스가 동작하는 주요 상태(state)들이 존재합니다.
디바이스가 광고(Advertising)를 시작하면, 스캐닝(Scanning)하는 디바이스는 해당 디바이스를 찾아 연결을 시도합니다. 그리고 광고를 하는 디바이스가 연결을 허용하면 스캐닝하는 디바이스가 연결(Connected)상태가 됩니다.
링크 계층은 위의 그림과 같이 다양한 상태를 관리하며 기본적으로 아래 5가지 주요 상태가 존재합니다.
Standby State
-> 데이터를 전송하거나 수신하지 않는 기본 상태입니다.
Advertising State
-> 디바이스를 다른 디바이스가 검색하고 읽을 수 있도록 Advertising Packet을 보내는 상태입니다.
Scanning State
-> 디바이스가 광고(Advertising)하는 디바이스를 검색하는 상태입니다.
Initiating State
-> 스캐닝(Scanning) 디바이스가 광고(Advertising)하는 디바이스와 연결하기로 결정한 상태입니다.
Connection State
-> 디바이스가 다른 디바이스와 연결이 설립되고, 다른 디바이스와 정기적으로 데이터를 교환하는 상태입니다. 이 상태는 광고하는 디바이스와 연결을 시도한 디바이스 모두 포함됩니다. 이 연결(Connected) 상태에서 스캐닝(Scanning)하고 연결을 시작한 장치를 Master라고 부르고 광고(Advertising)하던 장치를 Slave라고 부릅니다.
그리고 두 가지 상태가 추가로 존재합니다.
Isochronous Boradcasting -> 주기적으로 발생하는 등시성 데이터 패킷을 브로드캐스팅 합니다.
Synchronization -> 특정 디바이스에서 전송되는 특정 광고 트레인에 속하는 주기적 광고를 수신하는 상태입니다.
Bluetooth Device Address
블루투스 주소(Address)는 MAC 주소와 유사한 48비트 주소로 식별합니다. 주소는 공개 주소(Public Addresses)와 랜덤 주소(Random Addresses) 두 가지 유형이 존재합니다.
공개 주소(Public Address)
-> 공장에서 프로그래밍된 주소이며 변경되지 않고 고정된(Fixed) 주소입니다. IEEE에 등록하고 사용해야 합니다.
랜덤 주소(Random Address)
-> 제조업체는 어떤 유형의 주소를 사용할지 정할수 없기 때문에 이 랜덤 주소를 더 많이 사용합니다. 이 임의의 주소는 런타임에 생성됩니다. 이 주소는 전원 수명 주기(power cycle)동안 변경할 수 없는 고정된 주소를 사용할 수 있는 고정 주소(Static Address)와 특정 시간동안 임시로 사용할 수 있는 주소인 개인 주소(Private Address)로 나뉩니다.
Discover(Advertising & Scanning)
BLE는 프로토콜 스택 구현을 단순화하기 위해 오직 하나의 패킷 포맷과 두 유형의 패킷(advertising과 data 패킷)만을 가지고 있습니다. 각 Advertising Packet은 기본 헤더 정보(Bluetooth 디바이스 주소 포함)와 함께 최대 31 바이트의 Advertising Data Payload를 전달할 수 있습니다. 이 패킷들은 스캐닝 디바이스의 존재 여부와 상관 없이 Advertiser에 의해 전송되며 20ms에서 10.24sec 범위의 광고 간격의 고정된 속도로 전송됩니다. 간격이 짧을수록 Broadcast되는 빈도가 많아지므로 스캐너가 해당 패킷을 수신할 확률이 높아지지만 전송되는 패킷이 많을수록 전력 소비 또한 높아집니다.
위 그림과 같이 광고는 최대 3개의 주파수 채널을 사용하고 Advertiser와 Scanner는 동기화되지 않기 때문에 광고 패킷이 겹치는 경우에만 Scanner가 광고 패킷을 성공적으로 수신할 수 있습니다. Scan Interval은 Scanner 디바이스가 광고 패킷을 수신하는 간격을 의미하고 Scan Window는 Scanner 디바이스가 광고 패킷을 수신하는 시간을 정의합니다.
이 값들은 Advertising Interval과 마찬가지로 라디오를 켜야하는 시간과 직접적인 관련이 있기 때문에 전력 소비에 큰 영향을 미칩니다.
아래는 두 가지 Scan Procedure를 정의합니다.
Passive Scanning
-> Scanner는 Advertising Packet을 수신해도 Advertiser에게 응답하지 않습니다. 그러므로, 해당 Packet을 보낸 Advertiser는 Scanner가 Packet을 수신했다는 사실을 알지 못합니다.
Active Scanning
-> Scanner는 Advertising Packet을 수신한 뒤 Advertiser에게 Scan Request 패킷을 응답합니다. 패킷을 받은 Advertiser는 Scan Response 패킷으로 응답합니다.
Advertising Packet은 속성에 따라 세 가지로 분류할 수 있습니다.
Connectability
Connectable
-> Scanner는 Advertising Packet을 수신 시 연결을 시작할 수 있습니다.
Non-Connectable
-> Scanner는 Advertising Packet을 수신해도 연결을 시작할 수 없습니다. 즉, 이 패킷은 Broadcast 전용 입니다.
Scannability
Scannable
-> Scanner는 Advertising Packet을 수신 시 Scan Request를 보낼 수 있습니다.
Non-Scannable
-> Scanner는 Advertising Packet을 수신 시 Scan Request를 보낼 수 없습니다.
Diriectability
Directed
-> Advertising Packet의 Payload에 Advertiser 및 Scanner 디바이스의 블루투스 Mac Address를 포함합니다. Payload에 사용자 데이터를 포함하는 것은 허용되지 않으므로 모든 Directed Advertising Packet은 연결 가능합니다.
Undirected
-> 이 유형의 Advertising Packet은 특정 Scanner를 대상으로 하지 않으며 Payload에 사용자 데이터를 포함할 수 있습니다.
즉, Advertising Packet Type은 아래 표와 같이 나타낼 수 있습니다.
Advertising Packet Type | Connectable | Scannable | Directed | GAP Name |
ADV_IND | Yes | Yes | No | Connectable Undirected Advertising |
ADV_DIRECT_IND | Yes | No | Yes | Connectable Directed Advertising |
ADV_NONCONN_IND | No | No | No | Non-connectable Undirected Advertising |
ADV_SCAN_IND | No | Yes | No | Scannable Undirected Advertising |
Connections
연결을 설정하기 위해서 Master는 먼저 스캔을 시작하여 Advertiser를 찾습니다. 이 때 Advertising Packet은 블루투스 Mac Address에 혹은 Advertising Packet의 데이터에 따라 필터링할 수 있습니다.
예를 들면, 아래와 같은 데이터를 기반으로 필터링 합니다.
- Device name
- Service UUID
- RSSI
- 기타 등등...
여기서 연결 요청 패킷(CONNECT_REQ)을 보내는 Initiator가 링크 레이어의 Master가 되고 받는 쪽이 링크 레이어의 Slave가 됩니다. Master가 Advertising Packet을 받으면 Slave로 CONNECT_REQ를 보내고 Slave가 응답하면 연결을 설정합니다. 연결 요청 패킷에는 Frequency Hop Increment가 포함되어 있으며, 이는 라이프사이클 동안에 Master와 Slave가 모두 따르는 주파수 호핑 순서(Frequency hopping sequnece)를 결정합니다.
Connection Events
연결은 간단히 말하면 정의된 시간에 동작하는 Slave와 Master 간의 일련의 데이터 교환 과정입니다.
일단 연결이 되면 Master와 Slave는 Connection Events라고 하는 일정한 간격으로 데이터 패킷을 교환합니다
Connection Interval
-> 연결 간격(Connection Interval)은 7.5ms에서 4s 사이 입니다.
Slave latency
-> Slave가 연결 끊김의 위험 없이 skip 할 수 있는 연결 이벤트의 수 입니다.
Connection Supervision timeout
-> 연결이 끊어진 것으로 간주 하기 전에 수신된 두 패킷 사이의 최대 시간입니다.
화이트 리스트(White Lists)란?
화이트 리스트(White lists)
란 BLE 컨트롤러에서 사용할 수 있는 중요한 기능으로 Advertiser 또는 Scanner가 특정 블루투스 디바이스의 Mac Address 배열을 BLE 컨트롤러에 내부적으로 저장해서 화이트 리스트에 없는 디바이스로부터 수신된 모든 Advertising Packet 또는 Connection Request Packet을 삭제하는 기술입니다. 화이트 리스트를 사용을 설정하는 정책을 필터 정책이라고 합니다. 주변에 BLE 디바이스가 많은 경우와 본딩(Bonding)에서 주로 사용됩니다.
HCI(Host Controller Interface) Layer
HCI(Host Controller Interface)
는 호스트 계층이 컨트롤러 계층과 통신할 수 있도록 해주는 Bluetooth 사양에 정의된 표준 프로토콜입니다. 이 계층은 별도의 칩셋에 존재할 수도 있고, 동일한 칩셋에 존재할 수 있습니다. 그러므로, 서로 다른 회사에서 만든 호스트와 컨트롤러 간의 상호 운용성도 가능하므로 하드웨어 개발자는 컨트롤러와 호스트라는 두 개의 Bluetooth 인증 장치를 선택할 수 있으며 호스트와 컨트롤러 계층 간의 통신 측면에서 서로 호환된다는 것을 100% 보장할 수 있습니다.
예를 들면, 호스트와 컨트롤러가 별도의 칩셋에 있어 분리되어 있는 경우 두 모듈 사이의 상호작용을 담당하며 HCI 계층은 물리적 통신 인터페이스를 통해 구현됩니다. 사양에 따라 공식적으로 지원하는 인터페이스는 UART, USB, SDIO(Secure Digital Input Output)입니다. 반면에, 호스트와 컨트롤러가 동일한 칩셋에 있는 경우 HCI 계층은 논리적 인터페이스가 됩니다. 즉, HCI 계층의 역할은 호스트에서 컨트롤러로 명령을 릴레이하고 컨트롤러에서 호스트로 이벤트를 다시 보내는 것입니다.
L2CAP(Logical Link Control and Adaptation Protocol) Layer
L2CAP(Logical Link Control and Adaptation Protocol)
는 상위 레이어와 하위 레이어 사이의 프로토콜 다중화(Protocol Multiplexing) 역할을 합니다. 상위 계층에서 사용하는 여러 프로토콜을 가져와 하위 계층으로 전달되는 BLE packets에 저장합니다. 그 후, 조각화 및 재조합(segmentation and reassembly) 작업을 수행합니다. 전송 측에서는 상위 계층에서 큰 패킷을 가져와 최대 BLE 페이로드 크기에 맞는 chunk로 분할합니다. 수신 측에서는 상위 계층에서 보낸 분할된 패킷들을 하나의 패킷으로 결합합니다.
L2CAP 계층이 처리하는 상위 계층의 프로토콜은 BLE의 경우 ATT(Attribute Protocol) 및 SMP(Security Manager Protocol) 두 가지 주요 프로토콜을 처리합니다.
SM(Security Manager)
SM(Security Manager)
은 두 BLE 디바이스간에 통신할 때 키 생성 및 교환하기 위한 프로토콜과 알고리즘을 정의합니다.
여기에는 5가지의 보안 기능을 가지고 있습니다.
Pairing
-> 두 디바이스 간에 일시적으로 사용할 암호화된 비밀 키를 만드는 과정입니다. 이 비밀 키는 저장되지 않으므로 후속 연결에서 다시 사용할 수 없습니다.
Bonding
-> 두 디바이스 간에 후속 연결에 사용하기 위해 각 Pripheral에 비밀 키를 만들고 저장하는 과정입니다.
Authentication
-> 두 디바이스가 동일한 비밀 키를 공유하는지 확인하는 과정입니다.
Encryption
-> 디바이스 간에 교환되는 데이터를 암호화하는 프로세스입니다. BLE의 암호화는 128-bit AES 대칭키 알고리즘을 사용합니다.
Message Integrity
-> 데이터에 서명하고 다른 디바이스에서 서명을 확인하는 프로세스입니다.
GAP(Generic Access Profile)
GAP(Generic Access Profile)
는 서로 다른 제조사에서 제작한 두 개 이상의 BLE 디바이스가 서로 호환되어 상호 운용할 수 있도록하는 프레임워크를 제공합니다. 즉, GAP는 서로를 검색할 수 있도록 이 프레임워크는 모든 BLE 디바이스가 구현을 해야합니다. 그러므로, GAP에서는 광고(Advertisement)와 연결 설정(Connection Establishment)등의 상호 운용성을 보장하며 BLE Device의 모드(Modes)와 역할(Roles), 프로시저(Procedures), 보안(Security)을 정의합니다.
자세한 내용은 아래 포스트에 정리되어 있습니다.
[BLE] GAP란? - Advertising & Connections
GATT(Generic Attribute Profile)
GATT(Generic Attribute Profile)
는 두 디바이스가 데이터를 교환할 때 어떤식으로 데이터를 구조화시키고 노출시킬 것인지를 정의합니다. GATT에는 서버와 클라이언트라는 두 가지 역할이 존재합니다. 서버는 자신이 가지고 있는 데이터를 노출시켜 다른 디바이스가 제어할 수 있도록 해주는 디바이스이며, 클라이언트는 서버의 노출된 데이터를 읽거나 서버의 동작을 제어하는 목적으로 서버와 인터페이스하는 장치입니다.
자세한 내용은 아래 포스트에 정리되어 있습니다.
[BLE] GATT란? - Services & Characteristics
References
Kevin Townsend, Carles Cufi, "Getting Started with Bluetooth Low Energy: Tools and Techniques for Low-Power Networking", O'REILLY MEDIA (2014)
https://www.bluetooth.com/learn-about-bluetooth/tech-overview/
https://www.bluetooth.com/bluetooth-resources/the-bluetooth-low-energy-primer/
https://microchipdeveloper.com/