2012-07-05 14 views
7
  • Próbujemy wykryć zdarzenie w C/C++.
  • Używamy Bluez w systemie Linux jako naszej Bibliotece Bluetooth.
  • Naszym celem jest uruchomienie zewnętrznego skryptu po uruchomieniu tego zdarzenia.
  • W szczególności mamy zestaw słuchawkowy Motorola H730 z przyciskiem na nim i chcemy wykryć naciśnięcie tego przycisku.
  • Połączyliśmy urządzenie bluetooth (hcitool) i możemy się z nim połączyć (bluez-test-audio), ale byłby zainteresowany migracją tego podejścia do C/C++.
  • Wyjście hcidump, kiedy urządzenie jest podłączone i przycisk jest wciśnięty jest:Bluetooth: Wykryj zdarzenie za pomocą usługi Bluez

    HCI snifferem - analizator pakietów Bluetooth w wersji 2.2
    urządzenia: hci0 snap_len: 1028 filtr 0xFFFFFFFF

    HCI Zdarzenie: Zmiana trybu (0x14) plen 6
    Stan 0x00 uchwyt 21 tryb 0x00 przerwa 0
    Tryb: Aktywny
    Dane ACL: uchwyt 21 flag 0x02 dlen 17
    L2CAP (d): CID 0x0041 Len 13 [PSM 0]
    < danych ACL: uchwyt 21 flagi 0x00 dlen 14
    L2CAP (d): CID 0x0047 Len 10 [PSM 0]
    < danych ACL: uchwyt 21 flagi 0x00 dlen 22
    L2CAP (d): cid 0x0047 len 18 [Psm 0] dane
    < ACL: uchwyt 21 flagi 0x00 dlen 22
    L2CAP (d): cid 0x0047 len 18 [Psm 0]
    HCI zdarzenia : Liczba zakończonych pakietów (0x13) plen 5
    uchwyt 21 pakietów 1
    Dane 10 ACL: uchwyt 21 flagi 0x02 dlen 18
    L2CAP (d): CID 0x0041 Len 14 [PSM 0]
    < danych ACL: uchwyt 21 flagi 0x00 dlen 14
    L2CAP (d): CID 0x0047 Len 10 [PSM 0]
    HCI zdarzenia: liczba ukończonych pakietów (0x13) plen 5
    uchwytu 21 paczki 1
    HCI zdarzenia: liczba ukończonych pakietów (0x13) plEn 5
    uchwytu 21 paczki 1
    HCI zdarzenia: liczba ukończonych Pakiety (0x13) plen 5
    uchwyt 21 pakietów 1
    HCI zdarzenia: Zmiana trybu (0x14) plen 6
    stan 0x00 obsługiwać trybu 21 przerwy między 0x02 2048
    Mode: Sniff

  • Szukaliśmy dla dokumentacji bluetooth i nie miał wiele sukcesów.
    Jak możemy wykryć zdarzenie bluetooth w C/C++ za pomocą Bluez?
+0

Czy odniosłeś jakiś sukces? – Schrieveslaach

Odpowiedz

1

zrobiłem coś podobnego w ubiegłym roku. Podejście, na które się zdecydowałem, polegało na użyciu libdbus-c++ do generowania obiektów/klas proxy w języku C++ w celu komunikowania się z bluez przez dbus.

  • Określa interfejsy bluetooth wprowadzone przez zestaw słuchawkowy. Użyłem d-feet i zbadałem urządzenie, kiedy było podłączone. Możesz ręcznie sterować i odczytać stan z zestawu słuchawkowego, co przydało się do debugowania.
  • Generowanie, wyszukiwanie lub tworzenie opisów wymaganych przez dbus xml. Zrobiłem to ręcznie, tłumacząc specyfikację api z bluez api documentation na xml, ale uważam, że można również utworzyć je za pomocą introspekcji dbus.
  • Zastosowanie dbusxx-xml2cpp wygenerować proxy obiektów
  • Ustal zwrotnego, która jest wywoływana, gdy przycisk jest wciśnięty
  • Zintegruj proxy obiektów w kodzie wymagane

Musisz połączyć swój kod do libdbus- C++ i zainstaluj go również na celu.

Możesz użyć wygenerowanych obiektów proxy, aby uzyskać dostęp do całej funkcjonalności zestawu słuchawkowego, może się przydać o wiele więcej niż naciśnięcie przycisku!

Powiązane problemy