새소식

개념 및 용어

[BLE]GATT operations

  • -

 

Bluetooth Low Energy(BLE) 에서 GATT계층은 속성( attributes )으로 구성된 서비스와 특성을 정의하고, 이것들은 GATT서버에 저장된다.

앞으로는 BLE에서 데이터의 교환에 대해 설명할 것인데, 이것을 이해하기 위해서는 서버와 클라이언트에서 어떤 작업을 하는지 알아야한다.

 

 

서버와 클라이언트의 데이터 교환 개요

데이터 교환은 아래 두 가지로 이루어진다

  • 서버가 데이터를 직접 클라이언트로 보낸다
  • 클라이언트가 서버로부터 데이터를 요청한다.

이 때, 효과적인 통신을 위해 클라이언트는 서버가 제공하는 서비스(services)와 특성(characteristics)을 알아야한다

따라서, 클라이언트는 연결 초기에 *서비스 검색을 수행하여 서버의 서비스와 특성을 학습한 후, 이것에 접근하기 위한 작업을 수행한다.

 

*서비스 검색
GATT 클라이언트가 GATT 서버에서 Hosting하는 속성 테이블에서, 서비스와 특성을 발견하는 과정

 

 

데이터 접근

GATT 작업은 클라이언트가 데이터를 요청하는 클라이언트 주도 작업과 서버가 데이터를 보내는 서버 주도 작업으로 분류된다.

 

클라이언트 주도 작업

클라이언트 주도 작업은 클라이언트가 GATT 서버로부터 데이터를 요청하는 작업이다. 클라이언트는 속성의 값을 읽거나 쓸 수 있으며, 쓰기 작업의 경우 서버로부터 확인 응답을 받을지 선택할 수 있다.

 

  • Read
    클라이언트가 GATT 서버에 저장된 특정 값을 읽고자 할 때, 서버에 읽기 요청을 보내면 서버는 해당 속성 값을 반환

 

 

  • Write
    클라이언트가 특정 값으로 속성을 쓰고자 할 때, 서버에 쓰기 요청과 데이터를 보낸다.
    서버가 쓰기 작업을 수락하면 확인 응답을 보낸다.

 

  • Write without response
    : 이 작업이 활성화된 경우, 클라이언트는 서버로부터 확인 응답을 기다리지 않고 속성에 데이터를 쓸 수 있다. 이는 빠른 데이터 교환이 필요할 때 사용된다.

 

 

서버 주도 작업

서버 주도 작업은 서버가 클라이언트의 요청 없이 직접 정보를 보내는 작업이다. 이 경우, 서버는 알림(Notify) 또는 지시(Indicate)를 사용할 수 있다.

 

  • Notify
    서버가 특정 속성의 값을 자동으로 클라이언트에게 푸시하는 작업이다.
    Notify는 클라이언트의 확인 응답이 필요하지 않다.

    ex)  최근에 변경된 센서 값을 클라이언트에게 업데이트 

 

  • Indicate
    : 알림(Notify)과 유사하게 속성 값을 클라이언트에게 직접 푸시한다.
    하지만 이 경우 클라이언트의 확인 응답이 필요하다. 

 

서버 주도 작업이 시작되기 전에 클라이언트는 특성에 대해 알림이나 지시를 활성화하여 구독해야 한다. 이는 다음 포스팅에서 자세히 설명할 것이다.

 

'개념 및 용어' 카테고리의 다른 글

[BLE] Services and characteristics  (1) 2024.07.14
[BLE] ATT & GATT  (0) 2024.07.11
[BLE] GAP  (0) 2024.07.11
[BLE] Bluetooth LE  (0) 2024.07.10
npm 과 yarn 라이브러리  (0) 2023.03.18
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.