새소식

개념 및 용어

[BLE] Services and characteristics

  • -

ATT 계층은 서버의 데이터베이스에서 데이터가 어떻게 저장되고 접근되는지를 정의한다.
 
데이터
- >속성(Attributes)이라는 데이터 구조의 형태로 저장된다.
 
속성
- 속성은 사용자 데이터속성 자체에 대한 메타데이터(속성 유형, 보안 권한 등)를 포함한다.
- ATT 서버와 클라이언트 간, 또는 GATT 서버와 클라이언트 간의 데이터 교환은 속성의 형태로 이루어진다.
- 속성만을 논할 때 =>  ATT 서버에 저장된다고 한다.
- 반면, 속성을 서비스와 특성으로 분류할 때 => 이를 GATT 서버의 데이터 구조라고 한다.
 
속성은 네 가지 주요 구성 요소로 이루어져 있다.
 

속성 (Attributes)

 

  • 핸들 (Handle): 특정 속성에 할당된 16비트 고유 인덱스
  • 유형 (UUID): 속성의 유형을 나타내는 범용 고유 식별자(UUID).
  • 권한 (Permissions): 속성에 접근하기 위해 필요한 보안 수준과 읽기/쓰기 가능 여부를 정의
  • 값 (Value): 속성에 저장된 실제 데이터

 

범용 고유 식별자 (UUID)

UUID는 속성과 그 중요성을 식별하는 데 중요하다. BLE에서는 두 가지 유형의 UUID가 있다.

  1. SIG 정의 16비트 UUID: 효율적이고 메모리를 절약하지만 고유 ID의 수가 제한적
  2. 128비트 UUID: 사용자 정의 서비스와 특성에 사용되며, 더 넓은 범위의 고유 ID를 제공 
    EX) 기본 UUID는 4A98-xxxx-1CC4-E7C1-C757-F1267DD021E8과 같으며, 이 중 xxxx 부분에 16비트 ID를 삽입하여 사용.

 

서비스 (Services)

 
서비스는 표준화된 형식으로 조직된 속성의 모음이다. 서비스 정의(Service Define)는 **서비스 선언 속성 (Service Declaration Attribute)**으로 시작한다.
Service Declaration Attribute는 다음을 포함한다.
 

 

  • 핸들 (Handle): 속성의 주소를 나타내는 행 번호와 유사.
  • 유형 (UUID): 서비스 시작을 나타내는 고유 SIG 정의 UUID(예: 0x2800).
  • 권한 (Permissions): 일반적으로 읽기 전용이며, 인증이 필요하지 않음.
  • 값 (Value): 선언된 서비스의 UUID를 저장
     ex) 심박수 서비스: UUID 0x180D로 식별

 

특성 (Characteristics)

서비스는 0개 이상의 특성 정의로 구성될 수 있다. 특성은 최소 두 개 이상의 속성으로 구성된다.
 

 
 
 

  • 특성 선언 속성 (Characteristic Declaration Attribute)
    아래의 세 가지 Field를 가진다 
    • Type  :특성의 시작을 나타내며, UUID 0x2803을 사용
    • Permissions :읽기 전용 권한을 가지며, 클라이언트는 값을 읽을 수 있지만 쓸 수는 없다.
    • Value : 선언된 특성에 대한 중요한 정보를 포함하며, 세 개의 개별 Field 로 구성된다.
      • 특성 속성 (Characteristic properties): 해당 특성에서 허용되는 GATT 작업 유형을 나타냄.
      • 특성 값 핸들 (Characteristic value handle): 사용자 데이터(값)를 포함하는 속성의 핸들(주소)로, 특성 값 속성을 의미함.
      • 특성 UUID (Characteristic UUID): 선언된 특성의 UUID 

 
 

  • 특성 값 속성 (Characteristic Value Attribute)
    • 실제 사용자 데이터를 저장
    • Handle과 Type은 위 선언 속성에서 참조하며, 값 필드에 실제 유저 데이터를 저장한다.
  • 특성 설명자 속성 (Characteristic Descriptor Attribute, 선택 사항)
    • 특성에 대한 추가 메타데이터를 저장한다

 
 

Client characteristic configuration descriptor (CCCD)

 
CCCD는 서버가 클라이언트에게 알림(Notification)이나 지시(Indication)를 보낼 수 있도록 하는 특성 설명자이다.
클라이언트는 CCCD를 사용하여 특정 특성에 대한 알림이나 지시를 활성화하거나 비활성화할 수 있다.
 
ex) 심박수 서비스의 심박수 측정 특성에 대해 클라이언트(예: 스마트폰)가 CCCD를 사용하여 알림을 활성화하면, 서버(예: 심박수 센서)가 클라이언트에게 자동으로 측정값을 보냄
 

 

  • CCCD 속성의 형식은 UUID 0x2902로 정의된다.
  • 읽기 및 쓰기 가능
  • CCCD 값 필드는 두 개의 비트를 가지고 있다
    •  첫 번째 비트 : 알림이 활성화되었는지를 나타냄
    • 두 번째 비트 : 지시가 활성화되었는지를 나타냄.

 
 

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

[BLE]GATT operations  (0) 2024.07.13
[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

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

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