2016-06-01 2 views
0

저는 안드로이드 장치가 중앙 (클라이언트)이고 피어 장치가 주변 장치 (서버) 인 여러 안드로이드 장치에서 Bluetooth 스눕 파일을 분석했습니다.BLE HCI_EVT가 연결 간격의 패킷 슬롯을 차지합니까?

WC에서 보낸 패킷 외에도 쓰기 명령 (WC) (Android에서 주변 기기로 데이터 전송)을 수행 할 때 wireshark는 Number of Completed Packets이라는 레이블이 붙은 HCI 이벤트를 식별합니다.

동일한 장치의 호스트와 컨트롤러간에 HCI 메시지가 교환되므로 이러한 이벤트는 연결 간격 (CI)의 패킷 슬롯을 차지합니까? 왜냐하면 Notifications를 사용하여 CI/CI 패킷 3 개를 보낼 수 있지만 Write Command를 사용할 때 오직 1 패킷/CI 만 전송되기 때문입니다.

답변

0

단일 연결 이벤트에서 여러 개의 Write Without Response 패킷 (ATT 계층에 쓰기 명령이라고 함)을 보낼 수 있습니다. 블루투스 컨트롤러에는 나가는 패킷을 대기열에 넣는 버퍼 (ACL 데이터 패킷이라고 함)가 있습니다. 스누프 로그에서 LE 읽기 버퍼 크기를 찾아이 큐의 크기를 볼 수 있습니다. 블루투스가 시작되면 호스트는이 값을 읽음으로써 일부 카운터 변수에서 현재 사용 가능한 공간을 추적합니다. 장치에 패킷 (예 : 쓰기 명령)을 보내면 카운터가 1 씩 감소합니다. 호스트가 완료된 패킷 수 이벤트 (즉, 패킷이 무선으로 전송되었음을 의미)를 받으면 카운터가 증가합니다. 응답없이 쓰기를 실행 한 후에이 카운터가 양수로 유지되는 한 GATT onCharacteristicWrite 콜백이 호출되어 응답없는 Write Write 패킷을 즉시 대기열에 추가 할 수 있습니다. 다음 연결 이벤트가 발생하면 대기열에 들어있는 여러 개의 패킷을 보냅니다.

연결 이벤트 당 하나의 패킷보다 높은 처리량을 달성 할 수없는 경우 WRITE_TYPE_NO_RESPONSE를 사용하도록 특성을 설정했는지 확인하십시오.

관련 문제