다음을 통해 공유


Microsoft에서 정의한 Bluetooth HCI 확장

Bluetooth HCI(호스트 컨트롤러 인터페이스)는 호스트와 Bluetooth 라디오 컨트롤러 간의 모든 상호 작용을 지정합니다. Bluetooth 사양을 사용하면 공급업체에서 정의한 HCI 명령 및 이벤트를 통해 호스트와 컨트롤러 간에 표준화되지 않은 상호 작용을 수행할 수 있습니다. Microsoft는 Windows에서 사용하는 공급업체별 HCI 명령 및 이벤트를 정의합니다. Bluetooth 컨트롤러 구현자는 이러한 확장을 사용하여 특수 기능을 구현할 수 있습니다.

요구 사항

Bluetooth HCI 명령은 16비트 명령 코드로 식별됩니다. Bluetooth 조직은 0xFBFF 통해 0x0000 범위의 값을 정의합니다. 공급업체는 0xFFFF 0xFC00 범위의 값을 정의하여 1024개의 가능한 공급업체 할당 명령 코드를 허용합니다.

공급업체는 Microsoft에서 정의한 명령 코드의 값을 선택해야 합니다. Microsoft는 명령 코드를 선택할 수 없으며 다른 공급업체가 충돌하는 목적으로 코드를 사용하지 않는다고 가정합니다. 공급업체별 명령을 실행하고 컨트롤러에 의존하여 명령을 이해하지 못하는 경우 거부하는 것은 안전하지 않습니다. 컨트롤러는 이 명령을 컨트롤러의 펌웨어 업데이트와 같은 파괴적인 작업으로 해석할 수 있습니다.

공급업체는 컨트롤러 이외의 메서드를 통해 선택한 값을 전달해야 합니다. Microsoft는 선택한 코드를 가져오는 방법을 지정하지 않습니다.

공급업체별 명령 코드의 Windows Bluetooth 스택 알림

Windows Bluetooth 스택은 레지스트리 키 VsMsftOpCode에서 공급업체별 명령 코드를 읽습니다.

레지스트리 키에는 VsMsftOpCode REG_DWORD 유형이 있으며 키 데이터는 공급업체별 opcode입니다.

공급업체별 opcode를 지정하려면 드라이버의 AddReg INF에서 DDInstall.HW 섹션 아래의 지시문을 사용합니다. 레지스트리 추가 섹션에는 다음이 포함되어야 합니다.

HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>

예시:

[radio.NTamd64.HW]
AddReg=radio.NTamd64.HW.AddReg
[radio.NTamd64.HW.AddReg]
HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>

Microsoft에서 정의한 HCI 명령

HCI 명령 설명
HCI_VS_MSFT_Read_Supported_Features 컨트롤러에서 지원하는 Microsoft 정의 기능을 설명하고 컨트롤러에서 반환되는 Microsoft 정의 이벤트의 접두사를 지정하는 비트맵을 제공합니다.
HCI_VS_MSFT_Monitor_Rssi 컨트롤러가 지정된 연결에 대해 측정된 링크 RSSI 모니터링을 시작하고 연결의 측정된 링크 RSSI가 지정된 범위를 벗어나면 이벤트를 생성합니다.
HCI_VS_MSFT_Cancel_Monitor_Rssi 이전에 실행한 HCI_VS_MSFT_Monitor_Rssi 명령을 취소합니다.
HCI_VS_MSFT_LE_Monitor_Advertisement 컨트롤러가 지정된 RSSI 범위에 속하고 다른 요구 사항을 충족하는 광고에 대한 모니터링을 시작하라는 요청입니다.
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement 이전에 실행한 HCI_VS_MSFT_LE_Monitor_Advertisement 명령을 취소합니다.
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 보급 알림 필터의 상태를 설정합니다.
HCI_VS_MSFT_Read_Absolute_RSSI 컨트롤러에서 BR/EDR 연결에 대한 RSSI(절대 수신 신호 강도 표시) 값을 읽습니다.

Microsoft에서 정의한 HCI 명령 및 하위 명령

컨트롤러는 Microsoft 특정 HCI 명령이 하나만 있음을 이해합니다. Microsoft 관련 명령 집합은 opcode를 사용하여 확장됩니다. Microsoft 정의 HCI 명령에 대한 첫 번째 명령 매개 변수는 하위 명령을 지정하는 opcode입니다.

컨트롤러는 다른 Microsoft HCI 하위 명령을 지원하려면 HCI_VS_MSFT_Read_Supported_Features 지원해야 합니다. 다른 명령에 대한 지원은 선택 사항이며 HCI_VS_MSFT_Read_Supported_Features 반환된 값에 따라 달라집니다. 컨트롤러가 HCI_VS_MSFT_Read_Supported_Features 대한 응답을 통해 하위 명령에 대한 지원을 나타내지 않는 한 Windows는 Microsoft 정의 하위 명령을 보내지 않습니다.

HCI_VS_MSFT_Read_Supported_Features

HCI_VS_MSFT_Read_Supported_Features 컨트롤러에서 지원하는 Microsoft 정의 기능을 설명하고 컨트롤러에서 반환되는 Microsoft 정의 이벤트의 접두사를 지정하는 비트맵을 제공합니다.

컨트롤러는 명령 완료 이벤트와 함께 이 명령을 즉시 완료해야 합니다.

명령 코드 명령 매개 변수 반환 매개 변수
HCI_VS_MSFT_Read_Supported_Features 선택한 기본 코드 Subcommand_opcode 상태
Subcommand_opcode
Supported_features,
Microsoft_event_prefix_length
Microsoft_event_prefix

Command_parameters

Subcommand_opcode(18진수):

매개 변수 설명
0x00 HCI_VS_MSFT_Read_Supported_Features 대한 하위 명령 opcode입니다.

Return_parameters

상태 (18진수):

매개 변수 설명
0x00 명령이 성공했습니다.
0xFF 0x01 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.

Subcommand_opcode(18진수):

매개 변수 설명
0x00 HCI_VS_MSFT_Read_Supported_Features 대한 하위 명령 opcode입니다.

Supported_features (8 옥텟):

매개 변수 설명
0x00000000 00000001 컨트롤러는 BR/EDR 연결에 대한 RSSI 모니터링 기능을 지원합니다. 또한 컨트롤러는 BR/EDR 연결의 절대 RSSI 메트릭을 읽는 HCI_VS_MSFT_Read_Absolute_RSSI 지원합니다.
0x00000000 00000002 컨트롤러는 LE 연결에 대한 RSSI 모니터링 기능을 지원합니다.
0x00000000 00000004 컨트롤러는 LE 레거시 광고의 RSSI 모니터링을 지원합니다.
0x00000000 00000008 컨트롤러는 LE 레거시 광고의 광고 모니터링을 지원합니다.
0x00000000 00000010 컨트롤러는 P-192 및 P-256에 대한 보안 단순 페어링 프로세스 중에 곡선에서 공용 X 및 Y 좌표의 유효성을 확인할 수 있습니다.
자세한 내용은 Bluetooth Core 사양 Erratum 10734를 참조하세요.
0x00000000 00000020 컨트롤러는 HCI_VS_MSFT_LE_Monitor_Advertisement [v1]을 사용하여 다른 라디오 활동과 동시에 수행되는 LE 광고의 지속적인 광고 모니터링을 지원합니다.
0x00000000 00000040 예약되었습니다.
0x00000000 00000080 컨트롤러는 이 문서에 설명된 AVDTP 오프로드 및 HCI_VS_MSFT_Avdtp_* 명령을 지원합니다.
0x00000000 00000100 예약되었습니다.
0x00000000 00000200 예약되었습니다.
0x00000000 00000400 컨트롤러는 [v2]HCI_VS_MSFT_LE_Monitor_Advertisement 지원합니다. 또한 컨트롤러는 HCI_VS_MSFT_LE_Monitor_Advertisement [v2]를 사용하여 다른 라디오 활동과 동시에 수행되는 LE 광고의 지속적인 광고 모니터링을 지원합니다.
0xFFFFFFFF FFFFFF00 향후 정의를 위해 예약된 비트입니다. 0이어야 합니다.

Microsoft_event_prefix_length(18진수):

매개 변수 설명
0x20 0x00 반환 된 Microsoft_event_prefix 지정된 Microsoft 이벤트 접두사 필드의 바이트 수입니다. 이는 Microsoft에서 지정한 모든 HCI 이벤트의 시작 부분에 있는 상수 정보의 바이트 수입니다.

Microsoft_event_prefix(가변 길이):

매개 변수 설명
이벤트 접두사 값 각 Microsoft 정의 이벤트의 시작 부분에 예상되는 상수 정보입니다. 이 정보는 Microsoft 정의 이벤트를 다른 사용자 지정 이벤트와 구분하는 데 사용됩니다.

HCI_VS_MSFT_Monitor_Rssi

HCI_VS_MSFT_Monitor_Rssi 컨트롤러가 지정된 연결에 대해 측정된 링크 RSSI 모니터링을 시작하고 연결의 측정된 링크 RSSI가 지정된 범위를 벗어나면 이벤트를 생성합니다.

명령 코드 명령 매개 변수 반환 매개 변수
HCI_VS_MSFT_Monitor_Rssi 선택한 기본 코드 Subcommand_opcode
Connection_Handle,
RSSI_threshold_high
RSSI_threshold_low,
RSSI_threshold_low_time_interval,
RSSI_sampling_period
상태
Subcommand_opcode

컨트롤러는 주기적으로 생성된 이벤트(RSSI_sampling_period 기반)를 사용하여 RSSI 값의 호스트에 알려야 합니다. 측정된 링크 RSSI는 BR/EDR 연결에 대한 dBm의 절대 수신자 신호 강도 값이어야 합니다.

HCI_VS_MSFT_Monitor_Rssi 명령에 대한 응답으로 컨트롤러는 모니터링을 시작할 수 있는 경우 상태가 0인 Command Complete 이벤트를 생성하거나, 그렇지 않으면 0이 아닌 상태를 생성해야 합니다. 상태 값이 0이 아닌 경우 컨트롤러는 이 명령에 대한 응답으로 HCI_VS_MSFT_Rssi_Event 생성하지 않습니다.

컨트롤러는 동일한 Connection_Handle 있는 다른 HCI_VS_MSFT_Monitor_Rssi 명령이 처리되지 않거나 지정된 연결 핸들이 잘못된 경우 명령을 거부합니다. 컨트롤러는 리소스 소모와 같은 다른 이유로 명령을 거부할 수도 있습니다.

이 상태 다이어그램은 연결에 대한 RSSI를 모니터링할 때 컨트롤러의 전환 상태를 보여 줍니다.

연결에 대한 RSSI를 모니터링할 때 컨트롤러의 전환 상태를 보여 주는 상태 다이어그램

수신된 RSSI가 지정된 RSSI_threshold_high 크거나 같은 경우 컨트롤러는 HCI_VS_MSFT_Rssi_Event 생성해야 합니다. 이 이벤트가 생성된 후 컨트롤러는 RSSI가 RSSI_threshold_low 아래로 떨어졌다는 HCI_VS_MSFT_Rssi_Event 생성할 때까지 RSSI_threshold_high 초과했음을 지정하는 새 HCI_VS_MSFT_Rssi_Event 생성하지 않습니다.

컨트롤러는 수신된 RSSI가 지정된 RSSI_threshold_low_time_interval 대해 지정된 RSSI_threshold_low 같거나 낮을 때 HCI_VS_MSFT_Rssi_Event 생성해야 합니다. 이 이벤트가 생성된 후 컨트롤러는 HCI_VS_MSFT_Rssi_Event 이벤트가 생성되어 RSSI_threshold_high 도달했거나 초과되었음을 지정할 때까지 RSSI가 RSSI_threshold_low 아래로 떨어졌는지 지정하는 새 HCI_VS_MSFT_Rssi_Event 생성하지 않습니다.

RSSI_sampling_period 0x01 0xFE 사이에 있는 경우 컨트롤러는 매 RSSI_sampling_period 주기적으로 HCI_VS_MSFT_Rssi_Event 생성해야 합니다. 이 이벤트는 RSSI_sampling_period 대해 계산된 RSSI의 평균을 포함해야 합니다. RSSI_sampling_period 0x00 또는 0xFF 경우 컨트롤러는 HCI_VS_MSFT_Rssi_Event 호스트에 주기적으로 알리지 않습니다.

Command_parameters

Subcommand_opcode(18진수):

매개 변수 설명
0x01 HCI_VS_MSFT_Monitor_Rssi 대한 하위 명령 opcode입니다.

Connection_Handle(8진수 2개):

매개 변수 설명
0xXXXX RSSI를 모니터링해야 하는 연결에 대한 핸들입니다.

RSSI_threshold_high(18진수):

매개 변수 설명
0xXX 예상되는 최대 RSSI 값입니다. 관찰된 RSSI가 이 값보다 크거나 같으면 컨트롤러가 이벤트를 생성합니다.
단위: dBm
BR/EDR 범위: -128~127(부호 있는 정수)
LE 범위: -127~20(부호 있는 정수)

RSSI_threshold_low(18진수):

매개 변수 설명
0xXX 필요한 최소 RSSI 값입니다. 관찰된 RSSI가 이 값보다 작거나 같으면 컨트롤러가 이벤트를 생성합니다.
단위: dBm
BR/EDR 필수 범위: -128~127(부호 있는 정수)
LE 필수 범위: -127~20(부호 있는 정수)

RSSI_threshold_low_time_interval(18진수):

매개 변수 설명
0x00 예약된 값입니다.
N = 0xXX HCI_VS_MSFT_Rssi_Event 생성되기 전에 RSSI 값이 RSSI_threshold_low 미만이어야 하는 시간(초)입니다.
기간 = N * 1초
필수 범위: 0x3C 0x01

RSSI_sampling_period(18진수):

매개 변수 설명
0x00 예약된 값입니다.
N = 0xXX 샘플링 간격(밀리초)입니다.
기간 = N * 100밀리초
필수 범위: 0xFE 0x01
0xFF 예약된 값입니다.

Return_parameters

상태(18진수):

매개 변수 설명
0x00 명령이 성공했습니다.
0xFF 0x01 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.
0x07 컨트롤러는 명령을 처리하기에 충분한 메모리가 없는 경우 초과된 메모리 용량을 반환해야 합니다.
오류 코드 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.

Subcommand_opcode(18진수):

매개 변수 설명
0x01 HCI_VS_MSFT_Monitor_Rssi 대한 하위 명령 opcode입니다.

마스킹되지 않는 한 생성된 이벤트

컨트롤러는 HCI_VS_MSFT_Monitor_Rssi 명령을 받으면 명령 완료 이벤트를 즉시 생성해야 합니다. Command Complete 이벤트가 0의 상태를 반환하는 경우 컨트롤러는 다음 조건 중 하나가 발생할 때 HCI_VS_MSFT_Rssi_Event 생성합니다.

  • RSSI_threshold_low_time_interval 디바이스에 대해 관찰된 RSSI가 지정된 RSSI_threshold_low 값과 같거나 작게 됩니다.
  • 디바이스에 대해 관찰된 RSSI가 지정된 RSSI_threshold_high 값보다 크거나 같아집니다.
  • RSSI_sampling_period 유효하고 샘플링 기간이 만료됩니다.

지정된 디바이스와의 연결이 끊어지면 컨트롤러가 필요한 모든 정리를 수행해야 합니다. 이 경우 HCI_VS_MSFT_Cancel_Monitor_Rssi 명령은 컨트롤러로 전송되지 않습니다.

HCI_VS_MSFT_Cancel_Monitor_Rssi

HCI_VS_MSFT_Cancel_Monitor_Rssi 이전에 발급된 HCI_VS_MSFT_Monitor_Rssi 명령을 취소합니다. 컨트롤러는 이 명령에 대한 응답으로 명령 완료 이벤트를 즉시 생성해야 합니다.

명령 코드 명령 매개 변수 반환 매개 변수
HCI_VS_MSFT_Cancel_Monitor_Rssi 선택한 기본 코드 Subcommand_opcode
Connection_Handle
상태
Subcommand_opcode

Command_parameters

Subcommand_opcode(18진수):

매개 변수 설명
0x02 HCI_VS_MSFT_Cancel_Monitor_Rssi 대한 하위 명령 opcode입니다.

Connection_Handle(8진수 2개):

매개 변수 설명
0xXXXX RSSI를 취소해야 하는 연결에 대한 핸들입니다.

Return_parameters

상태(18진수):

매개 변수 설명
0x00 명령이 성공했습니다.
0xFF 0x01 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.

Subcommand_opcode(18진수):

매개 변수 설명
0x02 HCI_VS_MSFT_Cancel_Monitor_Rssi 대한 하위 명령 opcode입니다.

마스킹되지 않는 한 생성된 이벤트

컨트롤러는 HCI_VS_MSFT_Cancel_Monitor_RSSI 명령을 받으면 명령 완료 이벤트를 생성해야 합니다.

HCI_VS_MSFT_LE_Monitor_Advertisement

HCI_VS_MSFT_LE_Monitor_Advertisement 컨트롤러가 지정된 RSSI 범위 내에 속하는 광고에 대한 모니터링을 시작하고 다음 조건 중 하나를 충족할 것을 요청합니다.

  • 지정된 패턴은 수신된 광고 패킷과 일치시킬 수 있습니다.
  • 지정된 UUID를 수신된 광고 패킷과 일치시킬 수 있습니다.
  • 지정된 IRK(ID 확인 키)를 사용하여 광고 패킷이 시작된 디바이스의 개인 주소를 확인할 수 있습니다.
  • 지정된 Bluetooth 주소는 수신된 광고 패킷과 일치시킬 수 있습니다.

v2 명령을 사용하면 호스트가 위의 조건 중 일부를 광고 원본 및 광고 대상을 제어하는 옵션과 결합하여 모니터링되는 광고를 더욱 구체화할 수 있습니다. 또한 v2 명령을 사용하면 호스트가 컨트롤러에서 광고 보고서를 생성하게 하는 모니터링된 광고를 필터링할 수 있습니다.

명령 코드 명령 매개 변수 반환 매개 변수
HCI_VS_MSFT_LE_Monitor_Advertisement [v2] 선택한 기본 코드 Subcommand_opcode_v2
RSSI_threshold_high
RSSI_threshold_low,
RSSI_threshold_low_time_interval,
RSSI_sampling_period
Monitor_options,
Advertisement_report_filtering_options
Peer_device_address,
Peer_device_address_type,
Peer_device_IRK
Condition_type,
<조건 매개 변수>
상태
Subcommand_opcode
Monitor_Handle
HCI_VS_MSFT_LE_Monitor_Advertisement [v1] 선택한 기본 코드 Subcommand_opcode_v1,
RSSI_threshold_high
RSSI_threshold_low,
RSSI_threshold_low_time_interval,
RSSI_sampling_period
Condition_type,
<조건 매개 변수>
상태
Subcommand_opcode
Monitor_Handle

컨트롤러는 이 명령에 대한 응답으로 명령 완료 이벤트를 생성해야 합니다. 컨트롤러가 모니터링을 시작할 수 있는 경우 상태 값을 0으로 설정하거나, 그렇지 않으면 0이 아닌 상태로 설정해야 합니다. 컨트롤러가 LE 보급 알림에 대한 RSSI 모니터링을 지원하지 않는 경우 RSSI_threshold_high, RSSI_threshold_low, RSSI_threshold_low_time_intervalRSSI_sampling_period 매개 변수 값을 무시합니다.

이 상태 다이어그램은 알림에 대한 RSSI를 모니터링할 때 컨트롤러의 전환 상태를 보여 줍니다.

HCI_VS_MSFT_LE_Monitor_Advertisement 대한 전환 상태를 보여 주는 상태 다이어그램

컨트롤러는 수신된 RSSI가 특정 디바이스 및 Monitor_options 일치에 대한 RSSI_threshold_high 크거나 같은 경우에만 광고 모니터링을 시작해야 합니다(아래 참조). 컨트롤러는 Monitor_state 1로 설정된 HCI_VS_MSFT_LE_Monitor_Device_Event 생성 하고 이 조건의 핸들로 Monitor_handle 설정하여 컨트롤러가 이 특정 디바이스의 조건을 모니터링하고 있음을 호스트에 알립니다. 또한 컨트롤러는 Advertisement_report_filter_options 일치하는 경우에만 모니터링되는 광고의 첫 번째 광고 보고서를 호스트에 전파해야 합니다(아래 참조).

필터에 대한 Monitor_options 다음 논리(의사 코드)에 따라 일치하는 것으로 간주됩니다.

MatchesCondition = (PDU Matches Condition Parameters)

IsAdvAMatch = ((Monitor_options bit 0 is set) && ((AdvA == Peer_device_address) && (TxAdd == Peer_device_address_type))) ||
    ((Monitor_options bit 1 is set) && (AdvA resolvable with Peer_device_IRK))

IsDirectedAdvAMatch = (TargetA is permitted based on the Scanning Filter Policy) &&
    (((Monitor_options bit 2 is set) && ((AdvA == Peer_device_address) && (TxAdd == Peer_device_address_type))) ||
        ((Monitor_options bit 3 is set) && (AdvA resolvable with Peer_device_IRK)))

IsDirectedTargetAMatch = (Monitor_options bit 4 is set) &&
    (TargetA is permitted based on the Scanning Filter Policy)

MonitorOptionsMatch = (MatchesCondition && IsAdvAMatch) ||
    IsDirectedAdvAMatch ||
    IsDirectedTargetAMatch ||
    ((Monitor_options bit 5 is set) && MatchesCondition)

또한 모니터링되는 광고의 경우 Advertisement_report_filter_options 다음 논리(의사 코드)에 따라 일치하는 것으로 간주됩니다.

IsDuplicateFilterSatisfied = (Advertisement_report_filter_options bit 0 is NOT set || PDU is not a duplicate)

ShouldGenerateLegacyReport = (Advertisement_report_filter_options bit 1 is set) &&
    (PDU is Legacy) &&
    MonitorOptionsMatch

ShouldGenerateExtendedReport = (Advertisement_report_filter_options bit 2 is set) &&
    (PDU is Extended) &&
    MonitorOptionsMatch

ShouldGenerateDirectedReport = (Advertisement_report_filter_options bit 3 is set) &&
    (PDU is Directed) &&
    MonitorOptionsMatch

AdvertisementReportFilterOptionsMatch = IsDuplicateFilterSatisfied &&
    (ShouldGenerateLegacyReport || ShouldGenerateExtendedReport || ShouldGenerateDirectedReport)

수신된 광고의 RSSI가 특정 디바이스에 대한 RSSI_threshold_low_interval RSSI_threshold_low 같거나 아래인 경우 컨트롤러는 조건 모니터링을 중지해야 합니다. 컨트롤러는 컨트롤러가 조건에 대한 특정 디바이스 모니터링을 중지했음을 호스트에 알리기 위해 Monitor_state 0으로 설정된 HCI_VS_MSFT_LE_Monitor_Device_Event 생성 해야 합니다. 컨트롤러가 Monitor_state 0으로 설정된 HCI_VS_MSFT_LE_Monitor_Device_Event 지정한 후 컨트롤러는 특정 디바이스에 대한 RSSI가 조건의 특정 디바이스에 대해 RSSI_threshold_high 상승했음을 호스트에 알릴 때까지 디바이스에 대한 호스트로 추가 보급 패킷이 흐르는 것을 허용하지 않습니다.

또한 컨트롤러는 Monitor_state 0으로 설정된 HCI_VS_MSFT_LE_Monitor_Device_Event 생성하여 지정된 RSSI_threshold_low_time_interval 디바이스에서 광고 패킷을 받지 않고 만료되는 경우 컨트롤러가 조건에 대한 디바이스 모니터링을 중지했음을 호스트에 알립니다. 컨트롤러가 특정 조건에 대한 디바이스를 모니터링하는 경우 다음 문은 true입니다.

컨트롤러가 샘플링 없이 LE 확장 광고의 RSSI 모니터링을 지원하는 경우 패킷의 RSSI 값이 RSSI_threshold_high보다 크거나 같은 경우 컨트롤러는 익명 광고 패킷을 호스트에 전파해야 합니다. 익명 광고는 추적 되지 않으며 HCI_VS_MSFT_LE_Monitor_Device_Event 이벤트는 생성되지 않습니다.

컨트롤러가 샘플링 없이 LE 광고의 RSSI 모니터링을 지원하는 경우 컨트롤러는 광고의 수신된 조각이 일치하지만 전체 광고가 성공적으로 수신되지 않은 경우 잘린 광고 보고서를 생성해야 합니다.

컨트롤러는 최소 30개의 동시 Monitor_handles, 최소 30개의 동시 추적 디바이스 및 최소 20개의 동시 추적 중복 광고를 지원해야 합니다. 또한 컨트롤러는 10% 의무 주기에서 연속 LE 검사를 수행할 수 있어야 합니다.

컨트롤러에서 주소 확인을 사용하도록 설정하고 호스트가 IRK가 컨트롤러의 확인 목록에 성공적으로 저장된 원격 디바이스를 모니터링하려는 경우 호스트는 원격 디바이스의 확인 목록 항목에서 Peer_Identity_Address 및 Peer_Identity_Address_Type 매개 변수를 Peer_device_address 및 Peer_device_address_type 매개 변수로 제공해야 합니다. 각각.

RSSI_sampling_period 레거시 광고 확장 광고(익명이 아닌 광고) 확장 광고(익명)
0x00 컨트롤러는 이전에 사용이 0x00 설정된 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령을 수신하지 않는 한, 수신된 모든 알림 패킷을 이 조건의 디바이스에 대한 호스트로 전파해야 합니다. 이 조건의 특정 디바이스에 대해 RSSI_threshold_low_time_interval 만료되지 않은 한 수신된 RSSI가 RSSI_threshold_low 미만이거나 같더라도 컨트롤러는 호스트에 광고 패킷을 전파해야 합니다. 이 광고 패킷의 RSSI 값은 수신된 광고의 RSSI 값이어야 합니다. 컨트롤러가 샘플링 없이 LE 확장 광고의 RSSI 모니터링을 지원하는 경우 광고 패킷이 광고 체인의 모든 PTU로 정의된다는 점을 제외하고 레거시 광고 열과 동일한 동작입니다. 컨트롤러가 샘플링 없이 LE 확장 광고의 RSSI 모니터링을 지원하는 경우 컨트롤러는 이전에 사용이 0x00 설정된 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령을 수신하지 않는 한, 수신된 모든 보급 알림 패킷을 이 조건의 디바이스에 대한 호스트로 전파해야 합니다.
0xFE 0x01 컨트롤러는 이전에 사용이 0x00 설정된 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령을 수신하지 않는 한 지정된 모든 RSSI_sampling_period 호스트레거시 보급 알림 패킷을 전파해야 합니다. 보급 알림에 지정된 RSSI 값은 이 샘플링 간격 동안 수신된 RSSI 값의 평균이어야 합니다. 컨트롤러가 샘플링 기간 동안 광고 패킷을 수신하지 않는 경우 호스트에 광고를 전파하지 않습니다. RSSI_sampling_period RSSI_threshold_low_time_interval 미만이고 RSSI_sampling_period 동안 수신된 모든 광고에는 RSSI가 RSSI_threshold_low 미만일 수 있습니다. 컨트롤러는 여전히 이 샘플링 간격 동안 수신된 RSSI 값의 평균을 사용하여 광고를 전파해야 합니다. 컨트롤러가 샘플링 없이 LE 확장 광고의 RSSI 모니터링을 지원하는 경우 컨트롤러는 RSSI_sampling_period 0x00 것처럼 동작해야 합니다. 컨트롤러가 샘플링 없이 LE 확장 광고의 RSSI 모니터링을 지원하는 경우 컨트롤러는 RSSI_sampling_period 0x00 것처럼 동작해야 합니다.
0xFF 컨트롤러는 특정 디바이스의 RSSI가 이 조건의 특정 디바이스에 대한 RSSI_threshold_low_time_interval RSSI_threshold_low 아래로 떨어졌다고 호스트에 알릴 때까지 조건의 디바이스에 대한 호스트로 추가 보급 패킷이 흐르는 것을 허용하지 않습니다. 이 알림은 Monitor_state 0으로 설정된 HCI_VS_MSFT_LE_Monitor_Device_Event 생성하여 수행됩니다. 컨트롤러가 샘플링 없이 LE 확장 광고의 RSSI 모니터링을 지원하는 경우 레거시 광고 열과 동일한 동작입니다 . 컨트롤러가 샘플링 없이 LE 확장 광고의 RSSI 모니터링을 지원하는 경우 컨트롤러는 RSSI_sampling_period 0x00 것처럼 동작해야 합니다.

컨트롤러가 이전에 사용이 0x00 설정된 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령을 받은 경우 샘플링 기간 타이머는 중지되지 않습니다. 예제: 자세한 내용은 샘플링 기간이 있는 필터에 대한 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable. 컨트롤러가 동일한 디바이스에서 업데이트되지 않은 광고 패킷을 수신하는 경우 컨트롤러에 저장된 조건에 대해 각 광고 패킷과 일치해야 합니다.

컨트롤러가 여러 조건과 일치하는 디바이스에서 광고 패킷을 수신하는 경우 컨트롤러는 일치하는 각 조건에 대한 HCI_VS_MSFT_LE_Monitor_Device_Event 생성하고 Monitor_handle 일치하는 조건으로 설정해야 합니다.

컨트롤러가 조건과 일치하는 범위의 모든 디바이스에 대한 RSSI 값을 모니터링할 수 없는 경우 가능한 한 많은 디바이스를 모니터링합니다. 모니터링해야 하는 디바이스에 대한 결정은 수신된 광고의 RSSI 값에 따라 달라집니다. 컨트롤러는 수신된 신호 강도가 더 높은 디바이스를 모니터링해야 합니다.

컨트롤러가 호스트에게 특정 디바이스(A)에 대해 알리고 최대 하드웨어 용량으로 디바이스를 모니터링하고 다른 디바이스(B)가 더 높은 RSSI 값을 가진 범위로 들어오는 경우 컨트롤러는 Monitor_state 0으로 설정된 HCI_VS_MSFT_LE_Monitor_Device_Event 생성하여 디바이스(A) 모니터링을 중지했음을 호스트에 알립니다. 또한 컨트롤러는 디바이스(B)가 현재 모니터링되고 있음을 호스트에 알리기 위해 Monitor_state 1로 설정된 HCI_VS_MSFT_LE_Monitor_Device_Event 생성해야 합니다.

조건 유형 및 조건 매개 변수

Condition_type 매개 변수는 Condition 매개 변수가 패턴, UUID, IRK 또는 BD_ADDR 지정하는지 여부를 지정합니다.

Condition_type 매개 변수가 패턴을 지정하는 경우 Condition에는 조건 내에 있는 패턴 수와 패턴 데이터가 포함된 두 개의 섹션이 포함됩니다.

HCI_VS_MSFT_LE_Monitor_Advertisement 패턴 조건 데이터 레이아웃을 보여 주는 다이어그램

패턴 수는 일치해야 하는 패턴 수를 지정합니다.

패턴 데이터의 형식은 다음과 같습니다.

  • 길이 는 패턴의 데이터 형식과 시작 바이트를 포함하는 이 패턴의 길이를 지정합니다.
  • AD 형식 은 AD 형식 필드를 지정합니다.
  • 패턴 의 시작은 AD 형식 바로 다음에 있는 패턴의 시작 바이트 위치를 지정합니다.
  • 패턴 의 크기는 (Length - 0x2)이며 지정된 시작 바이트에서 광고 패킷 내에서 지정된 AD 형식에 대해 일치시킬 패턴입니다.

지정된 패턴이 여러 개 있는 경우 컨트롤러는 하나 이상의 패턴이 수신된 광고와 일치하는지 확인해야 합니다.

컨트롤러가 샘플링 없이 LE 확장 광고의 RSSI 모니터링을 지원하는 경우:

  • 컨트롤러는 호스트 광고 데이터의 처음 251 옥텟에서 패턴을 찾아야 하며 호스트 광고 데이터의 나머지 8진수에서 볼 수 있습니다. AD 섹션이 Host Advertising Data의 처음 251 8진수 이상으로 확장되는 경우 컨트롤러는 호스트 광고 데이터의 처음 251 옥텟에 있는 AD 섹션의 일부 내에서 패턴을 찾아야 하며 호스트 광고 데이터의 나머지 8진수에서 볼 수 있습니다. 참고: 광고주의 조각화에 따라 호스트 광고 데이터의 처음 251 옥텟은 여러 광고 PPU의 AdvData로 확장될 수 있습니다. 스캐너는 너무 긴 PTU 체인을 따르지 않도록 따라가는 AuxPtr의 수를 제한하기 위해 주의해야 합니다.

  • 컨트롤러는 광고 설정 기준 디바이스별 주소를 기준으로 추적해야 합니다. 컨트롤러는 동일한 디바이스 주소에서 광고가 제공되더라도 패턴과 일치하는 각 광고 세트에 대한 HCI_VS_MSFT_LE_Monitor_Device_Event 전파해야 합니다.

Condition_type 매개 변수가 UUID를 지정하는 경우 조건 매개 변수에는 UUID 형식과 UUID가 포함됩니다. UUID 형식은 UUID가 16비트, 32비트 또는 128비트인지 여부를 지정합니다. 컨트롤러는 알림 패킷의 서비스 UUID를 구문 분석하여 지정된 UUID를 확인해야 합니다. UUID 형식이 0x01 정의된 경우 컨트롤러는 16비트 서비스 UUID의 불완전한 목록과 서비스 UUID AD 형식에 지정된 16비트 서비스 UUID의 전체 목록을 구문 분석해야 합니다. UUID 형식이 0x02 정의된 경우 컨트롤러는 32비트 서비스 UUID의 불완전한 목록과 서비스 UUID AD 형식에 지정된 32비트 UUID의 전체 목록을 구문 분석해야 합니다. 지정된 UUID 형식이 0x03 경우 컨트롤러는 128비트 서비스 UUID의 불완전한 목록과 서비스 UUID AD 형식에 지정된 128비트 서비스 UUID의 전체 목록을 구문 분석해야 합니다.

컨트롤러가 샘플링 없이 LE 확장 광고의 RSSI 모니터링을 지원하는 경우:

  • 컨트롤러는 호스트 광고 데이터의 처음 251 옥텟에서 서비스 UUID를 찾아야 하며 호스트 광고 데이터의 나머지 8진수에서 볼 수 있습니다. AD 섹션이 Host Advertising Data의 처음 251 8진수 이상으로 확장되는 경우 컨트롤러는 호스트 광고 데이터의 처음 251 옥텟에 있는 AD 섹션의 일부 내에서 서비스 UUID를 찾아야 하며 호스트 광고 데이터의 나머지 8진수에서 볼 수 있습니다. 참고: 광고주의 조각화에 따라 호스트 광고 데이터의 처음 251 옥텟은 여러 광고 PPU의 AdvData에 걸쳐 있을 수 있습니다. 스캐너는 너무 긴 PTU 체인을 따르지 않도록 따라가는 AuxPtr의 수를 제한하기 위해 주의해야 합니다.

  • 컨트롤러는 광고 설정 기준 디바이스별 주소를 기준으로 추적해야 합니다. 컨트롤러는 광고가 동일한 디바이스에서 제공되더라도 서비스 UUID와 일치하는 각 광고 세트에 대한 HCI_VS_MSFT_LE_Monitor_Device_Event 전파해야 합니다.

Condition_type 매개 변수가 IRK를 지정하는 경우 Condition 매개 변수에는 IRK가 포함됩니다.

Condition_type 매개 변수가 Bluetooth Address를 지정하는 경우 Condition 매개 변수에는 주소 유형과 BD_ADDR 포함됩니다.

컨트롤러는 검사(활성 또는 수동)를 사용하는 경우에도 조건에 따라 모니터링을 계속해야 합니다. 활성 검색을 사용하도록 설정하면 필터와 일치하는 광고에 대한 검색 응답이 호스트에 전파됩니다.

필터를 사용하지 않도록 설정할 때 컨트롤러가 HCI_VS_MSFT_LE_Monitor_Advertisement 명령을 수신하는 경우(사용이 0x00 설정된 이전에 받은 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령 으로 인해) 컨트롤러는 가능한 경우 명령을 수락하지만 비활성화된 상태로 설정해야 합니다. 컨트롤러는 리소스 소모와 같은 다른 이유로 명령을 거부할 수도 있습니다.

모든 Monitor_options 비트가 명확한 경우 컨트롤러는 잘못된 HCI 명령 매개 변수(0x12) 오류 코드를 반환해야 합니다.

Monitor_options 비트 1 또는 비트 3이 설정되고 Peer_device_IRK 잘못된 IRK로 설정되었거나 Monitor_options 비트가 설정되지 않은 경우 컨트롤러는 잘못된 HCI 명령 매개 변수(0x12) 오류 코드를 반환해야 합니다.

Monitor_options 비트 0 또는 비트 1 또는 비트 2 또는 비트 3이 설정되고 Condition_type 0x03 또는 0x04 설정된 경우 컨트롤러는 잘못된 HCI 명령 매개 변수(0x12) 오류 코드를 반환해야 합니다.

Advertisement_report_filter_options 비트 0이 설정되고 RSSI_sampling_period 0x00 이외의 값인 경우 컨트롤러는 잘못된 HCI 명령 매개 변수(0x12) 오류 코드를 반환해야 합니다.

누락된 매개 변수

모든 매개 변수를 포함하지 않는 이 명령 버전이 실행되면 다음을 사용해야 합니다.

매개 변수
Monitor_options 비트 5 집합; 다른 모든 비트가 지워진 경우
Advertisement_report_filter_options 비트 1 및 2 집합; 다른 모든 비트가 지워진 경우
Peer_device_IRK 0x0000000000000000 00000000000000000
Peer_device_address 0x000000000000
Peer_device_address_type 0x00

Command_parameters

Subcommand_opcode_v1(18진수):

매개 변수 설명
0x03 HCI_VS_MSFT_LE_Monitor_Advertisement [v1]에 대한 하위 명령 opcode입니다.

Subcommand_opcode_v2(18진수):

매개 변수 설명
0x0F HCI_VS_MSFT_LE_Monitor_Advertisement [v2]에 대한 하위 명령 opcode입니다.

RSSI_threshold_high(18진수):

매개 변수 설명
0xXX 예상되는 최대 RSSI 값입니다. 관찰된 RSSI가 이 값보다 크거나 같으면 컨트롤러가 이벤트를 생성합니다.
단위: dBm
필수 범위: -127~20(부호 있는 정수)

RSSI_threshold_low(18진수):

매개 변수 설명
0xXX 필요한 최소 RSSI 값입니다. 관찰된 RSSI가 이 값보다 작거나 같으면 컨트롤러가 이벤트를 생성합니다.
단위: dBm
필수 범위: -127~20(부호 있는 정수)

RSSI_threshold_low_time_interval(18진수):

매개 변수 설명
0x00 예약된 값입니다.
N = 0xXX HCI_VS_MSFT_Rssi_Event 생성되기 전에 RSSI 값이 RSSI_threshold_low 미만이어야 하는 시간(초)입니다.
기간 = N * 1초
필수 범위: 0x3C 0x01.

RSSI_sampling_period(18진수):

매개 변수 설명
0x00 컨트롤러는 수신된 모든 광고를 호스트에 전파해야 합니다.
N = 0xXX 샘플링 간격(밀리초)입니다.
기간 = N * 100밀리초.
필수 범위: 0xFE 0x01
0xFF 컨트롤러는 수신된 광고를 호스트에 전파하지 않습니다.

Monitor_options(18진수):

비트 번호 매개 변수 설명
0 컨트롤러는 AdvA 또는 확인된 ID 주소가 Peer_device_address 및 Peer_device_address_type 일치하고 TargetA가 없는 경우 또는 해당 PPU가 Condition_Type 지정된 조건과 일치하는 경우 검색 필터 정책에 따라 TargetA가 허용되는 광고 PPU를 모니터링해야 합니다.
1 컨트롤러는 AdvA가 Peer_device_IRK 확인 가능하고 TargetA가 없는 경우 또는 해당 PPU가 Condition_Type 지정된 조건과 일치하는 경우 검사 필터 정책에 따라 TargetA가 허용되는 광고 PTU를 모니터링해야 합니다. 링크 계층 개인 정보 보호가 컨트롤러에서 사용 중인 경우 이 비트는 설정되지 않습니다.
2 컨트롤러는 검색 필터 정책에 따라 TargetA가 허용되는 위치와 AdvA 또는 확인된 ID 주소가 Peer_device_address 및 Peer_device_address_type 일치하는 방향 광고 PTU를 모니터링해야 합니다. 이는 PDU가 Condition_Type 지정된 조건과 일치하는지 여부에 관계 없이 수행됩니다.
3 컨트롤러는 검색 필터 정책에 따라 TargetA가 허용되고 AdvA가 Peer_device_IRK 확인할 수 있는 방향 광고 PTU를 모니터링해야 합니다. 이는 PDU가 Condition_Type 지정된 조건과 일치하는지 여부에 관계 없이 수행됩니다. 링크 계층 개인 정보 보호가 컨트롤러에서 사용 중인 경우 이 비트는 설정되지 않습니다.
4 컨트롤러는 Peer_device_address 및 Peer_device_address_type 또는 Peer_device_IRK 값과 관계없이 PDU가 Condition_Type 지정된 조건과 일치하는지 여부에 관계없이 TargetA가 검색 필터 정책에 따라 허용되는 directed advertising PDU를 모니터링해야 합니다.
5 컨트롤러는 TargetA가 없는 AdvA의 광고 PPU를 모니터링하거나, 있는 경우 해당 PPU가 Condition_Type 지정된 조건과 일치하는 경우 검사 필터 정책에 따라 TargetA가 허용됩니다.
기타 모든 비트 나중에 사용하기 위해 예약됩니다.

Advertisement_report_filtering_options(18진수):

비트 번호 매개 변수 설명
0 중복 광고 PTU를 필터링합니다. 이 비트는 RSSI_sampling_period 0x00 경우에만 설정됩니다.
1 컨트롤러는 해당 PPU가 지정된 Monitor_options 일치하는 경우 레거시 광고 CPU에 대한 HCI_LE_Advertising_Report 이벤트 또는 HCI_LE_Directed_Advertising_Report 이벤트 또는 HCI_LE_Extended_Advertising_Report 이벤트를 생성해야 합니다.
2 컨트롤러는 해당 PPU가 지정된 Monitor_options 일치하는 경우 확장 광고 PTU에 대한 HCI_LE_Extended_Advertising_Report 이벤트를 생성해야 합니다.
3 컨트롤러는 지정된 Monitor_options 일치하는 PPU에 대한 HCI_LE_Advertising_Report 이벤트 또는 HCI_LE_Directed_Advertising_Report 이벤트 또는 HCI_LE_Extended_Advertising_Report 이벤트를 생성해야 합니다.
기타 모든 비트 나중에 사용하기 위해 예약됩니다.

Peer_device_address(68진수):

매개 변수 설명
0xXXXXXXXXXXXX 일치하는 공용 디바이스 주소 또는 임의 디바이스 주소입니다.

Peer_device_address_type(18진수):

매개 변수 설명
0x00 공용 디바이스 주소
0x01 임의 디바이스 주소
다른 모든 값 나중에 사용하기 위해 예약됩니다.

Peer_device_IRK (16 옥텟):

매개 변수 설명
0x0000000000000000 00000000000000000 IRK가 잘못되었습니다. Monitor_options 비트 1이 설정되거나 Monitor_options 비트 3이 설정된 경우 값이 아니어야 합니다.
0xXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 일치시킬 디바이스의 IRK입니다. Peer_device_address 및 Peer_device_address_type 채워집니다.

Condition_type(18진수):

매개 변수 설명
0x01 조건은 광고에서 일치해야 하는 패턴입니다.
0x02 조건은 UUID 형식 및 UUID입니다.
0x03 조건은 IRK의 해결입니다. Monitor_options 비트 0, 1, 2 또는 3이 설정된 경우 제외됩니다.
0x04 조건은 Bluetooth 주소 유형 및 Bluetooth 주소입니다. Monitor_options 비트 0, 1, 2 또는 3이 설정된 경우 제외됩니다.

조건: 조건의 적용 가능한 필드는 Condition_type 값에 따라 달라집니다. 자세한 내용은 Condition_type 및 조건 매개 변수 섹션을 참조하세요.

Number_of_patterns(18진수):

매개 변수 설명
0xXX Pattern_data 매개 변수 내에 지정된 패턴의 수입니다.

Pattern_data(>8진수 3개):

매개 변수 설명
Length 이 패턴의 길이입니다.
데이터 형식 광고 섹션의 데이터 형식입니다. 값은 Bluetooth 할당 번호 문서에 나열됩니다.
시작 바이트 지정된 데이터 형식에 대해 일치시킬 패턴의 시작 위치입니다.
패턴 일치시킬 패턴(길이 크기 - 0x2 바이트)입니다.

UUID_type(18진수):

매개 변수 설명
0x01 UUID는 16비트 서비스입니다.
0x02 UUID는 32비트 서비스입니다.
0x03 UUID는 128비트 서비스입니다.

UUID(2, 4 또는 16 옥텟):

매개 변수 설명
0xXXXX UUID_type 0x01 경우 2바이트입니다.
UUID_type 0x02 경우 4바이트입니다.
UUID_type 0x03 경우 16바이트입니다.

IRK (16 옥텟):

매개 변수 설명
0xXXXXXXXX XXXXXXXX XXXXXXXXXX XXXXXXXXXXXX 개인 주소를 확인하는 데 사용할 IRK입니다.

Address_type(18진수):

매개 변수 설명
0x00 공용 디바이스 주소입니다.
0x01 임의 디바이스 주소입니다.
0xFF 0x02 나중에 사용할 예약된 값입니다.

BD_ADDR(68진수):

매개 변수 설명
0xXXXXXXXXXXXX 모니터링할 디바이스의 Bluetooth 주소입니다.

Return_parameters

상태(18진수):

매개 변수 설명
0x00 명령이 성공했습니다.
0x07 컨트롤러는 명령을 처리하기에 충분한 메모리가 없는 경우 초과된 메모리 용량을 반환해야 합니다.
오류 코드 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.

Subcommand_opcode(18진수):

매개 변수 설명
0x03 또는 0x0F 제출된 명령에 따라 HCI_VS_MSFT_LE_Monitor_Advertisement [v1] 또는 HCI_VS_MSFT_LE_Monitor_Advertisement [v2]에 대한 하위 명령 opcode입니다.

Monitor_handle(18진수):

매개 변수 설명
0xFF 0x00 이 규칙의 핸들입니다. 이 핸들은 HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement 광고 모니터링을 취소하기 위한 매개 변수로 사용됩니다.
이 매개 변수는 Status가 0x00 경우에만 유효합니다.

마스킹되지 않는 한 생성된 이벤트

HCI_VS_MSFT_LE_Monitor_Advertisement 명령을 받으면 컨트롤러는 명령 완료 이벤트를 생성해야 합니다.

HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement

HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement 이전에 발급된 HCI_VS_MSFT_LE_Monitor_Advertisement 명령을 취소합니다.

명령 코드 명령 매개 변수 반환 매개 변수
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement 선택한 기본 코드 Subcommand_opcode
Monitor_handle
상태
Subcommand_opcode

컨트롤러는 이 명령에 대한 응답으로 명령 완료 이벤트를 즉시 생성해야 합니다.

Command_parameters

Subcommand_opcode(18진수):

매개 변수 설명
0x04 HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement 대한 하위 명령 opcode입니다.

Connection_Handle(18진수):

매개 변수 설명
0xXX 취소되는 필터에 대한 핸들입니다.

Return_parameters

상태(18진수):

매개 변수 설명
0x00 명령이 성공했습니다.
0x07 컨트롤러는 명령을 처리하기에 충분한 메모리가 없는 경우 초과된 메모리 용량을 반환해야 합니다.
오류 코드 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.

Subcommand_opcode(18진수):

매개 변수 설명
0x04 HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement 대한 하위 명령 opcode입니다.

마스킹되지 않는 한 생성된 이벤트

컨트롤러는 HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement 명령을 받으면 명령 완료 이벤트를 생성해야 합니다.

HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable

HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 광고 필터의 상태를 설정합니다.

명령 코드 명령 매개 변수 반환 매개 변수
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 선택한 기본 코드 Subcommand_opcode
Enable
상태
Subcommand_opcode

사용이 0x00 설정되면 컨트롤러는 수신된 광고를 기존 필터 허용 목록 설정에 따라 호스트에 전파해야 합니다. 컨트롤러는 현재 모니터링 중인 디바이스를 계속 모니터링하고 디바이스가 더 이상 모니터링되지 않는 경우 Monitor_state 0으로 설정된 HCI_VS_MSFT_LE_Monitor_Device_Event 생성해야 합니다. 컨트롤러는 새 디바이스가 모니터링되는 경우 Monitor_state 1로 설정된 HCI_VS_MSFT_LE_Monitor_Device_Event 생성해야 합니다. 호스트는 모든 필터 조건을 다시 사용하도록 0x01 설정하여 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 발급할 수 있습니다.

사용이 0x01 설정되면 이 명령은 이전에 실행한 HCI_VS_MSFT_LE_Monitor_Advertisement 명령으로 설정된 모든 필터를 사용하도록 설정합니다. 컨트롤러는 필터 상태를 전환하지 않는 경우 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령을 거부해야 합니다.

  • 컨트롤러는 이전에 사용이 0x01 설정된 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령을 받은 경우 사용이 0x01 설정된 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령을 거부해야 합니다.
  • 컨트롤러는 이전에 사용이 0x00 설정된 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령을 받은 경우 사용이 0x00 설정된 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령을 거부해야 합니다.

광고 필터의 기본 상태는 꺼져 있어야 합니다. 이 상태는 사용이 0x00 설정하여 이전에 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령을 수신한 컨트롤러와 동일합니다. 컨트롤러는 이 명령에 대한 응답으로 명령 완료 이벤트를 즉시 생성해야 합니다.

Command_parameters

Subcommand_opcode(18진수):

매개 변수 설명
0x05 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 대한 하위 명령 opcode입니다.

사용(18진수):

매개 변수 설명
0x00 현재 필터 허용 목록 동작으로 되돌리지만 HCI_VS_MSFT_LE_Monitor_Advertisement 명령의 조건에 따라 디바이스를 계속 모니터링합니다.
0x01 컨트롤러에서 발급된 모든 HCI_VS_MSFT_LE_Monitor_Advertisement 명령을 사용하도록 설정합니다.

Return_parameter

상태(18진수):

매개 변수 설명
0x00 명령이 성공했습니다.
0x0C 컨트롤러는 이전에 사용이 이 명령과 동일한 값으로 설정된 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령을 보았기 때문에 컨트롤러가 명령을 거부한 경우 허용되지 않는 명령을 반환해야 합니다.
오류 코드 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.

Subcommand_opcode(18진수):

매개 변수 설명
0x05 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 대한 하위 명령 opcode입니다.

마스킹되지 않는 한 생성된 이벤트

컨트롤러는 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 명령을 받으면 명령 완료 이벤트를 생성해야 합니다.

HCI_VS_MSFT_Read_Absolute_RSSI

HCI_VS_MSFT_Read_Absolute_RSSI 컨트롤러에서 BR/EDR 연결에 대한 RSSI(절대 수신 신호 강도 표시) 값을 읽습니다.

명령 코드 명령 매개 변수 반환 매개 변수
HCI_VS_MSFT_Read_Absolute_RSSI 선택한 기본 코드 Subcommand_opcode
Connection_Handle
상태
Subcommand_opcode
Connection_Handle,
RSSI

연결 핸들은 RSSI를 읽고 있는 ACL 연결을 식별하기 위한 명령 및 반환 매개 변수로 제공됩니다. RSSI 메트릭은 6dB 정확도를 ± dBm의 절대 수신자 신호 강도입니다. RSSI를 읽을 수 없는 경우 RSSI 메트릭은 127로 설정되어야 합니다. 컨트롤러는 명령 완료 이벤트와 함께 이 명령을 즉시 완료해야 합니다.

Command_parameters

Subcommand_opcode(18진수):

매개 변수 설명
0x06 HCI_VS_MSFT_Read_Absolute_RSSI 대한 하위 명령 opcode입니다.

Connection_Handle(8진수 2개):

매개 변수 설명
0xXXXX RSSI를 읽어야 하는 BR/EDR 연결에 대한 핸들입니다.

Return_parameters

상태(18진수):

매개 변수 설명
0x00 명령이 성공했습니다.
0xFF 0x01 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.

Subcommand_opcode(18진수):

매개 변수 설명
0x06 HCI_VS_MSFT_Read_Absolute_RSSI 대한 하위 명령 opcode입니다.

Connection_Handle(8진수 2개):

매개 변수 설명
0xXXXX RSSI를 읽은 BR/EDR 연결에 대한 핸들입니다.

RSSI(18진수):

매개 변수 설명
N = 0xXX BR/EDR 연결에 대한 RSSI 값입니다.
단위: dBm
필수 범위: -128~127(부호 있는 정수)

마스킹되지 않는 한 생성된 이벤트

컨트롤러는 HCI_VS_MSFT_Read_Absolute_RSSI 명령이 완료되면 명령 완료 이벤트를 생성해야 합니다.

Microsoft에서 정의한 Bluetooth HCI 이벤트

Microsoft에서 정의한 모든 Bluetooth HCI 이벤트는 공급업체에서 정의한 이벤트이며 이벤트 코드 0xFF 사용합니다. Microsoft 이벤트에 대한 이벤트 데이터는 항상 Microsoft 정의 이벤트를 다른 공급업체 정의 이벤트와 구분하기 위해 상수 바이트 문자열로 시작합니다. 상수 문자열의 길이와 값은 컨트롤러 구현자에 의해 정의되고 HCI_VS_MSFT_Read_Supported_Features 대한 응답으로 반환됩니다.

HCI 이벤트 설명
HCI_VS_MSFT_Rssi_Event HCI_VS_MSFT_RSSI_Event HCI_VS_MSFT_Monitor_Rssi 명령이 완료되었음을 나타냅니다.
HCI_VS_MSFT_LE_Monitor_Device_Event HCI_VS_MSFT_LE_Monitor_Device_Event 컨트롤러가 Bluetooth LE 디바이스 모니터링을 시작하거나 중지했음을 나타냅니다.

HCI_VS_MSFT_RSSI_Event

HCI_VS_MSFT_RSSI_Event HCI_VS_MSFT_Monitor_Rssi 명령이 완료되었음을 나타냅니다. Status 매개 변수가 0이면 원격 디바이스의 RSSI 값이 지정된 범위를 벗어난 값으로 변경되어 명령이 완료됩니다. Status 매개 변수가 0이 아니면 연결의 RSSI 값을 더 이상 모니터링할 수 없으므로 명령이 완료됩니다.

이벤트 Event Code Microsoft 이벤트 코드 이벤트 매개 변수
HCI_VS_MSFT_RSSI_Event 0xFF 0x01 Event_prefix
Microsoft_event_code,
상태
Connection_Handle,
RSSI

Event_parameters

Event_prefix(가변 크기):

매개 변수 설명
이벤트 접두사 이 이벤트를 Microsoft 정의로 플래그를 지정하는 이벤트 접두사입니다. 크기와 값은 HCI_VS_MSFT_Read_Supported_Features 명령에 의해 반환됩니다.

Microsoft_event_code(18진수):

매개 변수 설명
0x01 HCI_VS_MSFT_RSSI_Event 대한 이벤트 코드입니다.

상태(18진수):

매개 변수 설명
0x00 성공. 연결의 RSSI 값이 다음 조건 중 하나를 충족했습니다. RSSI가 RSSI_threshold_high 도달했거나 초과했습니다.
RSSI에 도달하거나 RSSI_threshold_low_time_interval 초 동안 RSSI_threshold_low 아래로 떨어졌다.
RSSI_sampling_period 만료되었으며 이 이벤트는 호스트에게 RSSI 값을 알리기 위해 생성되었습니다.
0xFF 0x01 실패. 연결의 RSSI 값을 더 이상 모니터링할 수 없습니다. 오류 코드는 일반적으로 기본 ACL 연결이 손실된 이유를 설명하는 코드 중 하나입니다.

Connection_Handle(8진수 2개):

매개 변수 설명
0xXXXX RSSI를 모니터링할 연결에 대한 핸들입니다.

RSSI(18진수):

매개 변수 설명
0xXX 연결에 대한 측정된 링크 RSSI 값입니다.
단위: dBm
BR/EDR 범위: -128~127(부호 있는 정수)
LE 범위: -127~20(부호 있는 정수)

HCI_VS_MSFT_LE_Monitor_Device_Event

HCI_VS_MSFT_LE_Monitor_Device_Event 컨트롤러가 Bluetooth LE 디바이스 모니터링을 시작하거나 중지했음을 나타냅니다.

Monitor_state 매개 변수 값이 1이면 컨트롤러가 지정된 BD_ADDR Bluetooth 디바이스를 모니터링하기 시작했습니다. Monitor_state 매개 변수 값이 0이면 컨트롤러가 지정된 BD_ADDR Bluetooth 디바이스 모니터링을 중지했습니다.

이벤트 Event Code Microsoft 이벤트 코드 이벤트 매개 변수
HCI_VS_MSFT_LE_Monitor_Device_Event 0xFF 0x02 Event_prefix
Microsoft_event_code,
Address_type
BD_ADDR,
Monitor_handle,
Monitor_state

컨트롤러는 Monitor_state 1로 설정된 HCI_VS_MSFT_LE_Monitor_Device_Event 아직 생성하지 않은 경우 Monitor_state 매개 변수가 0으로 설정된 HCI_VS_MSFT_LE_Monitor_Device_Event 생성하지 않습니다.

Event_parameters

Event_prefix(가변 크기):

매개 변수 설명
이벤트 접두사 이 이벤트를 Microsoft 정의로 플래그를 지정하는 이벤트 접두사입니다. 크기와 값은 HCI_VS_MSFT_Read_Supported_Features 명령에 의해 반환됩니다.

Microsoft_event_code(18진수):

매개 변수 설명
0x02 HCI_VS_MSFT_LE_Monitor_Device_Event 대한 이벤트 코드입니다.

Address_type(18진수):

매개 변수 설명
0x00 공용 디바이스 주소입니다.
0x01 임의 디바이스 주소입니다.
0xFF 0x02 나중에 사용할 예약된 값입니다.

BD_ADDR(68진수):

매개 변수 설명
0xXXXXXXXXXXXX 디바이스의 Bluetooth 주소입니다.

Monitor_handle(18진수):

매개 변수 설명
0xXX HCI_VS_MSFT_LE_Monitor_Advertisement 명령에 대해 지정된 필터에 대한 핸들입니다.

Monitor_state(18진수):

매개 변수 설명
0x00 컨트롤러가 BD_ADDR 지정한 디바이스 모니터링을 중지하고 Monitor_handle.
0x01 컨트롤러는 BD_ADDR 지정한 디바이스 및 Monitor_handle 모니터링하기 시작했습니다.

Microsoft에서 정의한 AVDTP HCI 명령

다음 AVDTP HCI 명령은 오디오 사이드밴드 A2DP 오프로드를 지원합니다. 자세한 내용은 오디오 사이드밴드 A2DP 오프로드를 참조하세요.

HCI AVDTP 명령 설명
HCI_VS_MSFT_Avdtp_Capabilities_Configuration 오디오 전송 인터페이스를 구성하고 코덱 정보 블록 목록인 Bluetooth 컨트롤러의 코덱 기능을 반환합니다.
HCI_VS_MSFT_Avdtp_Open 컨트롤러 내에서 AVDTP 오프로드 리소스를 할당하고 구성합니다.
HCI_VS_MSFT_Avdtp_Start 오디오 전송에서 전송된 AVDTP 미디어 패킷으로 오디오 스트리밍을 시작합니다.
HCI_VS_MSFT_Avdtp_Suspend HCI_VS_MSFT_Avdtp_Start 시작된 스트리밍 활동을 중지합니다.
HCI_VS_MSFT_Avdtp_Close HCI_VS_MSFT_Avdtp_Open 할당한 AVDTP 오프로드 리소스를 해제합니다.

HCI_VS_MSFT_Avdtp_Capabilities_Configuration

HCI_VS_MSFT_Avdtp_Capabilities_Configuration 오디오 전송 인터페이스를 구성하고 코덱 정보 블록 목록인 Bluetooth 컨트롤러의 코덱 기능을 반환합니다. 각 코덱 정보 블록은 지원되는 코덱 하나를 설명합니다.

아래의 일부 매개 변수는 길이가 가변적인 구조의 배열이므로 이러한 모든 매개 변수는 여전히 하나의 HCI 명령과 하나의 해당 HCI 이벤트에 맞는 것으로 가정합니다.

Command_parameters

External_codec_count(18진수):

매개 변수 설명
0x00-0xFF 다음 Codec_capability 블록의 수입니다.

External_codec_capability(가변 길이):

매개 변수 설명
코덱 기능 블록 코덱 기능 정보에 설명된 코덱 기능 정보 블록입니다. 오디오 인터페이스에 연결된 디바이스에서 지원하는 단일 코덱에 대해 설명합니다.

이 데이터 구조는 External_codec_count 반복됩니다.

Audio_interface_parameter_count(18진수):

매개 변수 설명
0x00-0xFF 다음 Audio_interface_parameters 수입니다.

Audio_interface_parameter(가변 길이)

매개 변수 설명
오디오 인터페이스 매개 변수 위에서 설명한 대로 오디오 인터페이스 매개 변수로, 오디오 인터페이스에 연결된 디바이스에서 설정합니다.

이 데이터 구조는 Audio_interface_parameter_count 반복됩니다.

Return_parameters

상태(18진수):

매개 변수 설명
0x00 명령이 성공했습니다.
0x01-0xFF 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.

Subcommand_opcode _(18진수):

매개 변수 설명
0x07 HCI_VS_MSFT_Avdtp_Capabilities_Configuration 대한 하위 명령 opcode입니다.

Internal_codec_count(18진수):

매개 변수 설명
0x00-0xFF 뒤에 Internal_codec_capability 블록의 수입니다.

Internal_codec_capability(가변 길이):

매개 변수 설명
코덱 기능 블록 오디오 사이드밴드 A2DP 오프로드설명된 코덱 기능 정보 블록입니다. Bluetooth 컨트롤러에서 지원하는 단일 코덱에 대해 설명합니다.

이 데이터 구조는 Internal_codec_count 반복됩니다.

Audio_interface_parameter_count(18진수):

매개 변수 설명
0x00-0xFF 다음 Audio_interface_parameters 수입니다.

Audio_interface_parameter(가변 길이)

매개 변수 설명
오디오 인터페이스 매개 변수 위에서 설명한 오디오 인터페이스 매개 변수입니다. 호스트 소프트웨어는 이 매개 변수를 오디오 인터페이스에 연결된 디바이스에 전달합니다.

이 데이터 구조는 Audio_interface_parameter_count 반복됩니다.

HCI_VS_MSFT_Avdtp_Open

컨트롤러 내에서 AVDTP 오프로드 리소스를 할당하고 구성합니다.

아래의 일부 매개 변수는 길이가 가변적인 구조의 배열이므로 이러한 모든 매개 변수는 여전히 하나의 HCI 명령과 하나의 해당 HCI 이벤트에 맞는 것으로 가정합니다.

Command_parameters

Connection_handle(8진수 2개)

매개 변수 설명
0xXXXX 원격 디바이스에 연결된 AVDTP 미디어 L2CAP 채널을 IIdentifs합니다.

L2cap_destination_cid(8진수 2개)

매개 변수 설명
0xXXXX AVDTP 미디어 채널의 L2CAP 대상 CID

L2cap_mtu(8진수 2개)

매개 변수 설명
0xXXXX L2CAP AVDTP 미디어 채널 MTU

Configured_codec_capability(가변 길이):

매개 변수 설명
코덱 기능 블록 오디오 사이드밴드 A2DP 오프로드설명된 코덱 기능 정보 블록입니다. AVDTP 미디어에 대해 구성된 코덱에 대해 설명합니다.

Audio_interface_parameter_count(18진수):

매개 변수 설명
0x00-0xFF 다음 Audio_interface_parameters 수입니다.

Audio_interface_parameter(가변 길이)

매개 변수 설명
오디오 인터페이스 매개 변수 위에서 설명한 오디오 인터페이스 매개 변수입니다. 오디오 인터페이스에 연결된 디바이스는 특정 스트림 인스턴스에 대해 이러한 매개 변수를 지정합니다.

이 데이터 구조는 Audio_interface_parameter_count 반복됩니다.

Return_parameters

상태(18진수):

매개 변수 설명
0x00 명령이 성공했습니다.
0x01-0xFF 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.

Subcommand_opcode(18진수):

매개 변수 설명
0x08 HCI_VS_MSFT_Avdtp_Open 대한 하위 명령 opcode입니다.

Avdtp_offload_handle(8진수 2개):

매개 변수 설명
0xXXXX 오프로드된 스트림에 할당된 리소스를 식별합니다.

Audio_interface_parameter_count(18진수):

매개 변수 설명
0x00-0xFF 다음 Audio_interface_parameters 수입니다.

Audio_interface_parameter(가변 길이)

매개 변수 설명
오디오 인터페이스 매개 변수 위에서 설명한 오디오 인터페이스 매개 변수입니다. 호스트 소프트웨어는 스트림 인스턴스의 오디오 인터페이스에 연결된 디바이스에 이 매개 변수를 전달합니다.

이 데이터 구조는 Audio_interface_parameter_count 반복됩니다.

HCI_VS_MSFT_Avdtp_Start

이 명령은 오디오 전송에서 전송된 AVDTP 미디어 패킷으로 오디오 스트리밍을 시작합니다. 이 명령을 실행하면 Bluetooth 컨트롤러가 다음 작업을 시작합니다.

  • 오디오 전송에서 오디오 데이터를 받습니다.
  • 인코더가 Bluetooth 컨트롤러에 있는 경우 오디오 전송에서 받은 데이터를 인코딩하여 인코딩된 프레임을 생성합니다.
  • 인코더가 오디오 DSP에 있는 경우 오디오 전송에서 인코딩된 프레임을 추출합니다.
  • 인코딩된 프레임을 AVDTP 미디어 페이로드로 어셈블
  • 미디어 페이로드를 포함하는 AVDTP 미디어 패킷을 생성하고 전송합니다.

Command_parameters

Avdtp_offload_handle(8진수 2개):

매개 변수 설명
0xXXXX 오프로드된 스트림에 할당된 리소스를 식별합니다.

Return_parameters

상태(18진수):

매개 변수 설명
0x00 명령이 성공했습니다.
0x01-0xFF 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.

Subcommand_opcode(18진수):

매개 변수 설명
0x09 HCI_VS_MSFT_Avdtp_Start 대한 하위 명령 opcode입니다.

HCI_VS_MSFT_Avdtp_Suspend

HCI_VS_MSFT_Avdtp_Start 시작된 스트리밍 활동을 중지합니다.

Command_parameters

Avdtp_offload_handle(8진수 2개):

매개 변수 설명
0xXXXX 오프로드된 스트림에 할당된 리소스를 식별합니다.

Return_parameters

상태(18진수):

매개 변수 설명
0x00 명령이 성공했습니다.
0x01-0xFF 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.

Subcommand_opcode(18진수):

매개 변수 설명
0x0A HCI_VS_MSFT_Avdtp_Suspend 대한 하위 명령 opcode입니다.

HCI_VS_MSFT_Avdtp_Close

HCI_VS_MSFT_Avdtp_Open 할당한 AVDTP 오프로드 리소스를 해제합니다.

Command_parameters

Avdtp_offload_handle(8진수 2개):

매개 변수 설명
0xXXXX 참고: 이 명령이 완료된 후에는 이 값이 더 이상 유효하지 않습니다.

Return_parameters

상태(18진수):

매개 변수 설명
0x00 명령이 성공했습니다.
0x01-0xFF 명령이 실패했습니다. 자세한 내용은 Bluetooth Core 사양의 오류 코드를 참조하세요.

Subcommand_opcode(18진수):

매개 변수 설명
0x0B HCI_VS_MSFT_Avdtp_Close 대한 하위 명령 opcode입니다.
매개 변수 설명
0x00
0x01 컨트롤러는 BD_ADDR 지정한 디바이스 및 Monitor_handle 모니터링하기 시작했습니다.

부록

이 섹션에는 Microsoft에서 정의한 Bluetooth HCI 확장 예제 및 다이어그램이 포함되어 있습니다.

예: HCI_VS_MSFT_LE_Monitor_Advertisement 대한 일치 패턴

이 예제에서는 수신된 HCI_VS_MSFT_LE_Monitor_Advertisement 명령과 명령 매개 변수에 대한 세 가지 광고 패킷의 평가를 보여 줍니다.

수신된 HCI_VS_MSFT_LE_Monitor_Advertisement 명령 컨트롤러 에서 HCI_VS_MSFT_LE_Monitor_Advertisement 명령을 수신하고 다음 매개 변수를 포함합니다.

매개 변수 주의
Subcommand_opcode 0x03 HCI_VS_MSFT_LE_Monitor_Advertisement 대한 하위 명령 opcode
RSSI_threshold_high 0x01 1dB
RSSI_threshold_low 0xCE -50dB
RSSI_threshold_low_time_interval 0x05 5초
RSSI_sampling_period 0xFF 샘플링 없음
Condition_type 0x01 조건
Condition 0x02 두 패턴을 일치시켜야 합니다.
0x03 AD 형식 및 시작 위치를 포함한 첫 번째 패턴의 길이
0x01 AD 형식
0x00 AD 형식 다음의 시작 위치
0x01 일치시킬 첫 번째 패턴
0x06 AD 형식 및 시작 위치를 포함한 두 번째 패턴의 길이
0xFF AD 형식(제조업체별 데이터)
0x00 AD 형식 다음의 시작 위치
0x00 일치시킬 두 번째 패턴
0x06
0xFF
0xFF

그런 다음 컨트롤러는 다음 광고 패킷을 받습니다.

  • 광고 패킷 [A]

    0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFF

  • 광고 패킷 [B]

    0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x04 0xFF 0x00 0x06 0xFF

  • 광고 패킷 [C]

    0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFF

  • 광고 패킷 [D]

    0x02 0x01 0x02 0x05 0xFF 0x00 0x06 0xFF 0x01

광고 패킷에 대한 일치 평가 [A]

설명
일치시킬 첫 번째 패턴의 AD 형식 0x01
일치시킬 첫 번째 패턴의 길이 0x03 - 0x02 = 0x01 바이트
AD 형식 0x01 대한 위치 0x00 일치시킬 패턴 0x01
AD 형식 0x01 대한 위치 0x00 바이트 0x01(MATCH!)
일치시킬 두 번째 패턴의 AD 형식 0xFF(제조업체별 데이터)
일치시킬 두 번째 패턴의 길이 0x06 - 0x02 = 0x04 바이트
AD 형식 0xFF 대한 위치 0x00 일치시킬 패턴 0x00 0x06 0xFF 0xFF
AD 형식 0xFF 대한 위치 0x00 바이트 0x00 0x06 0xFF 0xFF(MATCH!)

평결 : PASS (두 패턴이 모두 일치)

광고 패킷에 대한 일치 평가 [B]

설명
일치시킬 첫 번째 패턴의 AD 형식 0x01
일치시킬 첫 번째 패턴의 길이 0x03 - 0x02 = 0x01 바이트
AD 형식 0x01 대한 위치 0x00 일치시킬 패턴 0x01
AD 형식 0x01 대한 위치 0x00 바이트 0x01(MATCH!)
일치시킬 두 번째 패턴의 AD 형식 0xFF(제조업체별 데이터)
일치시킬 두 번째 패턴의 길이 0x06 - 0x02 = 0x04 바이트
AD 형식 0xFF 대한 위치 0x00 일치시킬 패턴 0x00 0x06 0xFF 0xFF
AD 형식 0xFF 대한 위치 0x00 바이트 0x00 0x06 0xFF(일치하지 않음)

평결: PASS (첫 번째 패턴 일치만)

광고 패킷에 대한 일치 평가 [C]

설명
일치시킬 첫 번째 패턴의 AD 형식 0x01
일치시킬 첫 번째 패턴의 길이 0x03 - 0x02 = 0x01 바이트
AD 형식 0x01 대한 위치 0x00 일치시킬 패턴 0x01
AD 형식 0x01 대한 위치 0x00 바이트 Undefined. 광고에는 AD 형식 0x01 있는 데이터가 없습니다.
일치시킬 두 번째 패턴의 AD 형식 0xFF(제조업체별 데이터)
일치시킬 두 번째 패턴의 길이 0x06 - 0x02 = 0x04 바이트
AD 형식 0xFF 대한 위치 0x00 일치시킬 패턴 0x00 0x06 0xFF 0xFF
AD 형식 0xFF 대한 위치 0x00 바이트 0x00 0x06 0xFF 0xFF(MATCH!)

평결 : PASS (두 번째 패턴 일치만)

광고 패킷에 대한 일치 평가 [D]

설명
일치시킬 첫 번째 패턴의 AD 형식 0x01
일치시킬 첫 번째 패턴의 길이 0x03 - 0x02 = 0x01 바이트
AD 형식 0x01 대한 위치 0x00 일치시킬 패턴 0x01
AD 형식 0x01 대한 위치 0x00 바이트 0x02(일치하지 않음)
일치시킬 두 번째 패턴의 AD 형식 0xFF(제조업체별 데이터)
일치시킬 두 번째 패턴의 길이 0x06 - 0x02 = 0x04 바이트
AD 형식 0xFF 대한 위치 0x00 일치시킬 패턴 0x00 0x06 0xFF 0xFF
AD 형식 0xFF 대한 위치 0x00 바이트 0x00 0x06 0xFF 0x01(일치하지 않음)

평결: FAIL (패턴이 일치하지 않음)

예: 광고 모니터링

이 예제에서는 RSSI 광고 모니터링을 보여 줍니다. 지정된 조건과 일치하는 수신된 광고에 대한 RSSI 값은 다음과 같습니다.

시간(초) RSSI(dB)
1 100-
2 -90
3 5-
4 -15
5 30-
6 -15
7 -45
8 -20
9 -35
10 -45
11 70-
12 -85
13 -85
14 -85
15 -90
16 -90
17 70-
매개 변수
RSSI_threshold_high -10dB
RSSI_threshold_low -80dB
RSSI_threshold_low_time_interval 3초
RSSI_sampling_period 2초

시간에 따른 RSSI 값으로 광고 모니터링을 보여 주는 그래프입니다.

광고 RSSI는 시간 3에서 RSSI_threshold_high보다 큽니다. 샘플링을 위한 주기적 타이머는 3시에 시작됩니다. 2초마다 주기적 타이머가 만료되고 수신된 광고의 평균 RSSI 값이 스택으로 전파됩니다.

주기적 타이머가 5시에 만료되면 이 시간(-23dB) 동안 수신된 광고 RSSI의 평균이 스택으로 전파됩니다.

정기적인 타이머가 13시에 만료되면 이 기간 동안 수신된 광고 RSSI의 평균이 RSSI_threshold_low(-80dB) 미만입니다. 광고 RSSI(-85dB)의 평균을 호스트에 전파해야 합니다.

RSSI_threshold_low_time_interval 즉시 만료되면 RSSI가 -85dB인 호스트에 광고가 전파됩니다. 이 예제에서는 호스트에 더 이상 보급 알림이 전송되지 않습니다.

예: 디바이스에서 BAP 알림 모니터링

CAP 수락자와 결합되었지만 연결되지 않은 동안 호스트는 해당 디바이스에서 BAP 알림을 모니터링할 수 있습니다.

매개 변수
Subcommand_opcode_v2 0x0F
RSSI_threshold_high -127
RSSI_threshold_low -127
RSSI_threshold_low_time_interval 0x05
RSSI_sampling_period 0x00
Monitor_options 비트 0 집합; 디바이스가 IRK를 배포한 경우 비트 1 설정
Advertisement_report_filtering_options 비트 0, 1 및 2 집합
Peer_device_address <address>
Peer_device_address_type <주소 유형>
Peer_device_IRK <IRK( 비트 1이 설정된 경우)>
Condition_type 0x01
Number_of_patterns 0x01
Pattern_data 0x04(길이)
0x16(서비스 데이터 – 16비트 UUID)
0x00(시작 바이트)
0x4E(ASCS UUID의 낮은 바이트)
0x18(ASCS UUID의 높은 바이트)

예: 디바이스에서 CAP 알림 모니터링

CAP 사령관과 결합되었지만 연결되지 않은 상태에서 호스트는 해당 디바이스에서 CAP 알림을 모니터링할 수 있습니다.

매개 변수
Subcommand_opcode_v2 0x0F
RSSI_threshold_high -127
RSSI_threshold_low -127
RSSI_threshold_low_time_interval 0x05
RSSI_sampling_period 0x00
Monitor_options 비트 0 집합; 디바이스가 IRK를 배포한 경우 비트 1 설정
Advertisement_report_filtering_options 비트 0, 1 및 2 집합
Peer_device_address <address>
Peer_device_address_type <주소 유형>
Peer_device_IRK <IRK( 비트 1이 설정된 경우)>
Condition_type 0x01
Number_of_patterns 0x01
Pattern_data 0x04(길이)
0x16(서비스 데이터 – 16비트 UUID)
0x00(시작 바이트)
0x53(CAS UUID의 낮은 바이트)
0x18(CAS UUID의 높은 바이트)

순서도: 광고 및 필터 허용 목록 필터링

이 순서도는 광고를 받을 때 광고 필터링 및 필터 허용 목록 필터링의 예제 컨트롤러 구현을 제공합니다.

호스트가 순서도에 지정된 대로 보급 알림 또는 HCI_VS_MSFT_LE_Monitor_Device_Event 알림을 받는 한 컨트롤러는 이 논리를 다르게 구현할 수 있습니다.

Microsoft HCI 확장 필터링 프로세스를 보여 주는 순서도입니다.

시퀀스 다이어그램: 광고와 연결된 검색 응답 전파

시퀀스 다이어그램: 광고와 연결된 검색 응답 전파

이 시퀀스 다이어그램은 활성 검색을 사용할 때 광고 필터를 충족하는 광고와 연결된 전파 검색 응답을 보여 줍니다. 이 다이어그램은 컨트롤러와 호스트 간의 예상 이벤트 시퀀스만 보여 줍니다. 컨트롤러와 특정 디바이스 간의 이벤트는 표시되지 않습니다. 광고 필터를 충족하는 광고 A와 광고 필터를 충족하지 않는 광고 B가 있다고 가정합니다.

광고와 연결된 HCI 전파 검사 응답을 보여 주는 시퀀스 다이어그램