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
명령어 매개변수 | 크기 | 목적 |
---|---|---|
해당 없음 | 비어 있는 명령어 매개변수 목록 |
이 명령어에 관해 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.04 byte[0] = 0x01 byte[1] = 0x04 |
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은 예약됨 |
a2dp_offload_v2_support |
1옥텟 |
블루투스 컨트롤러에서 A2dp 오프로드 v2 명령어 지원(A2DP 오프로드 시작, A2DP 오프로드 중지 참고) 0 = 지원되지 않음 1 = 지원됨 |
스캔 결과 일괄 처리
설계 목표는 블루투스 LE 스캔 응답 이벤트 알림이 호스트로 전송되는 방식을 개선하여 호스트의 전력 소비량을 줄이는 것입니다.
호스트 애플리케이션 프로세서가 결과를 스캔하도록 컨트롤러에서 알리는 빈도를 줄이면 프로세서가 유휴/절전 상태로 더 오래 유지될 수 있습니다. 이렇게 하면 호스트의 전력 소비량을 줄일 수 있습니다. LE_Get_Vendor_Capabilities_Command
의 반환 매개변수 total_scan_results_storage
는 칩의 스캔 결과 저장 기능을 나타냅니다.
이 기능은 블루투스 컨트롤러의 LE 스캔 결과 저장 기능의 관리 및 구성에 중점을 둡니다. 저장소는 일시적으로 광고 데이터를 일괄 처리하고 호스트로 나중에 전송할 수 있도록 컨트롤러에서 수신한 데이터 및 메타데이터를 스캔하는 데 사용됩니다.
펌웨어는 두 가지 유형의 일괄 처리를 지원하며 동시에 관여할 수 있습니다.
- 잘림 처리됨. {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_c
와 T_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)를 사용 설정/사용 중지/설정하는 데 사용합니다. 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 서비스 데이터 0x08 - APCF 전송 검색 서비스 0x09 - APCF 광고 유형 필터 0x10~0xAF - 향후 사용을 위해 예약됨 0xB0~0xDF - 공급업체 전용으로 예약됨 0xE0~0xFE - 향후 사용을 위해 예약됨 0xFF - 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 서비스 데이터 0x08 - APCF 전송 검색 서비스 0x09 - APCF 광고 유형 필터 0x10~0xAF - 향후 사용을 위해 예약됨 0xB0~0xDF - 공급업체 전용으로 예약됨 0xE0~0xFE - 향후 사용을 위해 예약됨 0xFF - 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: 서비스 데이터 확인을 사용 설정하도록 설정 비트 7: 전송 검색 서비스 확인을 사용하도록 설정 비트 8: 광고 유형 확인을 사용하도록 설정 |
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_mode 가 on_found 인 경우에만 유효.[단위: 밀리초] 보고 전 펌웨어에서 추가 광고를 유지하고 수집하는 시간. |
onfound_timeout_cnt |
1옥텟 |
delivery_mode 가 on_found 인 경우에만 유효.[개수] onFound 인 광고가 onfound_timeout 동안 펌웨어에 남아 있는 경우 일부 광고가 수집되며 광고 수가 확인됩니다. 광고 수가 onfound_timeout_cnt 를 초과하면 즉시 OnFound 로 보고됩니다.
|
rssi_low_thresh |
1옥텟 |
delivery_mode 가 on_found 인 경우에만 유효.[단위: dBm] 수신된 패킷의 RSSI가 RSSI 하위 기준점보다 크지 않은 경우 광고주 패킷은 표시되지 않는 것으로 간주됩니다. |
onlost_timeout |
2옥텟 |
delivery_mode 가 on_found 인 경우에만 유효.[단위: 밀리초] 광고가 검색된 후 lost_timeout 동안 연속으로 표시되지 않으면 손실된 것으로 즉시 보고됩니다.
|
num_of_tracking_entries |
2옥텟 |
delivery_mode 가 on_found 인 경우에만 유효.[개수] 필터당 추적할 총 광고주 수. |
RSSI 값은 2의 보수를 사용하여 음의 값을 표현해야 합니다.
호스트는 모든 브로드캐스터 주소에 관해 0x02로 설정된 APCF_Application_Address_type
으로 다수의 필터를 구성하여 다양한 필터 조합을 관리할 수 있어야 합니다.
필터링, 일괄 처리, 보고는 서로 관련된 개념이며 모든 광고 및 관련 스캔 응답은 모든 필터를 하나씩 통과해야 합니다. 따라서 이에 따른 작업(delivery_mode
)은 필터링과 밀접하게 연결됩니다. 전송 모드는 report_immediately
, batch
, onFound
이며, OnLost
값은 분실 시 OnFound
다음에 온다는 점에서 OnFound
와 관련이 있습니다.
이 처리 흐름의 개념 모델을 나타내면 다음과 같습니다.
![](https://source.android.google.cn/static/docs/core/connect/bluetooth/images/bt_filter_batch_report.png?authuser=8&hl=ko)
광고(또는 스캔 응답) 프레임이 수신되면 일련의 순서로 모든 필터에 적용됩니다. 광고는 하나의 필터를 기반으로 즉각적인 보고 및 다른 필터 작업으로 인한 일괄 처리를 발생시킬 수 있습니다.
RSSI 수준 상위 및 하위 기준점은 필터 처리에서 프레임이 표시되는 경우와 컨트롤러에 의해 유효한 패킷이 수신되는 경우에도 제어할 수 있는 기능을 제공합니다. 전송 모드가 즉시 또는 일괄 처리되도록 설정되는 경우 추가 컨트롤러 처리에서 프레임의 RSSI가 고려됩니다. 앱마다 각기 다른 보고 및 일괄 처리 동작이 필요합니다. 이렇게 해야 여러 앱에서 동시에 직접 보고를 받고 펌웨어 결과를 일괄로 처리할 수 있습니다. 예를 들면, 한 앱에서 일괄 스캔을 사용하고 나중에 다른 앱에서 일반 LE 스캔을 실행하는 경우가 있습니다. 일괄 스캔이 실행되기 전에 프레임워크/앱은 적절한 필터를 설정합니다. 나중에 두 번째 앱에서 일반 스캔을 실행하면 이전의 일괄 처리가 계속됩니다. 하지만 일반 스캔 특성상 이는 개념적으로 null 필터를 모든 기존 필터 및 LE 스캔 명령어와 함께 추가하는 것과 유사합니다. LE 스캔 명령어 매개변수는 활성 상태일 때 우선합니다. 일반 LE 스캔이 사용 중지된 경우 컨트롤러는 이전 일괄 스캔으로 되돌아갑니다(이전 일괄 스캔이 있는 경우).
OnFound
전송 모드는 구성된 필터를 기반으로 합니다. 성공할 필터 작업을 트리거하는 조합은 onLost
를 추적할 항목으로 간주됩니다. 이에 상응하는 이벤트는 LE 광고 추적 하위 이벤트입니다.
필터에 대해 OnFound/OnLost
전환이 사용 설정된 경우 전환은 다음과 같이 표시됩니다.
![](https://source.android.google.cn/static/docs/core/connect/bluetooth/images/bt_onfound_onlost.png?authuser=8&hl=ko)
이 명령어에 관해 Command Complete 이벤트가 생성됩니다.
반환 매개변수 | 크기 | 목적 |
---|---|---|
Status |
1옥텟 | Command Complete 상태 |
APCF_opcode |
1옥텟 | 0x01 - 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 |
가변적 크기 |
로컬 이름을 나타내는 문자열. 참고:
|
이 명령어에 관해 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 |
가변적 크기 |
제조업체 데이터의 문자열. 참고:
|
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 |
가변적 크기 |
서비스 데이터의 문자열. 참고:
|
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옥텟 | 서비스 데이터 표에서 계속 사용 가능한 무료 항목의 수 |
LE_APCF_Command: ad_type_sub_cmd
이 하위 명령어는 광고 유형을 추가 또는 삭제하거나 온칩 필터링의 광고 유형 목록을 지우는 데 사용됩니다. read_extended_features_sub_cmd
를 사용하여 이 명령어의 지원 여부를 확인하세요.
Sub OCF: 0x09
하위 명령어 매개변수 | 크기 | 목적 |
---|---|---|
APCF_Action |
1옥텟 |
0x00 - 추가 0x01 - 삭제 0x02 - 지우기 삭제는 지정된 필터에 있는 관련 광고 유형을 삭제합니다. 지우기는 지정된 필터에 있는 모든 광고 유형을 지웁니다. |
APCF_Filter_Index |
1옥텟 | 필터 색인(0, max_filter - 1) |
APCF_AD_TYPE |
1옥텟 | 목록에 추가하거나 목록에서 삭제하기 위한 광고 유형입니다. APCF_Action이 0x02인 경우 무시합니다(지우기). |
APCF_AD_DATA_Length |
가변적 크기 | 0x00 - 데이터 콘텐츠를 필터링하면 안 된다는 의미입니다.APCF_Action 이 0x02인 경우 무시합니다(지우기). |
APCF_AD_DATA |
가변적 크기 | APCF_Action이 0x02인 경우 무시합니다(지우기). |
APCF_AD_DATA_MASK |
가변적 크기 | APCF_Action이 0x02(지우기)인 경우 무시합니다. 길이는 APCF_AD_DATA 와 같아야 합니다. |
이 명령어에 관해 Command Complete 이벤트가 생성됩니다.
반환 매개변수 | 크기 | 목적 |
---|---|---|
Status |
1옥텟 | Command Complete 상태 |
APCF_opcode |
1옥텟 | 0x09 - APCF 광고 유형 |
APCF_Action |
1옥텟 | 에코 백 명령어의 APCF_Action |
APCF_AvailableSpaces |
1옥텟 | 광고 유형 표에서 여전히 사용 가능한 무료 항목의 수 |
LE_APCF_Command: read_extended_features_sub_cmd
이 하위 명령어는 확장된 APCF 기능을 읽는 데 사용합니다.
Sub OCF: 0xFF
하위 명령어 매개변수 | 크기 | 목적 |
---|---|---|
해당 사항 없음 | 빈 명령어 매개변수 |
이 명령어에 관해 Command Complete 이벤트가 생성됩니다.
반환 매개변수 | 크기 | 목적 |
---|---|---|
Status |
1옥텟 | Command Complete 상태 |
APCF_opcode |
1옥텟 | 0xFF - APCF_Read_Extended_Features |
APCF_extended_features |
2옥텟 |
확장 기능에 지원되는 비트 마스크는 다음과 같습니다.
비트 값
|
컨트롤러 활동 및 에너지 정보 명령어
이 정보의 목표는 상위 호스트 시스템 기능이 블루투스 컨트롤러와 매크로 상태를 포함한 모든 구성요소의 활동 전체를 앱 및 프레임워크의 진행 상태와 함께 분석하는 것입니다. 이를 위해서는 블루투스 스택 및 컨트롤러에서 다음 정보가 필요합니다.
- 블루투스 스택: 컨트롤러의 현재 매크로 작업 상태 보고
- 펌웨어: 활동 전체 및 에너지 정보 보고
블루투스 호스트 스택 매크로 상태는 사용자 수준에서 다음과 같이 결정됩니다.
- 유휴: [페이지 스캔, 저전력 광고, 문의 스캔]
- 스캔: [페이징/문의/연결 시도 중]
- 활성: [ACL 링크 사용, SCO 연결 진행 중, 절전 모드]
컨트롤러가 수명 기간 동안 추적하는 활동은 Tx 시간, Rx 시간, 유휴 시간, 총 에너지 소비량이며 호스트에서 읽으면 지워집니다.
LE_Get_Controller_Activity_Energy_Info
이는 공급업체별 명령어입니다.
OCF: 0x159
하위 명령어 매개변수 | 크기 | 목적 |
---|---|---|
해당 없음 | 비어 있는 명령어 매개변수 |
이 명령어에 관해 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), 시간(밀리초)의 곱] |
LE 확장 스캔 매개변수 설정 명령어
이 명령어를 이용하면 컨트롤러에서 더 큰 스캔 기간 간격을 사용할 수 있습니다. 블루투스 코어 5.2 사양에 따라 스캔 기간과 간격의 상한선은 10.24초이므로 애플리케이션의 스캔 간격이 10.24초를 초과할 수는 없습니다.
기본 참조: 블루투스 코어 5.2 사양, 2,493페이지(LE 스캔 매개변수 설정 명령어)
OCF: 0x15A
명령어 매개변수 | 크기 | 목적 |
---|---|---|
LE_Ex_Scan_Type |
1옥텟 |
0x00 - 수동 스캔. SCAN_REQ 패킷은 전송될 수 없습니다(기본값).0x01 - 활성 스캔. SCAN_REQ 패킷이 전송될 수도 있습니다.
|
LE_Ex_Scan_Interval |
4옥텟 |
컨트롤러가 마지막 LE 스캔을 시작한 후부터 다음 LE 스캔을 시작할 때까지의 시간 간격으로 정의됩니다. 범위: 0x0004~0x00FFFFFF 기본값: 0x0010(10밀리초) 시간 = N*0.625밀리초 시간 범위: 2.5밀리초~10442.25초 |
LE_Ex_Scan_Window |
4옥텟 |
LE 스캔의 지속 시간. LE_Scan_Window 는 LE_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 이벤트가 생성됩니다.
반환 매개변수 | 크기 | 목적 |
---|---|---|
Status |
1옥텟 | Command Complete 상태 |
A2DP 하드웨어 오프로드 지원
A2DP 오프로드 기능은 A2DP 오디오 인코딩 프로세스의 오프로드를 블루투스 컨트롤러에 연결된 오디오 프로세서에 지원합니다. 인코딩된 오디오 데이터 스트림은 블루투스 호스트의 개입 없이 오디오 프로세서에서 블루투스 컨트롤러로 직접 전달됩니다. 블루투스 호스트는 계속 A2DP 세션의 구성과 제어를 담당합니다. 두 가지 버전의 명령어를 사용할 수 있습니다. Sub OCF 0x01-0x02가 포함된 기존 명령어는 오픈소스 코덱만 지원합니다. Sub-OCF 0x02-0x03이 포함된 버전은 구성된 코덱에 구속받지 않습니다.
OCF: 0x15D
A2DP 오프로드 시작(기존)
Sub OCF: 0x01
이 명령어를 사용하여 A2DP 오프로드 프로세스를 구성하고 A2DP 스트림을 시작합니다.
명령어 매개변수 | 크기 | 목적 |
---|---|---|
Codec |
4옥텟 | 코덱 유형 지정 0x01 - SBC 0x02 - AAC 0x04 - APTX 0x08 - APTX HD 0x10 - LDAC |
Max_Latency |
2옥텟 | 허용된 최대 지연 시간(밀리초 단위). 값이 0이면 플러시가 사용 중지됩니다. |
SCMS-T_Enable |
2옥텟 |
옥텟 0: 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 코덱 관련 정보 요소를 참고하세요. AAC 코덱: A2DP v1.3의 AAC Codec 사양 정보 요소를 참고하세요. LDAC 코덱: 옥텟 0~3: 공급업체 ID 옥텟 4~5: 코덱 ID 옥텟 6: 비트 전송률 색인 옥텟 7: LDAC 채널 모드 옥텟 8~31: 예약됨 모든 기타 코덱: 옥텟 0~31: 예약됨 |
이 명령어에 관해 Command Complete 이벤트가 생성됩니다.
반환 매개변수 | 크기 | 목적 |
---|---|---|
Status |
1옥텟 | Command Complete 상태 |
Sub_Opcode |
1옥텟 | 0x01- A2DP 오프로드 시작 |
A2DP 오프로드 시작
Sub OCF: 0x03
이 명령어를 사용하여 A2DP 오프로드 프로세스를 구성하고 A2DP 스트림을 시작합니다.
명령어 매개변수 | 크기 | 목적 |
---|---|---|
Connection Handle |
2옥텟 | 활성 HCI 연결 처리 |
L2CAP_Channel_ID |
2옥텟 | A2DP 스트리밍을 위해 열린 L2CAP 채널의 식별자 |
Data_Path_Direction |
1옥텟 |
0x00 - 출력(AVDTP 소스/병합) 0x01 - 입력(AVDTP 싱크/분할) |
Peer_MTU |
2옥텟 | L2CAP 패킷의 최대 크기. 동종 앱과 협상됨 |
CP_Enable_SCMS_T |
1옥텟 |
0x00 - SCMS-T 콘텐츠 보호 헤더를 사용 중지함 0x01 - SCMS-T 콘텐츠 보호 헤더를 사용 설정함 |
CP_Header_SCMS_T |
1옥텟 |
SCMS-T 콘텐츠 보호 헤더가 사용 설정되면(CP_SCMS_T_Enable 이 0x01로 설정됨) 블루투스 할당 번호 섹션 6.3.2에 정의된 대로 오디오 콘텐츠 앞에 오는 헤더 값을 정의합니다(A2DP 섹션 3.2.1-2 참고).SCMS-T 콘텐츠 보호가 사용 설정되어 있지 않으면 무시됩니다. |
Vendor_Specific_Parameters_Length |
1옥텟 |
공급업체별 매개변수의 길이(범위: 0~128). 값 0은 추가 매개변수가 제공되지 않을 때 사용됩니다. |
Vendor_Specific_Parameters |
0~128옥텟 |
블루투스 오디오 HAL에서 제공된 공급업체별 매개변수(CodecParameters.vendorSpecificParameters[] )
|
이 명령어에 관해 Command Complete 이벤트가 생성됩니다.
반환 매개변수 | 크기 | 목적 |
---|---|---|
Status |
1옥텟 | Command Complete 상태 |
Sub_Opcode |
1옥텟 | 0x03- A2DP 오프로드 시작 |
A2DP 오프로드 중지(기존)
Sub OCF: 0x02
이 명령어는 A2DP 오프로드 스트림을 중지하는 데 사용됩니다.
명령어 매개변수 | 크기 | 목적 |
---|---|---|
N/A | 비어 있는 명령어 매개변수 목록. |
이 명령어에 관해 정의된 매개변수가 없습니다.
이 명령어에 관해 Command Complete 이벤트가 생성됩니다.
반환 매개변수 | 크기 | 목적 |
---|---|---|
Status |
1옥텟 | Command Complete 상태 |
Sub_Opcode |
1옥텟 | 0x02 - A2DP 오프로드 중지 |
A2DP 오프로드 중지
Sub OCF: 0x04
이 명령어는 A2DP 오프로드 스트림을 중지하는 데 사용됩니다.
명령어 매개변수 | 크기 | 목적 |
---|---|---|
Connection Handle |
2옥텟 | 활성 HCI 연결 처리 |
L2CAP_Channel_ID |
2옥텟 | A2DP 스트리밍을 위해 열린 L2CAP 채널의 식별자 |
Data_Path_Direction |
1옥텟 |
0x00 - 출력(AVDTP 소스/병합) 0x01 - 입력(AVDTP 싱크/분할) |
이 명령어에 관해 Command Complete 이벤트가 생성됩니다.
반환 매개변수 | 크기 | 목적 |
---|---|---|
Status |
1옥텟 | Command Complete 상태 |
Sub_Opcode |
1옥텟 | 0x04 - 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 - 추가
삭제는 특정 품질 이벤트 보고를 지웁니다. |
BQR_Quality_Event_Mask |
4옥텟 |
선택한 품질 이벤트 보고의 비트 마스크.
비트 0: 품질 모니터링 모드를 사용하도록 설정합니다. |
BQR_Minimum_Report_Interval |
2옥텟 |
선택된 품질 이벤트에 관한 품질 이벤트 보고의 최소 시간 간격을 정의합니다. 컨트롤러 펌웨어는 정의된 시간 간격 내에 다음 이벤트를 보고해서는 안 됩니다. 간격 설정은 추가되는 품질 이벤트 각각에 전용되어야 합니다.
단위: 밀리초 |
BQR_Vendor_Specific_Quality_Event_Mask |
4옥텟 |
선택한 공급업체별 품질 이벤트 보고의 비트 마스크입니다. 이 매개변수는 BQR_Quality_Event_Mask 의 비트 15가 설정된 경우에만 유효합니다.
비트 0~31: 예약되었습니다. |
BQR_Vendor_Specific_Trace_Mask |
4옥텟 |
선택된 공급업체별 추적 보고의 비트 마스크입니다. 이 매개변수는 BQR_Quality_Event_Mask 의 비트 31이 설정된 경우에만 유효합니다.
비트 0~31: 예약되었습니다. |
이 명령어에 관해 Command Complete 이벤트가 생성됩니다.
반환 매개변수 | 크기 | 목적 |
---|---|---|
Status |
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: 에너지 모니터링 모드가 사용 설정되었습니다. 비트 6: LE Audio Choppy 이벤트 보고가 사용 설정되었습니다. 비트 7: 연결 실패 이벤트입니다. 비트 8~14: 예약되었습니다. 비트 15: 공급업체별 품질 이벤트 보고가 사용 설정되었습니다. 비트 16: LMP/LL 메시지 추적이 사용 설정되었습니다. 비트 17: 블루투스 멀티 링크/Coex 예약 추적이 사용 설정되었습니다. 비트 18: 컨트롤러 디버그 정보 메커니즘이 사용 설정되었습니다. 비트 19~30: 예약되었습니다. 비트 31: 공급업체별 추적이 사용 설정되었습니다. |
Current_Vendor_Specific_Quality_Event_Mask |
4옥텟 | 현재 비트 마스크 설정을 나타냅니다. |
Current_Vendor_Specific_Trace_Mask |
4옥텟 | 현재 비트 마스크 설정을 나타냅니다. |
동적 오디오 버퍼 명령어
동적 오디오 버퍼는 다양한 시나리오를 기반으로 블루투스 컨트롤러의 오디오 버퍼 크기를 변경하여 오디오 결함을 줄여줍니다.
OCF: 0x15F
오디오 버퍼 시간 기능 가져오기
Sub OCF: 0x01
이 명령을 사용하여 블루투스 컨트롤러에서 오디오 버퍼 시간 기능을 가져올 수 있습니다.
명령어 매개변수 | 크기 | 목적 |
---|---|---|
N/A | 비어 있는 명령어 매개변수 목록 |
이 명령어에 관해 Command Complete 이벤트가 생성됩니다.
반환 매개변수 | 크기 | 목적 |
---|---|---|
Status |
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 이벤트가 생성됩니다.
반환 매개변수 | 크기 | 목적 |
---|---|---|
Status |
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
하위 이벤트 매개변수 | 크기 | 목적 |
---|---|---|
없음 |
LE 다중 광고 상태 변경 하위 이벤트
이 이벤트는 광고 인스턴스의 상태가 변경되었음을 나타냅니다. 현재 이 이벤트는 연결로 인해 중단된 광고 인스턴스를 나타내는 데만 사용됩니다.
하위 이벤트 코드 = 0x55
하위 이벤트 매개변수 | 크기 | 목적 |
---|---|---|
Advertising_instance |
1옥텟 | 지정된 광고 인스턴스 식별 유효 값: 0~ max_advt_instances -1 |
State_Change_Reason |
1옥텟 | 0x00: 연결이 수신됨 |
Connection_handle |
2옥텟 | advt 인스턴스 중지의 원인인 연결을 식별(유효하지 않은 경우 0xFFFF) |
LE 광고 추적 하위 이벤트
이 이벤트는 광고주를 찾았거나 찾지 못한 경우를 나타냅니다.
하위 이벤트 코드 = 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 예약 추적 또는 컨트롤러가 디버그 정보 데이터를 덤프함 중 하나를 나타냅니다.
하위 이벤트 코드 = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, 링크 품질 관련 이벤트]
하위 이벤트 매개변수 | 크기 | 목적 |
---|---|---|
Quality_Report_Id |
1옥텟 |
0x01: 모니터링 모드의 품질 보고. 0x02: Approaching LSTO. 0x03: A2DP Audio Choppy. 0x04: (e)SCO Voice Choppy. 0x05~0x06: 예약됨. 0x07: LE Audio Choppy. 0x08: 연결 실패. 0x09~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~0x50: 예약됨 0x51: ISO 패킷 0x52~0xFF: 예약됨 |
Connection_Handle |
2옥텟 | ACL/(e)SCO/ISO 연결 핸들. |
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) 값입니다. |
SNR |
1옥텟 |
[단위: dB]
지정된 Connection_Handle의 신호대 잡음비(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옥텟 |
[단위: 바이트]
마지막 이벤트 이후의 버퍼 언더플로 수. |
bdaddr |
6옥텟 | 원격 기기 주소 |
cal_failed_item_count |
1옥텟 | 보정에 실패한 항목 수 |
TX_Total_Packets |
4옥텟 | 전송된 패킷의 수입니다. |
TX_UnAcked_Packets |
4옥텟 |
확인을 받지 못한 패킷의 수입니다. 이 수는 호스트에 보고한 후 재설정됩니다. |
TX_Flushed_Packets |
4옥텟 |
이 플러시 포인트에 의해 전송되지 않은 패킷의 수입니다. 이 수는 호스트에 보고한 후 재설정됩니다. |
TX_Last_Subevent_Packets |
4옥텟 |
CIS 이벤트의 마지막 하위 이벤트에서 링크 레이어가 CIS 데이터 PDU를 전송한 패킷의 수입니다. 이 수는 호스트에 보고한 후 재설정됩니다. 링크에 유효한 값이 없는 경우 이 값은 0입니다. |
CRC_Error_Packets |
4옥텟 |
수신된 패키지 중 마지막 이벤트 이후 CRC 오류가 발생한 횟수입니다. 이 수는 호스트에 보고한 후 재설정됩니다. |
RX_Duplicate_Packets |
4옥텟 |
지난 이벤트 이후 수신된 중복(재전송) 패키지 수입니다. 이 수는 호스트에 보고한 후 재설정됩니다. |
공급업체별 매개변수 | (매개변수 총 길이 - TBD) * 옥텟 | 컨트롤러 공급업체가 더 많은 공급업체별 매개변수를 확보합니다. |
하위 이벤트 코드 = 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) * 옥텟 | 컨트롤러 공급업체가 더 많은 공급업체별 매개변수를 확보합니다. |
하위 이벤트 코드 = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, 로그 덤프 관련 이벤트]
하위 이벤트 매개변수 | 크기 | 목적 |
---|---|---|
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페이지(LE 광고 매개변수 설정 명령어)
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페이지(LE 광고 데이터 설정 명령어)
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페이지(LE 스캔 응답 데이터 설정 명령어)
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페이지(LE 임의 주소 설정 명령어)
Sub OCF: 0x04
하위 명령어 매개변수 | 크기 | 목적 |
---|---|---|
임의 주소 | 사양별 | 사양별 |
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페이지(이 핵심 사양의 LE 광고 사용 설정 명령어)
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의 확인되었으며 확인 가능한 현재 비공개 주소 |