2014-12-04 6 views
3

bluez DBus API를 사용하여 블루투스 LE 장치를 검색하려고합니다.dbus API를 통해 블루투스 LE 장치를 검색하는 방법은 무엇입니까?

--enable-experimental 

configure 옵션을 사용하여 bluez-5.25를 설치했습니다. 내가 컴파일 된 지원 빌드를 볼 수 있습니다. 등 심장 박동, 온도계 등의 인터페이스 것은 DBUS에 표시가 아니라

org.bluez.ProximityMonitor1 

인터페이스를 제공합니다. 필자가 아는 한 거리에 대한 정보가있는 블루투스 LE 장치를 영구적으로 스캔하려면이 인터페이스가 필요할 것입니다. 그러나 나는 단지 bluez를 다루기 시작 했으므로 확실하지 않습니다.

DBus API에서 필요한 모든 것이 있습니까? 그리고 LE 디바이스를 영구적으로 스캔하기 위해 필요한 것은 무엇입니까?

답변

3

org.bluez.Device1 프록시 객체의 DBUS 작성에 등록해야합니다. 그런 다음 org.bluez.Adapter1 인터페이스를 사용하여 StartDiscovery를 사용할 수 있습니다. 이렇게하면 Classic 및 LE 장치를 모두 검색합니다. 장치가 감지되면 Device1 개체가 생성되고 등록 된 콜백이 호출됩니다.

+0

나는 지금 그렇게하고있다. 내가 장치를보기 위해 적극적으로 스캔 할 필요가있는 것 같습니다. 수동 검사는 dbus 메시지를 내 보내지 않습니다. LE 장치를 추적하려고합니다. InterfacesAdded는 최초 발견시에만 방출됩니다. 기기가 아직 가까이 있는지 알고 싶다면 구현 방법은 무엇입니까? 근접성을 사용할 수 있다고 생각했지만 거기에 있지 않습니다. bluez이 작동하지 않거나 장치가 프로필을 지원하지 않는지 여부를 모릅니다. –

+0

근접 모니터 프로필이 검색과 다릅니다. 해당 프로필 (또는 모든 프로필)을 사용하기 전에 스캔해야합니다. 검색 중 = 주변 기기 검색 (BT 주소 및 서비스를 받기). Proximity Monitor = 발견 후 원격 장치가 지원하는 경우 해당 서비스를 사용하여 rssi 값을 읽거나 선택적으로 근접성을 기반으로 경고합니다. – kaylum

+0

나는 아주 명확하지 않았다. 나는 장치를 스캔 한 다음 발견 된 각각을 검사했다. 나는 ProximityMonitor Interface를 제공하는 장치를 찾을 것으로 기대했을 것이다. 그러나 나는 어디에도 그것을 보지 못했다. bluez가 --enable-experimental으로 컴파일되었고 -e로 데몬을 시작했습니다. 그러나 인터페이스가 인터페이스를 발표하고 내 비컨이 지원하지 않는 경우에만 인터페이스를 볼 수 있는지 잘 모르겠습니다. –