본문 바로가기
개발Study/Network

BLE - GATT (내용추가수정240902)

by happy90 2021. 10. 15.
SMALL

GATT(General Attribute)는 bluetooth 프로토콜에서 사용가능한 어플리케이션 프로파일중 하나이다.
BLE 프로파일의 기본 프로파일이다. 주고받을 데이터를 규격화하여 처리하기 편리하도록 구성되어 있다.

이 protocol에 따르면 BLE는 profile, service와 characteristic 이라는 개념을 사용한다.

이해하기 편하게 정리해보자면 chracteristic부터 보면 된다.


1. Characteristic
chracteristic은 GATT에서 가장 하위에 있는 개념이다.
개별 data 단위라고 볼 수 있다.

2. Service
service는 characteristic을 포함한다.
characteristic 하나만 포함시킬 수도 있고, 여러개를 포함시킬 수도 있다.

3. Service와 Characteristic
service와 characteristic은 모두 숫자로 된 고유의 UUID를 갖게 된다.
공식적으로 정해진 UUID들은 16bit의 길이를 갖고, 커스텀으로 생성한 UUID는 128bit로 생성하게 된다.

내가 참고한 사이트에 service와 characteristic의 관계의 예시가 아주 잘 나와있다.
Heart Rate Service는 3개의 characteristic을 갖는다.
Measurment, Body Sensor Location, heart Rate Control Point.

4. Profile
이제 profile을 보면 된다.
profile은 여러개의 service들을 포함하는 개념이다.
GATT 표준 Profile은 여러가지가 정의되어 있다.
흔히 우리가 알고있는 BLE audio(BT이어폰!!), HID(키보드마우스) 등등.

BLE audio가 제공하는 service의 종류가 많지만 딱 하나만 살펴보자.
1) Audio Stream Control Service(ASCS)
 characteristic:
 - Audio Stream Control Point(오디오 스트림의 시작, 중지, 설정, 해제와 같은 제어 명령을 처리),
 - Audio Stream State(오디오 스트림의 현재 상태를 나타냄)

이 외에도 많은 프로파일들이 정의되어 있어, 프로토콜을 직접 구현하지 않아도 사용하기 편리하다.

5. Descriptor
그림에 나오지 않은 개념.
특정 Characteristic에 속하며, Characteristic을 설명하는 metadata를 갖고 있다. option이다.

 

Notification과 Indication
둘은 GATT server가 client에 데이터를 전송하는 방법을 나타낸다.
이 둘은 GATT servier가 업데이트 될 때 GATT table에서
notification은 알려지지 않은 message를 보낼 때 사용하고, indication은 알려진 meesage를 보낼 때 사용한다.
UDP와 같이 전송 후 응답을 확인하지 않는다.
반대로 indication은 전송 후 응답을 확인하여 받을 때까지 다시 전송하는 TCP와 같이 동작한다.

 

GATT 연결과 통신
장치에 따라 pairing과정이 생략될 수도 있다..
보통 sensor가 GATT Server, mobile이 GATT client로 동작한다.
1. sensor advertising
2. mobile에서 scan 및 pairing request
3. passkey확인 후 pairing(sensor에서 bonding을 제공한다면 bonding됨)
4. 이 후 mobile에서 sensor에 GATT client로서 연결 시도
5. 연결 수립시 mobile에서 discover를 시도하여 server의 service, characteristic을 불러옴
6. sensor로부터 받을 데이터가 있다면, discover를 통해 받아온 해당 characteristic의 notify enable setting을 해준다.
7. sensor가 notify로 보낼 데이터를 write characteristic한다. 그러면 notify속성에 의해 연결되어 있는 GATT client에 notify로 데이터가 전송이 된다.
8. sensor에 보낼 데이터가 있다면, discover를 통해 받아온 해당 characteristic에 write를 한다.

 

 

 

 

참고사이트:

https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt

 

Introduction to Bluetooth Low Energy

This guide will give you a high level overview of Bluetooth Low Energy, explaining how data is organised and what makes BLE so interesting.

learn.adafruit.com

 

LIST

'개발Study > Network' 카테고리의 다른 글

BLE(Bluetooth Low Energy)  (0) 2020.12.23

댓글