Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

HCI 요구사항

Host Controller Interface(HCI)는 블루투스 컨트롤러와 상호작용하는 데 사용됩니다.

이 문서에서는 블루투스(BT) 및 저전력 블루투스(BLE) HCI 요구사항 목록을 제공합니다. 목표는 호스트 블루투스 스택 공급업체와 블루투스 컨트롤러 공급업체에서 플랫폼 요구사항을 준수하여 아래 설명된 기능 집합을 사용할 수 있도록 하는 것입니다.

이 문서에서는 블루투스 코어 5.2 사양을 '사양'으로 지칭합니다. 블루투스 코어 5.2 사양은 블루투스 SIG 웹사이트와 기타 채택된 문서에서 확인할 수 있습니다.

일반 설계 개요

칩 기능 및 구성

Android는 개방형 플랫폼으로 소프트웨어 버전, OEM, 공급업체, 플랫폼, 칩 기능 등의 기반을 갖추고 있습니다.

변화하는 환경과 이전을 관리하기 위해 블루투스 컨트롤러에서 기능(표준 블루투스 코어 5.2 사양 이상)을 제공하도록 하는 설계 논리가 이 문서에 설명되어 있습니다. 호스트 블루투스 스택은 이러한 기능을 통해 어떤 기능을 사용할지 결정할 수 있습니다.

개방형 표준 지원

Android의 목표 중 하나는 블루투스 사양에서 승인을 얻은 후 개방형 표준을 지원하는 것입니다. 아래에서 설명된 기능을 향후 블루투스 사양의 표준 HCI 메서드에서 사용할 수 있게 되면 이 접근 방식을 기본으로 설정할 예정입니다.

공급업체별 기능

공급업체별 명령어: LE_Get_Vendor_Capabilities_Command

명령 코드 명령어 필드(OCF): 0x153

명령어 매개변수 크기 목적
NA 비어 있는 명령어 매개변수 목록

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
max_advt_instances
(지원 중단됨)
1옥텟 지원되는 광고 인스턴스의 수

v0.98 이후 예약됨.
이 매개변수는 Google 기능 사양 v0.98 이상에서 더 이상 지원되지 않으며 블루투스 사양 버전 5.0 이상에서 사용 가능한 LE 확장 광고로 대체되었습니다.
offloaded_resolution_of_private-address
(지원 중단됨)
1옥텟 RPA의 블루투스 칩 기능.
칩에서 지원하는 경우 호스트에서 사용 설정해야 합니다.
0 = 사용 가능하지 않음
1 = 사용 가능

v0.98 이후 예약됨.
이 매개변수는 Google 기능 사양 v0.98 이상에서 더 이상 지원되지 않으며 블루투스 사양 버전 4.2 이상에서 사용 가능한 개인 정보 보호 기능으로 대체되었습니다.
total_scan_results_storage 2옥텟 스캔 결과를 바이트 단위로 저장하는 저장소
max_irk_list_sz 1옥텟 펌웨어에서 지원되는 IRK 항목 수
filtering_support 1옥텟 컨트롤러에서 필터링 지원
0 = 지원되지 않음
1 = 지원됨
max_filter 1옥텟 지원되는 필터의 수
activity_energy_info_support 1옥텟 활동 및 에너지 정보 보고 지원
0 = 사용 가능하지 않음
1 = 사용 가능
version_supported 2옥텟 지원되는 Google 기능 사양의 버전 지정
byte[0] = 주 번호
byte[1] = 부 번호

v1.00
byte[0] = 0x01
byte[1] = 0x00
total_num_of_advt_tracked 2옥텟 OnLost/OnFound 목적으로 추적한 총 광고주 수
extended_scan_support 1옥텟 확장 스캔 창 및 간격 지원
debug_logging_supported 1옥텟 컨트롤러의 바이너리 디버깅 정보 로깅 지원
LE_address_generation_offloading_support
(지원 중단됨)
1옥텟 0 = 지원되지 않음
1 = 지원됨

v0.98 이후 예약됨.
이 매개변수는 Google 기능 사양 v0.98 이상에서 더 이상 지원되지 않으며 블루투스 사양 버전 4.2 이상에서 사용 가능한 개인 정보 보호 기능으로 대체되었습니다.
A2DP_source_offload_capability_mask 4옥텟 지원되는 코덱 유형에 따른 비트 마스크
비트 0 - SBC
비트 1 - AAC
비트 2 - APTX
비트 3 - APTX HD
비트 4 - LDAC
비트 5~31은 예약됨
bluetooth_quality_report_support 1옥텟 블루투스 품질 이벤트 보고 지원
0 = 사용 가능하지 않음
1 = 사용 가능
dynamic_audio_buffer_support 4옥텟 블루투스 컨트롤러에서 동적 오디오 버퍼 지원
지원되는 코덱 유형에 따른 비트 마스크
비트 0 - SBC
비트 1 - AAC
비트 2 - APTX
비트 3 - APTX HD
비트 4 - LDAC
비트 5~31은 예약됨

스캔 결과 일괄 처리

설계 목표는 블루투스 저전력 스캔 응답 이벤트 알림이 호스트로 전송되는 방식을 개선하여 호스트의 전력 소비량을 줄이는 것입니다.

호스트 애플리케이션 프로세서가 결과를 스캔하도록 컨트롤러에서 알리는 빈도를 줄이면 프로세서가 유휴/절전 상태로 더 오래 유지될 수 있습니다. 이렇게 하면 호스트의 전력 소비량을 줄일 수 있습니다. LE_Get_Vendor_Capabilities_Command의 반환 매개변수 total_scan_results_storage는 칩의 스캔 결과 저장 기능을 나타냅니다.

이 기능은 블루투스 컨트롤러의 저전력 스캔 결과 저장 기능의 관리 및 구성에 중점을 둡니다. 저장소는 일시적으로 광고 데이터를 일괄 처리하고 호스트로 나중에 전송할 수 있도록 컨트롤러에서 수신한 데이터 및 메타데이터를 스캔하는 데 사용됩니다.

펌웨어는 동시에 관여할 수 있는 두 가지 유형의 일괄 처리를 지원합니다.

  • 잘림 처리됩니다. {MAC, TX Power, RSSI, Timestamp}와 같은 정보 요소를 포함합니다.
  • 잘림 처리되지 않습니다. {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}와 같은 정보 요소를 포함합니다.

LE_Batch_Scan_Command

OCF: 0x156

명령어 매개변수 크기 목적
Batch_Scan_opcode 1옥텟 0x1 - 고객별 기능 사용 설정
0x2 - 일괄 스캔 저장소 매개변수 설정
0x3 - 일괄 스캔 매개변수 설정
0x4 - 일괄 스캔 결과 매개변수 읽기

이 명령어에 관해 Command Complete 이벤트가 생성됩니다. 사용자별 기능을 사용 설정한다고 해서 스캔이 시작되는 것은 아닙니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Batch_Scan_opcode 1옥텟 0x1 - 고객별 기능 사용 설정
0x2 - 일괄 스캔 저장소 매개변수 설정
0x3 - 일괄 스캔 매개변수 설정
0x4 - 일괄 스캔 결과 매개변수 읽기

LE_Batch_Scan_Command: 고객별 기능 사용 설정

Sub OCF: 0x01

하위 명령어 매개변수 크기 목적
enable_customer_specific_feature_set 1옥텟 0x01 - 일괄 스캔 기능 사용 설정
0x00 - 일괄 스캔 기능 사용 중지

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Batch_Scan_opcode 1옥텟 0x1 - 고객별 기능 사용 설정
0x2 - 일괄 스캔 저장소 매개변수 설정
0x3 - 일괄 스캔 매개변수 설정
0x4 - 일괄 스캔 결과 매개변수 읽기

LE_Batch_Scan_Command: 일괄 스캔 저장소 매개변수 설정 하위 명령어

Sub OCF: 0x02

하위 명령어 매개변수 크기 목적
Batch_Scan_Full_Max 1옥텟 전체 스타일에 할당된 최대 저장공간(%)
[범위: 0~100]
Batch_Scan_Truncated_Max 1옥텟 잘린 스타일에 할당된 최대 저장공간(%)
[범위: 0~100]
Batch_Scan_Notify_Threshold 1옥텟 개별 저장소 풀의 설정 알림 수준(%)
[범위: 0~100]
0으로 설정하면 알림이 사용 중지됩니다. 공급업체별 HCI 이벤트가 생성됨(저장소 임계값 위반 하위 이벤트)

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Batch_scan_opcode 1옥텟 0x02 [일괄 스캔 매개변수 설정]

LE_Batch_Scan_Command: 일괄 스캔 매개변수 설정 하위 명령어

Sub OCF: 0x03

하위 명령어 매개변수 크기 목적
Batch_Scan_Mode 1옥텟 0x00 – 일괄 스캔이 사용 중지됨
0x01 – 잘린 모드가 사용 설정됨
0x02 – 전체 모드가 사용 설정됨
0x03 – 잘린 모드 및 전체 모드가 사용 설정됨
Duty_cycle_scan_window 4옥텟 일괄 스캔의 스캔 시간(슬롯 수)
Duty_cyle_scan_interval 4옥텟 일괄 스캔 간격 주기(슬롯 수)
own_address_type 1옥텟 0x00 - 공개 기기 주소
0x01 - 임의 기기 주소
Batch_scan_Discard_Rule 1옥텟 0 - 가장 오래된 광고 삭제
1 - RSSI가 가장 약한 광고 삭제

이 하위 명령어를 사용하면 사용 설정된 일괄 스캔이 시작됩니다. 잘린 스캔의 경우 잘린 스타일의 고유 키가 {BD_ADDR, scan_interval}인 잘린 형식으로 결과가 저장됩니다. 즉, 스캔 간격별로 하나의 BD_ADDR will만 기록됩니다. 잘린 모드로 유지되는 기록은 {BD_ADDR, Tx Power, RSSI, Timestamp}입니다.

전체 모드를 사용 설정하면 활성 스캔이 사용되며 스캔 응답이 기록됩니다. 스캔 간격과 상관없이 전체 스타일 고유 키는 {MAC, Ad packet}입니다. 전체 모드로 유지되는 기록은 {BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}입니다. 전체 스타일에서 동일한 AD 패킷이 여러 스캔 간격에서 여러 번 표시될 때에는 한 번만 기록됩니다. 그러나 잘린 모드에서는 여러 스캔 간격에서 BA_ADDR 표시 여부가 중요합니다(스캔 간격당 1회). RSSI는 스캔 간격 내에서 고유한 광고의 모든 중복 값의 평균입니다.

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Batch_scan_opcode 1옥텟 0x03 [일괄 스캔 매개변수 설정]

LE_Batch_Scan_Command: 일괄 스캔 결과 읽기 하위 명령어

Sub OCF: 0x04

하위 명령어 매개변수 크기 목적
Batch_Scan_Data_read 1옥텟 0x01 - 잘린 모드 데이터
0x02 - 전체 모드 데이터

이 명령어에 관해 Command Complete 이벤트가 생성됩니다. 호스트가 이 명령어를 실행할 때 컨트롤러의 모든 결과가 하나의 Command Complete 이벤트에 적합하지 않을 수도 있습니다. 호스트는 레코드 수에서 Command Complete 이벤트의 상응하는 결과가 0이 될 때까지 이 명령어를 반복 실행하며, 이는 호스트와 통신할 기록이 컨트롤러에 없음을 나타냅니다. 각 Command Complete 이벤트에는 하나의 데이터 유형(전체 또는 잘린 유형)으로 된 여러 기록이 포함될 수 있습니다.

컨트롤러 및 호스트 시간 참조는 동기화되지 않습니다. 타임스탬프 단위는 50밀리초이며 타임스탬프의 값은 호스트에서 Read_Batch_Scan_Results_Sub_cmd를 제공할 때를 기반으로 합니다. 펌웨어에서 명령어 도착 시간이 T_c인 경우 펌웨어에서 타임스탬프가 찍힌 실제 시간은 T_fw입니다. 보고 시간은 T_c~T_fw이며 T_cT_fw 는 펌웨어 시간 도메인에 있습니다. 이를 통해 호스트에서 이벤트가 얼마나 오래 전에 발생했는지를 계산할 수 있습니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Batch_scan_opcode 1옥텟 0x03 [일괄 스캔 매개변수 설정]
Batch_Scan_data_read 1옥텟 형식 식별(잘린 형식 또는 전체 형식)
num_of_records 1옥텟 Batch_Scan_data_read의 기록 수
format_of_data 변수 잘린 모드:
Address[0]: 6옥텟
Address_Type[0]: 1옥텟
Tx_Pwr[0]: 1옥텟
RSSI[0] : 1옥텟
Timestamp[0]: 2옥텟
[상기 형식을 사용한 여러 기록(num_of_records)]

전체 모드:
Address[0]: 6옥텟
Address_Type[0]: 1옥텟
Tx_Pwr[0]: 1옥텟
RSSI[0]: 1옥텟
Timestamp[0]: 2옥텟
Adv packet_len[0]: 1옥텟
Adv_packet[0]: Adv_packet_len 옥텟
Scan_data_resp_len[0]: 1옥텟
Scan_data_resp[0]: Scan_data_resp 옥텟
[상기 형식을 사용한 여러 기록(num_of_records)]

광고 패킷 콘텐츠 필터

컨트롤러에서 광고 패킷 콘텐츠 필터(APCF)를 사용 설정/사용 중지/설정하는 데 사용합니다.

LE_APCF_Command

OCF: 0x157

명령어 매개변수 크기 목적
APCF_opcode 1옥텟 0x00 - APCF 사용 설정
0x01 - APCF 필터링 매개변수 설정
0x02 - APCF 브로드캐스터 주소
0x03 - APCF 서비스 UUID
0x04 - APCF 서비스 요청 UUID
0x05 - APCF 로컬 이름
0x06 - APCF 제조업체 데이터
0x07 - APCF 서비스 데이터

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 반환 상태
APCF_opcode 1옥텟 0x00 - APCF 사용 설정
0x01 - APCF 필터링 매개변수 설정
0x02 - APCF 브로드캐스터 주소
0x03 - APCF 서비스 UUID
0x04 - APCF 서비스 요청 UUID
0x05 - APCF 로컬 이름
0x06 - APCF 제조업체 데이터
0x07 - APCF 서비스 데이터

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

하위 명령어 매개변수 크기 목적
APCF_enable 1옥텟 0x01 - APCF 기능 사용 설정
0x00 - APCF 기능 사용 중지

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
APCF_opcode 1옥텟 0x0 - APCF 사용 설정
APCF_Enable 1옥텟 APCF_enable을 통해 사용 설정/사용 중지

LE_APCF_Command: set_filtering_parameters_sub_cmd

이 하위 명령어는 필터 사양을 추가 또는 삭제하거나 온칩 필터링의 필터 목록을 지우는 데 사용됩니다.

Sub OCF: 0x01

하위 명령어 매개변수 크기 목적
APCF_Action 1옥텟 0x00 - 추가
0x01 - 삭제
0x02 - 지우기
삭제는 지정된 필터 및 다른 표에 있는 관련 기능 항목을 지웁니다.
지우기는 모든 필터 및 다른 표에 있는 관련 항목을 지웁니다.
APCF_Filter_Index 1옥텟 필터 색인(0, max_filter-1)
APCF_Feature_Selection 2옥텟 선택한 기능에 따른 비트 마스크:
비트 0: 브로드캐스터 주소 필터를 사용하도록 설정
비트 1: 서비스 데이터 변경 필터를 사용하도록 설정
비트 2: 서비스 UUID 확인을 사용하도록 설정
비트 3: 서비스 요청 UUID 확인을 사용하도록 설정
비트 4: 로컬 이름 확인을 사용하도록 설정
비트 5: 제조업체 데이터 확인을 사용하도록 설정
비트 6: 서비스 데이터 확인을 사용하도록 설정
APCF_List_Logic_Type 2옥텟 APCF_Feature_Selection에서 지정된 각 기능 선택(비트별 위치)에 관한 논리 연산.
기능이 사용 설정된 경우에만 유효.
비트 위치 값:
0: OR
1: AND
'AND' 논리를 선택하는 경우, ADV 패킷은 목록에 모든 항목을 포함할 때만 필터를 전달합니다.
'OR' 논리를 선택하는 경우 ADV 패킷은 목록에 항목을 포함할 때 필터를 전달합니다.
APCF_Filter_Logic_Type 1옥텟 0x00: OR
0x01: AND
참고: 처음 APCF_Feature_Selection 필드 세 개의 논리 형식은 N/A이며 항상 'AND' 논리입니다. APCF_Feature_Selection 필드 네 개(비트 3~비트 6)에만 적용됩니다.
rssi_high_thresh 1옥텟 [dBm 단위]
광고주는 신호가 RSSI 상위 임계값보다 높은 경우에만 표시되는 것으로 간주됩니다. 그렇지 않으면 펌웨어는 광고주를 인식하지 못하는 것처럼 작동해야 합니다.
delivery_mode 1옥텟 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2옥텟 delivery_modeon_found인 경우에만 유효.
[밀리초 단위]
보고 전 펌웨어에서 추가 광고를 유지하고 수집하는 시간.
onfound_timeout_cnt 1옥텟 delivery_modeon_found인 경우에만 유효.
[수]
onFound의 광고가 onfound_timeout 동안 펌웨어에 남아 있는 경우 일부 광고가 수집되며 광고 수가 확인됩니다. 광고 수가 onfound_timeout_cnt를 초과하면 즉시 OnFound로 보고됩니다.
rssi_low_thresh 1옥텟 delivery_modeon_found인 경우에만 유효.
[dBm 단위]
수신된 패킷의 RSSI가 RSSI 하위 임계값보다 크지 않은 경우 광고주 패킷은 표시되지 않는 것으로 간주됩니다.
onlost_timeout 2옥텟 delivery_modeon_found인 경우에만 유효.
[밀리초 단위]
광고가 검색된 후 lost_timeout 동안 연속으로 표시되지 않으면 손실된 것으로 즉시 보고됩니다.
num_of_tracking_entries 2옥텟 delivery_modeon_found인 경우에만 유효.
[수]
필터당 추적할 총 광고주 수.

RSSI 값은 2의 보수를 사용하여 음의 값을 표현해야 합니다.

호스트는 모든 브로드캐스터 주소에 관해 0x02로 설정된 APCF_Application_Address_type으로 다수의 필터를 구성하여 다양한 필터 조합을 관리할 수 있어야 합니다.

필터링, 일괄 처리, 보고는 서로 관련된 개념이며 모든 광고 및 관련 스캔 응답은 모든 필터를 하나씩 통과해야 합니다. 따라서 이에 따른 작업(delivery_mode)은 필터링과 밀접하게 연결됩니다. 전송 모드는 report_immediately, batch, onFound이며, OnLost 값은 분실 시 OnFound 다음에 온다는 점에서 OnFound와 관련이 있습니다.

이 처리 흐름의 개념 모델을 나타내면 다음과 같습니다.

광고(또는 스캔 응답) 프레임이 수신되면 일련의 순서로 모든 필터에 적용됩니다. 광고는 하나의 필터를 기반으로 즉각적인 보고 및 다른 필터 작업으로 인한 일괄 처리를 발생시킬 수 있습니다.

RSSI 수준 상위 및 하위 임계값은 필터 처리에서 프레임이 표시되는 경우와 컨트롤러에 의해 유효한 패킷이 수신되는 경우에도 제어할 수 있는 기능을 제공합니다. 전송 모드가 즉시 또는 일괄 처리되도록 설정되는 경우 추가 컨트롤러 처리에서 프레임의 RSSI가 고려됩니다. 앱마다 각기 다른 보고 및 일괄 처리 동작이 필요합니다. 이렇게 해야 여러 앱에서 직접 보고 및 펌웨어 결과의 일괄 처리를 동시에 받을 수 있습니다. 예를 들면, 한 앱에서 일괄 스캔을 사용하고 나중에 다른 앱에서 일반 저전력 스캔을 실행하는 경우가 있습니다. 일괄 스캔이 실행되기 전에 프레임워크/앱은 적절한 필터를 설정합니다. 나중에 두 번째 앱에서 일반 스캔을 실행하면 이전의 일괄 처리가 계속됩니다. 하지만 일반 스캔 특성상 이는 개념적으로 null 필터를 모든 기존 필터 및 저전력 스캔 명령어와 함께 추가하는 것과 유사합니다. 저전력 스캔 명령어 매개변수는 활성 상태일 때 우선합니다. 일반 저전력 스캔이 사용 중지된 경우 컨트롤러는 이전 일괄 스캔으로 되돌아갑니다(이전 일괄 스캔이 있는 경우).

OnFound 전송 모드는 구성된 필터를 기반으로 합니다. 필터 작업이 성공하도록 트리거하는 조합은 onLost를 추적할 항목으로 간주됩니다. 이에 상응하는 이벤트는 저전력 광고 추적 하위 이벤트입니다.

필터의 OnFound/OnLost 전환이 사용 설정된 경우 전환은 다음과 같이 표시됩니다.

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
APCF_opcode 1옥텟 0x02 - APCF 필터링 매개변수 설정
APCF_Action 1옥텟 에코 백 명령어의 APCF_Action
APCF_AvailableSpaces 1옥텟 필터 표에서 사용 가능한 항목 수

LE_APCF_Command: broadcast_address_sub_cmd

이 하위 명령어는 광고주 주소를 추가 또는 삭제하거나 온칩 필터링의 광고주 주소 목록을 지우는 데 사용됩니다.

Sub OCF: 0x02

하위 명령어 매개변수 크기 목적
APCF_Action 1옥텟 0x00 - 추가
0x01 - 삭제
0x02 - 지우기
삭제는 지정된 필터에 있는 관련 브로드캐스터 주소를 삭제합니다.
지우기는 지정된 필터의 모든 브로캐스터 주소를 지웁니다.
APCF_Filter_Index 1옥텟 필터 색인(0, max_filter-1)
APCF_Broadcaster_Address 6옥텟 브로드캐스터 주소 목록에 추가하거나 목록에서 삭제할 6바이트 기기 주소
APCF_Application_Address_type 1옥텟 0x00: 공개
0x01: 임의
0x02: NA(주소 유형을 적용할 수 없음)

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
APCF_opcode 1옥텟 0x02 - APCF 브로드캐스터 주소
APCF_Action 1옥텟 에코 백 명령어의 APCF_Action
APCF_AvailableSpaces 1옥텟 브로드캐스트 주소 표에서 여전히 사용 가능한 무료 항목의 수

LE_APCF_Command: service_uuid_sub_cmd

이 하위 명령어는 서비스 UUID를 추가 또는 삭제하거나 온칩 필터링의 서비스 UUID 목록을 지우는 데 사용됩니다.

Sub OCF: 0x03

하위 명령어 매개변수 크기 목적
APCF_Action 1옥텟 0x00 - 추가
0x01 - 삭제
0x02 - 지우기
삭제는 지정된 필터의 지정된 서비스 UUID 주소를 삭제합니다.
지우기는 지정된 필터의 모든 서비스 UUID를 지웁니다.
APCF_Filter_Index 1옥텟 필터 색인(0, max_filter - 1)
APCF_UUID 2, 4, 16옥텟 목록에 추가하거나 목록에서 삭제하기 위한 서비스 UUID(16비트, 32비트 또는 128비트).
APCF_UUID_MASK 2, 4, 16옥텟 목록에 추가할 서비스 UUID 마스크(16비트, 32비트 또는 128비트). 길이는 APCF_UUID.와 같아야 합니다.

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
APCF_opcode 1옥텟 0x03 - APCF 서비스 UUID
APCF_Action 1옥텟 에코 백 명령어의 APCF_Action
APCF_AvailableSpaces 1옥텟 서비스 UUID 표에서 여전히 사용 가능한 무료 항목의 수

LE_APCF_Command: solicitation_uuid_sub_cmd

이 하위 명령어는 요청 UUID를 추가 또는 삭제하거나 온칩 필터링의 요청 UUID 목록을 지우는 데 사용됩니다.

Sub OCF: 0x04

하위 명령어 매개변수 크기 목적
APCF_Action 1옥텟 0x00 - 추가
0x01 - 삭제
0x02 - 지우기
삭제는 지정된 필터의 요청 UUID 주소를 삭제합니다.
지우기는 지정된 필터의 모든 요청 UUID를 지웁니다.
APCF_Filter_Index 1옥텟 필터 색인(0, max_filter - 1)
APCF_UUID 2, 4, 16옥텟 목록에 추가하거나 목록에서 삭제할 요청 UUID(16비트, 32비트 또는 128비트).
APCF_UUID_MASK 2, 4, 16옥텟 목록에 추가할 요청 UUID 마스크(16비트, 32비트 또는 128비트). 길이는 APCF_UUID와 같아야 합니다.

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
APCF_opcode 1옥텟 0x04 - APCF 요청 UUID
APCF_Action 1옥텟 에코 백 명령어의 APCF_Action
APCF_AvailableSpaces 1옥텟 요청 UUID 표에서 여전히 사용 가능한 무료 항목의 수

LE_APCF_Command: local_name_sub_cmd

이 하위 명령어는 로컬 이름 문자열을 추가 또는 삭제하거나 온칩 필터링의 로컬 이름 문자열 목록을 지우는 데 사용됩니다.

Sub OCF: 0x05

하위 명령어 매개변수 크기 목적
APCF_Action 1옥텟 0x00 - 추가
0x01 - 삭제
0x02 - 지우기
삭제는 지정된 필터의 지정된 로컬 이름 문자열을 삭제합니다.
지우기는 지정된 필터의 모든 로컬 이름 문자열을 지웁니다.
APCF_Filter_Index 1옥텟 필터 색인(0, max_filter - 1)
APCF_LocName_Mandata_or_SerData 가변적 크기 로컬 이름의 문자열입니다.

참고:
  • 현재 로컬 이름 문자열의 최대 문자 수는 29자입니다.
  • 작업이 '지우기'인 경우 적용되지 않습니다(0x2).

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
APCF_opcode 1옥텟 0x05 - APCF 로컬 이름
APCF_Action 1옥텟 에코 백 명령어의 APCF_Action
APCF_AvailableSpaces 1옥텟 로컬 이름 표에서 여전히 사용 가능한 무료 항목의 수

LE_APCF_Command: manf_data_sub_cmd

이 하위 명령어는 제조업체 데이터 문자열을 추가 또는 삭제하거나 온칩 필터링의 제조업체 데이터 문자열 목록을 지우는 데 사용됩니다.

Sub OCF: 0x06

하위 명령어 매개변수 크기 목적
APCF_Action 1옥텟 0x00 - 추가
0x01 - 삭제
0x02 - 지우기
삭제는 지정된 필터의 지정된 제조업체 데이터 문자열을 삭제합니다.
지우기는 지정된 필터의 모든 제조업체 데이터 문자열을 지웁니다.
APCF_Filter_Index 1옥텟 필터 색인(0, max_filter - 1)
APCF_LocName_Mandata_or_SerData 가변적 크기 제조업체 데이터의 문자열.

참고:
  • 현재 로컬 이름 문자열의 최대 문자 수는 29자입니다.
  • 작업이 '지우기'인 경우 적용되지 않습니다(0x2).
APCF_ManData_Mask 가변적 크기 목록에 추가할 제조업체 데이터 마스크. 길이는 APCF_LocName_or_ManData_or_SerData와 같아야 합니다.

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
APCF_opcode 1옥텟 0x06 - APCF 제조업체 데이터
APCF_Action 1옥텟 에코 백 명령어의 APCF_Action
APCF_AvailableSpaces 1옥텟 제조업체 데이터 표에서 여전히 사용 가능한 무료 항목의 수

LE_APCF_Command: service_data_sub_cmd

이 하위 명령어는 서비스 데이터 문자열을 추가 또는 삭제하거나 온칩 필터링의 서비스 데이터 문자열 목록을 지우는 데 사용됩니다.

Sub OCF: 0x07

하위 명령어 매개변수 크기 목적
APCF_Action 1옥텟 0x00 - 추가
0x01 - 삭제
0x02 - 지우기
삭제는 지정된 필터의 지정된 서비스 데이터 문자열을 삭제합니다.
지우기는 지정된 필터의 모든 서비스 데이터 문자열을 지웁니다.
APCF_Filter_Index 1옥텟 필터 색인(0, max_filter - 1)
APCF_LocName_Mandata_or_SerData 가변적 크기 서비스 데이터의 문자열.

참고:
  • 현재 로컬 이름 문자열의 최대 문자 수는 29자입니다.
  • 작업이 '지우기'인 경우 적용되지 않습니다(0x2).
APCF_LocName_Mandata_or_SerData_Mask 가변적 크기 목록에 추가할 서비스 데이터 마스크. 길이는 APCF_LocName_or_ManData_or_SerData.와 같아야 합니다.

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
APCF_opcode 1옥텟 0x07 - APCF 서비스 데이터
APCF_Action 1옥텟 에코 백 명령어의 APCF_Action
APCF_AvailableSpaces 1옥텟 서비스 데이터 표에서 여전히 사용 가능한 무료 항목의 수

컨트롤러 활동 및 에너지 정보 명령어

이 정보의 목표는 상위 호스트 시스템 기능이 블루투스 컨트롤러와 매크로 상태를 포함한 모든 구성요소의 활동 전체를 앱 및 프레임워크의 진행 상태와 함께 분석하는 것입니다. 이를 위해서는 블루투스 스택 및 컨트롤러에서 다음 정보가 필요합니다.

  • 블루투스 스택: 컨트롤러의 현재 매크로 작업 상태 보고
  • 펌웨어: 활동 전체 및 에너지 정보 보고

블루투스 호스트 스택 매크로 상태는 사용자 수준에서 다음과 같이 결정됩니다.

  • 유휴: [페이지 스캔, 저전력 광고, 문의 스캔]
  • 스캔: [페이징/문의/연결 시도 중]
  • 활성: [ACL 링크 사용, SCO 연결 진행 중, 절전 모드]

컨트롤러가 수명 기간 동안 추적하는 활동은 Tx 시간, Rx 시간, 유휴 시간, 총 에너지 소비량이며 호스트에서 읽으면 지워집니다.

LE_Get_Controller_Activity_Energy_Info

이는 공급업체별 명령어입니다.

OCF: 0x159

하위 명령어 매개변수 크기 목적
NA 비어 있는 명령어 매개변수

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
total_tx_time_ms 4옥텟 총 Tx 이행 시간
total_rx_time_ms 4옥텟 총 Rx 이행 시간
total_idle_time_ms 4옥텟 총 유휴 시간(비절전 저전력 상태)
total_energy_used 4옥텟 총 에너지 사용량[전류(mA), 전압(V), 시간(밀리초)의 곱]

저전력 확장 스캔 매개변수 설정 명령어

이 명령어를 이용하면 컨트롤러에서 더 큰 스캔 창과 간격을 사용할 수 있습니다. 블루투스 코어 5.2 사양에 따라 스캔 창과 간격의 상한선은 10.24초이므로 애플리케이션의 스캔 간격이 10.24초를 초과할 수는 없습니다.

기본 참조: 블루투스 코어 5.2 사양, 2493페이지(저전력 스캔 매개변수 설정 명령어)

OCF: 0x15A

명령어 매개변수 크기 목적
LE_Ex_Scan_Type 1옥텟 0x00 - 수동 스캔. SCAN_REQ 패킷은 전송될 수 없습니다(기본값).
0x01 - 활성 스캔. SCAN_REQ 패킷이 전송될 수도 있습니다.
LE_Ex_Scan_Interval 4옥텟 컨트롤러가 마지막 저전력 스캔을 시작한 후부터 다음 저전력 스캔을 시작할 때까지의 시간 간격으로 정의됩니다.
범위: 0x0004~0x00FFFFFF
기본값: 0x0010(10밀리초)
시간 = N*0.625밀리초
시간 범위: 2.5밀리초~10442.25초
LE_Ex_Scan_Window 4옥텟 저전력 스캔의 지속 시간. LE_Scan_WindowLE_Scan_Interval 이하여야 합니다.
범위: 0x0004~0xFFFF
기본값: 0x0010(10밀리초)
시간 = N*0.625밀리초
시간 범위: 2.5밀리초~40.95초
Own_Address_Type 1옥텟 0x00 - 공개 기기 주소(기본값)
0x01 - 임의 기기 주소
LE_Ex_Scan_Filter_Policy 0x00 - 모든 광고 패킷 허용(기본값). 이 기기에서 처리되지 않은 직접 광고 패킷은 무시됩니다.
0x01 - White List Only 목록에 없는 기기의 광고 패킷 무시. 이 기기에서 처리되지 않은 직접 광고 패킷은 무시됩니다.

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태

컨트롤러 디버그 정보 가져오기 명령어

이 정보 요소의 목표는 후처리 및 분석을 위해 호스트에서 바이너리 형식으로 컨트롤러 디버그 정보를 얻는 것입니다. 이는 처리 문제를 디버깅하는 데 도움이 되며 분석에 필요한 정보를 로그하는 도구 키트를 엔지니어에게 제공합니다. 컨트롤러는 이벤트(Controller Debug Info 하위 이벤트)를 통해 호스트에서 정보 요청 시 정보를 제공하거나, 컨트롤러에서 원하는 경우 자체적으로 정보를 제공할 수 있습니다. 사용 예시로는 펌웨어 상태 정보, 크래시 덤프 정보, 로깅 정보 등의 보고가 있습니다.

OCF: 0x15B

명령어 매개변수 크기 목적
N/A 비어 있는 명령어 매개변수 목록

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
상태 1옥텟 Command Complete 상태

A2DP 하드웨어 오프로드 지원

A2DP 오프로드 기능은 A2DP 오디오 인코딩 프로세스의 오프로드를 블루투스 컨트롤러에 연결된 오디오 프로세서에 지원합니다. 인코딩된 오디오 데이터 스트림은 블루투스 호스트의 개입 없이 오디오 프로세서에서 블루투스 컨트롤러로 직접 전달됩니다. 블루투스 호스트는 여전히 A2DP 세션의 구성과 제어를 담당합니다.

OCF: 0x15D

A2DP 오프로드 시작

Sub OCF: 0x01

이 명령어를 사용하여 A2DP 오프로드 프로세스를 구성하고 A2DP 스트림을 시작합니다.

명령어 매개변수 크기 목적
코덱 4옥텟 코덱 유형 지정
0x01 - SBC
0x02 - AAC
0x04 - APTX
0x08 - APTX HD
0x10 - LDAC
Max_Latency 2옥텟 허용된 최대 지연 시간(밀리초 단위). 값이 0이면 플러시가 사용 중지됩니다.
SCMS-T_Enable 2옥텟 옥텟 0: SCMS-T 헤더를 추가할 수 있는 플래그.
  • 0x00 - SCMS-T 헤더가 포함되지 않음.
  • 0x01 - SCMS-T 헤더가 포함됨.

옥텟 1: SCMS-T 헤더가 사용 설정될 때의 값.

Sampling_Frequency 4옥텟 0x01 - 44,100Hz
0x02 - 48,000Hz
0x04 - 88,200Hz
0x08 - 96,000Hz
Bits_Per_Sample 1옥텟 0x01 - 샘플당 16비트
0x02 - 샘플당 24비트
0x04 - 샘플당 32비트
Channel_Mode 1옥텟 0x01 - 모노
0x02 - 스테레오
Encoded_Audio_Bitrate 4옥텟 초당 비트로 나타낸 인코딩된 오디오 비트 전송률.
0x00000000 - 오디오 비트 전송률이 지정 / 사용되지 않습니다.
0x00000001 - 0x00FFFFFF - 초당 비트로 나타낸 인코딩된 오디오 비트 전송률입니다.
0x01000000 - 0xFFFFFFFF - 예약되었습니다.
Connection_Handle 2옥텟 구성되고 있는 A2DP 연결의 연결 핸들
L2CAP_Channel_ID 2옥텟 이 A2DP 연결에 사용할 L2CAP 채널 ID
L2CAP_MTU_Size 2옥텟 인코딩된 오디오 패킷을 포함하는 L2CAP MTU의 최대 크기
Codec_Information 32옥텟 코덱별 정보.

SBC 코덱:

A2DP v1.3의 SBC 코덱 관련 정보 요소를 참조하세요.
옥텟 0: 블록 길이 | 부대역 | 할당 메서드
옥텟 1: 최소 Bitpool 값
옥텟 2: 최대 Bitpool 값
옥텟 3: 주파수 샘플링 | 채널 모드
옥텟 4~31: 예약됨

AAC 코덱:

A2DP v1.3의 AAC Codec 사양 정보 요소를 참고하세요.
옥텟 0: 객체 유형
옥텟 1; b7: VBR
옥텟 2~31: 예약됨

LDAC 코덱:

옥텟 0~3: 공급업체 ID
0x0000012D

옥텟 4~5: 코덱 ID
0x00AA - LDAC
다른 값은 모두 예약됨

옥텟 6: 비트 전송률 색인
0x00 - 고
0x01 - 중
0x02 - 저
0x03 - 0x7E - 예약됨
0x7F - 적응형 비트 전송률(ABR)
0x80 - 0xFF - 예약됨

옥텟 7: LDAC 채널 모드
0x01 - 스테레오
0x02 - 듀얼
0x04 - 모노
다른 값은 예약됨

옥텟 8~31: 예약됨

모든 기타 코덱:

옥텟 0~31: 예약됨

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
상태 1옥텟 Command Complete 상태
Sub_Opcode 1옥텟 0x0- A2DP 오프로드 시작

A2DP 오프로드 중지

Sub OCF: 0x02

이 명령어는 A2DP 오프로드 스트림을 중지하는 데 사용됩니다.

명령어 매개변수 크기 목적
N/A 비어 있는 명령어 매개변수 목록.

이 명령어에 관해 정의된 매개변수가 없습니다.

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
상태 1옥텟 Command Complete 상태
Sub_Opcode 1옥텟 0x02 - A2DP 오프로드 중지

Bluetooth Quality Report 명령어

BT Quality Report 명령어 기능은 블루투스 컨트롤러의 메커니즘을 시작하여 Bluetooth Quality 이벤트를 호스트에 보고합니다. 다음 옵션 네 가지를 사용할 수 있습니다.

  • Quality Monitoring Mode: 컨트롤러가 주기적으로 Link Quality 관련 BQR 하위 이벤트를 호스트로 보냅니다.
  • Approaching LSTO: 연결된 블루투스 기기에서 연결 감독 시간 제한(LSTO) 값의 절반 이상 동안 패킷이 수신되지 않으면 컨트롤러는 Approaching LSTO 이벤트를 호스트에 보고합니다.
  • A2DP Audio Choppy: 컨트롤러가 오디오 끊김 원인을 감지하면 A2DP Audio Choppy 이벤트를 호스트에 보고합니다.
  • (e)SCO Voice Choppy: 컨트롤러가 음성 끊김 원인을 감지하면 (e)SCO Voice Choppy 이벤트를 호스트에 보고합니다.
  • Root Inflammation: 이 이벤트는 HAL 또는 컨트롤러에 심각한 오류가 발생하여 블루투스를 다시 시작해야 하는 경우 컨트롤러에서 스택으로 전송됩니다.
  • LMP/LL 메시지 추적: 컨트롤러가 원격 기기를 통해 호스트에 LMP/LL 메시지 핸드셰이크를 보냅니다.
  • 블루투스 다중 프로필/Coex 예약 추적: 컨트롤러가 2.4Ghz 대역에 있는 여러 블루투스 프로필과 무선 공존 처리의 일정 정보를 호스트에 보냅니다.
  • 컨트롤러 디버그 정보 메커니즘: 이 기능을 사용 설정하면 컨트롤러는 컨트롤러 디버그 정보 하위 이벤트를 통해 자체적으로 디버그 로깅 정보를 호스트에 보고할 수 있습니다.

OCF: 0x15E

명령어 매개변수 크기 목적
BQR_Report_Action 1옥텟 BQR_Quality_Event_Mask 매개변수에 설정된 품질 이벤트의 보고를 추가 또는 삭제하거나 모두 지우는 작업입니다.

0x00 - 추가
0x01 - 삭제
0x02 - 지우기

삭제는 특정 품질 이벤트 보고를 지웁니다.
지우기는 모든 품질 이벤트 보고를 지우며, BQR_Quality_Event_Mask 매개변수는 무시될 수 있습니다.

BQR_Quality_Event_Mask 4옥텟 선택한 품질 이벤트 보고의 비트 마스크.

비트 0: 품질 모니터링 모드를 사용하도록 설정합니다.
비트 1: Approaching LSTO를 사용하도록 설정합니다.
비트 2: A2DP Audio Choppy 이벤트를 사용하도록 설정합니다.
비트 3: (e)SCO Voice Choppy 이벤트를 사용하도록 설정합니다.
비트 4: Root inflammation 이벤트를 사용하도록 설정합니다.
비트 5~15: 예약되었습니다.
비트 16: LMP/LL 메시지 추적을 사용하도록 설정합니다.
비트 17: 블루투스 멀티 링크/Coex 예약 추적을 사용하도록 설정합니다.
비트 18: 컨트롤러 디버그 정보 메커니즘을 사용하도록 설정합니다.
비트 19~31: 예약되었습니다.

BQR_Minimum_Report_Interval 2옥텟 선택된 품질 이벤트에 관한 품질 이벤트 보고의 최소 시간 간격을 정의합니다. 컨트롤러 펌웨어는 정의 시간 간격 내에 다음 이벤트를 보고해서는 안 됩니다. 간격 설정은 추가되는 품질 이벤트 각각에 전용되어야 합니다.

단위: 밀리초
기본값: 0(간격 제한 없음)
범위: 0~65535밀리초

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
상태 1옥텟 Command Complete 상태
Current_Quality_Event_Mask 4옥텟 현재 비트 마스크 설정을 나타냅니다.
비트 0: 품질 모니터링 모드가 사용 설정되었습니다.
비트 1: Approaching LSTO 이벤트 보고가 사용 설정되었습니다.
비트 2: A2DP Audio Choppy 이벤트 보고가 사용 설정되었습니다.
비트 3: (e)SCO Voice Choppy 이벤트 보고가 사용 설정되었습니다.
비트 4: Root inflammation 이벤트 보고가 사용 설정되었습니다.
비트 5~15: 예약되었습니다.
비트 16: LMP/LL 메시지 추적이 사용 설정되었습니다.
비트 17: 블루투스 멀티 링크/Coex 예약 추적이 사용 설정되었습니다.
비트 18: 컨트롤러 디버그 정보 메커니즘이 사용 설정되었습니다.
비트 19~31: 예약되었습니다.

동적 오디오 버퍼 명령어

동적 오디오 버퍼는 다양한 시나리오를 기반으로 블루투스 컨트롤러의 오디오 버퍼 크기를 변경하여 오디오 결함을 줄여줍니다.

OCF: 0x15F

오디오 버퍼 시간 기능 가져오기

Sub OCF: 0x01

이 명령을 사용하여 블루투스 컨트롤러에서 오디오 버퍼 시간 기능을 가져올 수 있습니다.

명령어 매개변수 크기 목적
N/A 비어 있는 명령어 매개변수 목록

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
상태 1옥텟 Command Complete 상태
Dynamic_Audio_Buffer_opcode 1옥텟 0x01 - 오디오 버퍼 시간 가져오기
Audio_Codec_Type_Supported 4옥텟 지원되는 코덱 유형에 따른 비트 마스크
비트 0 - SBC
비트 1 - AAC
비트 2 - APTX
비트 3 - APTX HD
비트 4 - LDAC
비트 5~31은 예약됨
Audio_Codec_Buffer_Default_Time_For_Bit_0 2옥텟 Audio_Codec_Type_Supported에 지정된 비트 0 코덱 유형의 기본 버퍼 시간입니다.
비트 0 코덱 유형이 지원되지 않는 경우 이 값은 0입니다.
단위: 밀리초
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2옥텟 Audio_Codec_Type_Supported에 지정된 비트 0 코덱 유형의 최대 버퍼 시간입니다.
비트 0 코덱 유형이 지원되지 않는 경우 이 값은 0입니다.
단위: 밀리초
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2옥텟 Audio_Codec_Type_Supported에 지정된 비트 0 코덱 유형의 최소 버퍼 시간입니다.
비트 0 코덱 유형이 지원되지 않는 경우 이 값은 0입니다.
단위: 밀리초
Audio_Codec_Buffer_Default_Time_For_Bit_1 2옥텟 Audio_Codec_Type_Supported에 지정된 비트 1 코덱 유형의 기본 버퍼 시간입니다.
비트 1 코덱 유형이 지원되지 않는 경우 이 값은 0입니다.
단위: 밀리초
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2옥텟 Audio_Codec_Type_Supported에 지정된 비트 1 코덱 유형의 최대 버퍼 시간입니다.
비트 1 코덱 유형이 지원되지 않는 경우 이 값은 0입니다.
단위: 밀리초
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2옥텟 Audio_Codec_Type_Supported에 지정된 비트 1 코덱 유형의 최소 버퍼 시간입니다.
비트 1 코덱 유형이 지원되지 않는 경우 이 값은 0입니다.
단위: 밀리초
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2옥텟 Audio_Codec_Type_Supported에 지정된 비트 31 코덱 유형의 기본 버퍼 시간입니다.
비트 31 코덱 유형이 지원되지 않는 경우 이 값은 0입니다.
단위: 밀리초
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2옥텟 Audio_Codec_Type_Supported에 지정된 비트 31 코덱 유형의 최대 버퍼 시간입니다.
비트 31 코덱 유형이 지원되지 않는 경우 이 값은 0입니다.
단위: 밀리초
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2옥텟 Audio_Codec_Type_Supported에 지정된 비트 31 코덱 유형의 최소 버퍼 시간입니다.
비트 31 코덱 유형이 지원되지 않는 경우 이 값은 0입니다.
단위: 밀리초

오디오 버퍼 시간 설정

Sub OCF: 0x02

이 명령어를 사용하여 블루투스 컨트롤러에 대한 오디오 버퍼 시간을 설정합니다.

명령어 매개변수 크기 목적
Audio_Codec_Buffer_Time 2옥텟 현재 사용되는 코덱의 오디오 버퍼 시간이 요청되었습니다.
단위: ms

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
상태 1옥텟 Command Complete 상태
Dynamic_Audio_Buffer_opcode 1옥텟 0x02 - 오디오 버퍼 시간 설정
Audio_Codec_Buffer_Time 2옥텟 블루투스 컨트롤러의 현재 오디오 버퍼 시간입니다.
단위: 밀리초

HCI 이벤트(공급업체별)

경우에 따라 공급업체별 HCI 이벤트가 필요합니다. 블루투스 코어 5.2 사양 1,897페이지에서 그림 5.4를 참고하세요. 이벤트 매개변수 0은 나머지 HCI 이벤트를 디코딩할 때 기반이 되는 첫 번째 하위 이벤트 코드를 항상 포함합니다.

이벤트 매개변수 크기 목적
HCI_vendor_specific_event_code 1옥텟 0xFF
sub_event_code 1옥텟 하위 이벤트 코드는 크기가 1옥텟으로, HCI 이벤트 패킷의 매개변수 길이 바로 다음에 오는 바이트입니다.

저장소 임계값 위반 하위 이벤트

이 이벤트는 저장소 임계값이 위반되었음을 나타냅니다.

하위 이벤트 코드 = 0x54

하위 이벤트 매개변수 크기 목적
없음

저전력 다중 광고 상태 변경 하위 이벤트

이 이벤트는 다중 광고 인스턴스의 상태가 변경되었음을 나타냅니다. 현재 이 이벤트는 연결로 인해 중단된 광고 인스턴스를 나타내는 데만 사용됩니다.

하위 이벤트 코드 = 0x55

하위 이벤트 매개변수 크기 목적
Advertising_instance 1옥텟 지정된 광고 인스턴스 식별
유효 값: 0~max_advt_instances-1
State_Change_Reason 1옥텟 0x00: 연결이 수신됨
Connection_handle 2옥텟 advt 인스턴스 중지의 원인인 연결을 식별(유효하지 않은 경우 0xFFFF)

저전력 광고 추적 하위 이벤트

이 이벤트는 광고주를 찾았거나 찾지 못한 경우를 나타냅니다.

하위 이벤트 코드 = 0x56

하위 이벤트 매개변수 크기 목적
APCF_Filter_Index 1옥텟 필터 색인(0, max_filter - 1)
Advertiser_State 1옥텟 0x00: 광고주 찾음
0x01: 광고주 찾지 못함
Advt_Info_Present 1옥텟 0x00: 광고주 정보(Advt_Info) 존재
0x01: 광고주 정보(Advt_Info) 존재하지 않음
Advertiser_Address 6옥텟 공개 또는 임의 주소
Advertiser_Address_Type 1옥텟 0x00: 공개 주소
0x01: 임의 주소
Advt_Info Tx_Pwr[0]: 1옥텟
RSSI[0]: 1옥텟
Timestamp[0]: 2옥텟
Adv packet_len[0]: 1옥텟
Adv_packet[0]: Adv_packet_len옥텟
Scan_data_resp_len[0]: 1옥텟
Scan_data_resp[0]: Scan_data_resp옥텟

컨트롤러 디버그 정보 하위 이벤트

이 이벤트는 컨트롤러에서 바이너리 디버그 정보를 호스트에 제공하는 데 사용됩니다.

하위 이벤트 코드 = 0x57

하위 이벤트 매개변수 크기 목적
debug_block_byte_offset_start 2옥텟 시작부터 블록 바이트 오프셋 디버그
last_block 1옥텟 0x00: 추가 디버그 데이터 있음
0x01: 마지막 바이너리 블록, 디버그 데이터 없음
cur_pay_load_sz 2옥텟 현재 이벤트의 바이너리 블록 크기
Debug_Data 변수 cur_payload_sz의 디버그 데이터

Bluetooth Quality Report 하위 이벤트

이 이벤트는 블루투스 품질 이벤트 발생함, 컨트롤러가 LMP/LL 메시지 추적을 업로드함, 블루투스 멀티 링크/Coex 예약 추적 또는 컨트롤러가 디버그 정보 데이터를 덤프함 중 하나를 나타냅니다.

하위 이벤트 매개변수 크기 목적
Quality_Report_Id 1옥텟 0x01: 모니터링 모드의 품질 보고.
0x02: Approaching LSTO.
0x03: A2DP Audio Choppy.
0x04: (e)SCO Voice Choppy.
0x05~0xFF: 예약됨.
Packet_Types 1옥텟 0x01: ID
0x02: NULL
0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x09: EV3
0x0A: EV4
0x0B: EV5
0x0C: 2-EV3
0x0D: 2-EV5
0x0E: 3-EV3
0x0F: 3-EV5
0x11: DH1
0x12: DM3
0x13: DH3
0x14: DM5
0x15: DH5
0x16: AUX1
0x17: 2-DH1
0x18: 2-DH3
0x19: 2-DH5
0x1A: 3-DH1
0x1B: 3-DH3
0x1C: 3-DH5
0x1D~0xFF: 예약됨.
Connection_Handle 2옥텟 연결 핸들.
Connection_Role 1옥텟 연결과 관련된 역할을 이행합니다.
0x00: 중앙
0x01: 주변기기
0x02~0xFF: 예약됨.
TX_Power_Level 1옥텟 지정된 Connection_Handle의 현재 전송 전력 수준.

이 값은 HCI_Read_Transmit_Power_Level HCI 명령어에 대한 컨트롤러의 응답과 같아야 합니다.

RSSI 1옥텟 [dBm 단위]

지정된 Connection_Handle의 수신 신호 강도 표시기(RSSI) 값입니다.
이 값은 수신기 신호 강도 절댓값이어야 합니다.
범위: -127~+20

SNR 1옥텟 [dB 단위]

지정된 Connection_Handle의 신호대 잡음비(SNR) 값입니다.
컨트롤러는 링크에서 사용하는 모든 채널의 평균 SNR을 제공해야 합니다.

Unused_AFH_Channel_Count 1옥텟 AFH_channel_map에서 사용되지 않은 채널 수를 나타냅니다.
0x4F~0xFF: 예약됨.
AFH_Select_Unideal_Channel_Count 1옥텟 방해를 받아 품질이 떨어지는 채널의 수를 나타내지만, 여전히 AFH로 선택되어 있습니다.
블루투스 사양에서 허용하는 최소 채널 수는 20개입니다. 채널 79개가 모두 방해를 받아 품질이 좋지 않더라도 컨트롤러는 AFH 채널을 20개 이상 선택해야 합니다.
LSTO 2옥텟 현재 연결 감독 시간 제한 설정.
시간=N*0.625밀리초
시간 범위: 0.625밀리초~40.9초
Connection_Piconet_Clock 4옥텟 지정한 Connection_Handle의 피코넷 클록.
이 값은 0x01의 매개변수 'Which_Clock'(피코넷 클록)을 포함하는 HCI_Read_Clock HCI 명령어에 대한 컨트롤러의 응답과 동일해야 합니다.
단위: N*0.3125밀리초(하나의 블루투스 클록)
Retransmission_Count 4옥텟 마지막 이벤트 이후의 재전송 횟수.
이 수는 호스트에 보고한 후 재설정됩니다.
No_RX_Count 4옥텟 마지막 이벤트 이후 RX 수가 없습니다.
예약된 시간 슬롯에 수신된 패킷이 없거나 수신된 패킷이 손상되면 RX 수가 증가합니다.
이 수는 호스트에 보고한 후 재설정됩니다.
NAK_Count 4옥텟 마지막 이벤트 이후의 부정 응답(NAK) 수.
이 수는 호스트에 보고한 후 재설정됩니다.
Last_TX_ACK_Timestamp 4옥텟 마지막 TX ACK의 타임스탬프. 이는 피코넷 센트럴의 블루투스 클록(CLK)을 기반으로 합니다.
단위: N*0.3125밀리초(하나의 블루투스 클록)
Flow_Off_Count 4옥텟 컨트롤러가 마지막 이벤트 이후 Flow-off(STOP)를 수신한 횟수.
이 수는 호스트에 보고한 후 재설정됩니다.
Last_Flow_On_Timestamp 4옥텟 마지막 플로우온의 타임스탬프(GO). 이는 피코넷 센트럴의 블루투스 클록(CLK)을 기반으로 합니다.
단위: N*0.3125밀리초(하나의 블루투스 클록)
Buffer_Overflow_Bytes 4옥텟 [바이트 단위]

마지막 이벤트 이후의 버퍼 오버플로 수.
컨트롤러는 삭제되는 데이터의 바이트 수를 계산합니다.
이 수는 호스트에 보고한 후 재설정됩니다.

Buffer_Underflow_Bytes 4옥텟 [바이트 단위]

마지막 이벤트 이후의 버퍼 언더플로 수.
이 수는 호스트에 보고한 후 재설정됩니다.

공급업체별 매개변수 (매개변수 총 길이 - 49) * 옥텟 컨트롤러 공급업체가 더 많은 공급업체별 매개변수를 확보합니다.

하위 이벤트 코드 = 0x58 [Quality_Report_Id = 0x05, Root Inflammation 이벤트]

이 이벤트는 블루투스 HAL 또는 컨트롤러에 심각한 오류가 발생했으며 블루투스 스택이 이 상황을 기록하고 다시 시작해야 함을 나타냅니다. 컨트롤러는 어떠한 경우이든 디버그 정보 이벤트의 첫 번째 프래그먼트를 전송하기 전에 Root_Inflammation_Event를 블루투스 스택으로 보내야 합니다.

Error_Code 매개변수에는 HAL/컨트롤러에서 보고된 오류 코드가 포함되며 칩셋 공급업체별 오류인 경우 0입니다. Vendor_Specific_Error_Code에는 HAL/컨트롤러의 칩셋 공급업체별 오류 코드가 포함됩니다. 매개변수 Error_Code가 0이 아닌 경우 0으로 설정해야 합니다. 매개변수 Error_Code와 Vendor_Specific_Error_Code가 모두 0이 아니어야 합니다.

하위 이벤트 매개변수 크기 목적
Quality_Report_Id 1옥텟 0x00 ~ 0x04: 예약됨.
0x05: Root Inflammation.
0x06~0xFF: 예약됨.
Error_Code 1옥텟 0x00: 칩셋 공급업체별 오류 코드가 포함됩니다.
0x01~0xFF: 컨트롤러 오류가 발생했습니다. 블루투스 사양 [Vol 2] 파트 D, 오류 코드에서 오류 코드 목록과 설명을 참고하세요.
Vendor_Specific_Error_Code 1옥텟 0x00: 칩셋 공급업체별 오류 코드가 포함되지 않습니다.
0x01~0xFF: 칩셋 공급업체별 오류 코드입니다.
공급업체별 매개변수 (매개변수 총 길이 - 4) * 옥텟 컨트롤러 공급업체가 더 많은 공급업체별 매개변수를 확보합니다.
하위 이벤트 매개변수 크기 목적
Quality_Report_Id 1옥텟 0x00~0x10: 예약됨.
0x11: LMP/LL 메시지 추적.
0x12: 블루투스 멀티 링크/Coex 예약 추적.
0x13: 컨트롤러 디버그 정보 데이터 덤프.
0x14 ~ 0xFF: 예약됨.
Connection_Handle 2옥텟 연결 핸들.
공급업체별 매개변수 (매개변수 총 길이 - 4) * 옥텟 공급업체별 LMP 메시지 형식 추적, 블루투스 멀티 링크/Coex 예약 추적 및 컨트롤러 디버그 정보 데이터 덤프.

여러 광고주 지원

여러 광고주 지원의 목표는 다음과 같습니다.

  • 여러 광고 지원 기능(max_advt_instances)
  • 범위 변동을 고려한 다양한 전송 전력
  • 다양한 광고 콘텐츠
  • 각 광고주에 관한 개별 응답
  • 광고주별로 개인정보 보호(추적 불가)
  • 연결 가능

기존 표준 수준과 비슷하게 이 사양을 유지하기 위해 다음과 같은 공급업체별 명령어가 제공됩니다. 이 명령어는 블루투스 코어 4.1 사양에서 파생됩니다.

LE_Multi_Advt_Command

OCF: 0x154

명령어 매개변수 크기 목적
Multi_advt_opcode 1옥텟 0x01 - Set_Advt_Param_Multi_Sub_Cmd
0x02 - Set_Advt_Data_Multi_Sub_Cmd
0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd
0x04 - Set_Random_Addr_Multi_Sub_Cmd
0x05 - Set_Advt_Enable_Multi_Sub_Cmd

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Multi_advt_opcode 1옥텟 0x01 - Set_Advt_Param_Multi_Command
0x02 - Set_Advt_Data_Multi_Command
0x03 - Set_Scan_Resp_Data_Multi_Command
0x04 - Set_Random_Addr_Multi_Command
0x05 - Set_Advt_Enable_Multi_Command

LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd

기본 참조: 블루투스 코어 4.1 사양, 964페이지(저전력 광고 매개변수 설정 명령어)

Sub OCF: 0x01

하위 명령어 매개변수 크기 목적
Advertising_Interval_Min 사양별 사양별
Advertising_Interval_Max 사양별 사양별
Advertising_Type 사양별 사양별
Own_Address_Type 사양별 사양별
Own_Address 사양별 사양별
Direct_Address_Type 사양별 사양별
Direct_Address 사양별 사양별
Advertising_Channel_Map 사양별 사양별
Adverstising_Filter_Policy 사양별 사양별
Advertising_Instance 1옥텟 인스턴스에 위 매개변수의 적용 가능성을 지정합니다.
Tx_power 1옥텟 Transmit_Power
단위 - dBm(부호 있는 정수)
범위(-70~+20)

Own_Address 매개변수는 이 다중 광고 인스턴스 설정 시 호스트에서 구성된 주소일 수 있습니다. 이 매개변수는 첫 비콘이 전송할 때 확인 가능한 비공개 주소를 보유할 수 있는 기능을 제공합니다. 인스턴스 상의 광고는 연결과 관계없이 계속 진행됩니다. 호스트 블루투스 스택은 연결 후 인스턴스에서 광고를 시작하는 명령어를 실행할 수 있습니다.

위 명령어에 따라 블루투스 코어 4.1 사양에 지정된 대로 Command Complete 이벤트가 생성됩니다. 광고 인스턴스 또는 Tx_Power 매개변수가 유효하지 않은 경우 컨트롤러는 비성공 코드(유효하지 않은 매개변수)를 통해 응답합니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Multi_advt_opcode 1옥텟 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

기본 참조: 블루투스 코어 4.1 사양, 969페이지(저전력 광고 데이터 설정 명령어)

Sub OCF: 0x02

하위 명령어 매개변수 크기 목적
Advertising_Data_Length 사양별 사양별
Advertising_Data 사양별 사양별
Advertising_Instance 1옥텟 인스턴스에 위 매개변수의 적용 가능성을 지정합니다.

위 명령어에 따라 블루투스 코어 4.1 사양에 지정된 대로 Command Complete 이벤트가 생성됩니다. 광고 인스턴스 또는 Tx_Power 매개변수가 유효하지 않은 경우 컨트롤러는 비성공 코드를 통해 응답합니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Multi_advt_opcode 1옥텟 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

기본 참조: 블루투스 코어 4.1 사양, 970페이지(저전력 스캔 응답 데이터 설정 명령어)

Sub OCF: 0x03

하위 명령어 매개변수 크기 목적
Scan_Response_Data_Length 사양별 사양별
Scan_Response_Data 사양별 사양별
Advertising_Instance 1옥텟 인스턴스에 위 매개변수의 적용 가능성을 지정합니다.

위 명령어에 따라 블루투스 코어 4.1 사양에 지정된 대로 Command Complete 이벤트가 생성됩니다. 광고 인스턴스 또는 Tx_Power 매개변수가 유효하지 않은 경우 컨트롤러는 비성공 코드(유효하지 않은 매개변수)를 통해 응답합니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Multi_advt_opcode 1옥텟 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

기본 참조: 블루투스 코어 4.1 사양, 963페이지(저전력 임의 주소 설정 명령어)

Sub OCF: 0x04

하위 명령어 매개변수 크기 목적
Random Address 사양별 사양별
Advertising_Instance 1옥텟 인스턴스에 위 매개변수의 적용 가능성을 지정합니다.

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Multi_advt_opcode 1옥텟 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

기본 참조: 블루투스 코어 4.1 사양, 971페이지(이 핵심 사양의 저전력 광고 사용 설정 명령어)

OCF: 0x05

하위 명령어 매개변수 크기 목적
Advertising_Enable 1옥텟 값 1은 사용 설정을 의미합니다. 다른 값은 사용 중지를 의미합니다.
Advertising_Instance 1옥텟 인스턴스에 위 매개변수의 적용 가능성을 지정합니다. 인스턴스 0은 표준 HCI 인스턴스를 의미합니다.

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Multi_advt_opcode 1옥텟 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

비공개 주소의 오프로드식 결정

이 기능은 컨트롤러 펌웨어 또는 하드웨어의 비공개 주소를 결정하며 다음 이점을 제공합니다.

  • 호스트가 비공개 주소를 결정하는 데 소요되는 지연 시간
  • 호스트 절전 해제를 방지하여 전원 절약

LE_Set_RPA_Timeout

OCF: 0x15C

명령어 매개변수 크기 목적
LE_local_IRK 16옥텟 확인 가능한 임의 주소를 생성하는 데 사용되는 로컬 기기 IRK.
tRPA_min 2옥텟 초 단위로 표현되는 최소 RPA 생성 제한 시간. 컨트롤러는 이 제한 시간 동안 또는 이후의 광고/스캔/연결 이벤트에 사용되는 확인 가능한 새 주소를 생성해야 합니다.
유효 범위: 300~1800
tRPA_max 2옥텟 초 단위로 표현되는 최대 RPA 생성 제한 시간. 컨트롤러는 이 제한 시간 동안 또는 이후의 광고/스캔/연결 이벤트에 사용되는 확인 가능한 새 주소를 생성해야 합니다.
유효 범위: tRPA_min~1800
반환 매개변수 크기 목적
Status 1옥텟 명령어의 상태.

권장 HCI 상태 값:
0x00 성공
0x01 알 수 없는 명령어(지원되지 않는 경우)
0x12 유효하지 않은 명령어 매개변수(매개변수가 지정된 범위를 벗어나는 경우)

LE_RPA_offload_Command

OCF: 0x155

명령어 매개변수 크기 목적
RPA_offload_opcode 1옥텟 0x1 - 고객별 기능 사용 설정
0x2 - 목록에 IRK 추가
0x3 - 목록에서 IRK 제거
0x4 - IRK 목록 지우기
0x5 - IRK 목록 항목 읽기

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Event_RPA_offload_opcode 1옥텟 0x1 - 고객별 기능 사용 설정
0x2 - 목록에 IRK 추가
0x3 - 목록에서 IRK 제거
0x4 - IRK 목록 지우기
0x5 - IRK 목록 항목 읽기

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

하위 명령어 매개변수 크기 목적
enable_customer_specific_feature_set 1옥텟 0x01 - 오프로드된 RPA 기능 사용 설정
0x00 - 오프로드된 RPA 기능 사용 중지

RPA 오프로드는 호스트에서 칩 기능에 맞게 사용 설정되어야 합니다. LE_Get_Vendor_Capabilities_Command를 참고하세요. 각 칩은 펌웨어에서 다양한 max_irk_list_sz를 가질 수 있습니다.

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Event_cust_specific_feature_opcode 1옥텟 0x01 [고객별 기능 사용 설정]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

하위 명령어 매개변수 크기 목적
LE_IRK 16옥텟 저전력 IRK(첫 번째 바이트 LSB)
Address_Type 1옥텟 0: 공개 주소
1: 임의 주소
LE_Device_Address 6옥텟 IRK(첫 번째 바이트 LSB)에 연결된 공개 또는 임의 주소

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Event_cust_specific_feature_opcode 1옥텟 0x02 [목록에 IRK 추가]
LE_IrkList_AvailableSpaces 1옥텟 현재 작업 이후에 사용 가능한 IRL 목록 항목

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

하위 명령어 매개변수 크기 목적
Address_Type 1옥텟 0: 공개 주소
1: 임의 주소
LE_Device_Address 6옥텟 IRK에 연결된 공개 또는 임의 주소

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Event_cust_specific_feature_opcode 1옥텟 0x03 [목록에서 IRK 제거]
LE_IrkList_AvailableSpaces 1옥텟 현재 작업 이후에 사용 가능한 IRL 목록 항목

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

하위 명령어 매개변수 크기 목적
없음

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Event_cust_specific_feature_opcode 1옥텟 0x04 [IRK 목록 지우기]
LE_IrkList_AvailableSpaces 1옥텟 현재 작업 후 사용 가능한 IRL 목록 항목 [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

하위 명령어 매개변수 크기 목적
LE_read_IRK_list_entry-index 1옥텟 IRK 목록의 색인 [0, max_irk_list_sz-1]

이 명령어에 관해 Command Complete 이벤트가 생성됩니다.

반환 매개변수 크기 목적
Status 1옥텟 Command Complete 상태
Event_cust_specific_feature_opcode 1옥텟 0x05 [IRK 목록 항목 읽기]
LE_Read_IRK_List_entry 1옥텟 호스트가 다시 읽고자 하는 IRK의 색인(최대 IRK 목록 크기는 32임)
LE_IRK 16옥텟 IRK 값
Address_Type 1옥텟 0: 공개 주소
1: 임의 주소
LE_Device_Address 6옥텟 IRK에 연결된 공개 또는 임의 주소
LE_Resolved_Private_Address 6옥텟 이 IRK의 확인되었으며 확인 가능한 현재 비공개 주소