근처의 블루투스 저에너지 기기를 검색하는 Android 앱 (맞춤)을 실행 중입니다. 일부 기기가 사양 규정보다 더 오래 광고 한 패킷을 발견했습니다. 스캔 기기는 Android 6.0을 실행하는 Nexus 5입니다. 내가최대 사양보다 긴 블루투스 광고 패킷 수신
내가 ScanRecord의 바이트 배열 실제로 (맥 주소가 포함되지 않음) 광고 데이터 구성되어 있음을 알 바이트 배열 및 스캔 응답을 얻을 수있는 ScanResult 객체 result.getScanRecord().getBytes();
에 다음과 같은 라인을 사용하고
, 그래서 배열에서 총 62 바이트에 대해 각각 31 바이트를 기대합니다. 이것은 수신 한 전체 배열의 크기이지만 광고 된 데이터가 배열의 응답 부분에 표시되는 것처럼 보입니다. 형식은 GAP의 첫 번째 바이트가 길이이고 다음 바이트가 GAP 유형이며 다음 길이 -1 바이트가 데이터 인 사양을 따릅니다.
그러나이 형식에서는 해당 장치가 응답 부분으로 확장되는 데이터 필드를 갖습니다. 다음은 16 진수로 배열의 예는 다른 행에 각 GAP와 함께,이다 :
02 01 06 (flags)
0D FF DF 00 57 30 46 30 30 33 43 45 56 5A (manufacturer specific data)
11 07 6D 69 73 66 69 74 A6 34 4A 7D 7F 95 01(<-expected end of advertise) 00 DA 3D (UUID, 128-bit)
07 09 46 6F 73 73 69 6C (device name)
03 03 12 18 (UUID, 16-bit)
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (leftover bytes)
정말 스캔 응답 데이터에 대한 상관 없어,하지만 난 BLE 장치가 광고 패킷을 보낼 수있는 방법에 관한 혼란 스러워요 4.2 사양의 경우 31 바이트보다 큽니다 (블루투스 5는 더 큰 패킷을 허용하지만 제조업체는 4.2를 사용한다고 말합니다). 장치의 이름이 표시되어야하지만 응답 부분에 표시 될 수도 있습니다.
여기 왜 그런지 알 수 있습니까? 감사.
내가 어디 있는지 알 수 있지만 응답의 첫 번째 부분에 실제로 존재하지 않는 GAP 유형이 있고 다음 GAP의 길이가 광고 된 최대 크기보다 훨씬 높습니다. 패킷. HCI 로그가 스캔 장치에 있어야합니다. 맞습니까? 아마 저것 좀 봐야 겠어. – ShrimpDaddy2k