IOS Bluetooth dual-mode; podłącz BLE (GATT) do już podłączonego stereofonicznego zestawu słuchawkowego br/EDR (A2DP/HFP) jednocześnie

Opracowuję Stereofoniczny Zestaw Słuchawkowy Z Bluetooth przy użyciu klasycznych profili (HFP, A2DP, AVRCP), jak można by się spodziewać Ina stereofoniczny zestaw słuchawkowy. Jednak chcę wdrożyć aplikację do zdalnego sterowania na iOS i używać jej jednocześnie z innymi klasycznymi łączami, ale Chipset Dual-mode, z którym pracuję w moim projekcie, nie zachowuje się tak, jak bym się spodziewał; {]}

Zestaw słuchawkowy jest skonfigurowany jako urządzenie peryferyjne, dzięki czemu urządzenie z systemem iOS działa jako centralne. Jako takie, peryferyjne reklamują swoje usługi BLE (z moim specyficznym 128-bitowe UUIDs) i wszystko jest dobre. Mogę przeglądać Peryferia z dowolnego centralnego, ale tylko wtedy, gdy nie jestem połączony z klasycznymi profilami (np. nie strumieniując dźwięku).

Moje urządzenie nie wydaje się być w stanie reklamować BLE, podczas połączenia z HFP i / lub A2DP! Widziałem jednak dema tego samego chipsetu działającego jako BLE central, skanującego i łączącego się z innymi urządzeniami peryferyjnymi BLE, jednocześnie przesyłając strumieniowo dźwięk przez A2DP. Jednak w tej konfiguracji urządzenie pełniło rolę zlewu A2DP podłączony do iPhone ' a, podczas skanowania/łączenia przez BLE do trzeciej jednostki działającej jako Peryferia BLE. Dlatego nie punkt-punkt z klasycznym i inteligentnym Bluetooth do tego samego urządzenia.

Czy istnieje ograniczenie podwójnego trybu, że nie można działać jako urządzenie peryferyjne podczas obsługi / łączenia się z profilami Bluetooth Classic? I że tylko tryb Centralny jest obsługiwany w tym przypadku?

Dla twojej wiadomości, używam chipsetu CSR 8670.

UPDATE

Dodano nową odpowiedź. Przepraszam, że nie clarifying/cleaning - up moja poprzednia odpowiedź do tej pory-czas leci!

Author: Markus Millfjord, 2014-04-14

3 answers

Cóż, po zagłębieniu się w specyfikację i próbując zrozumieć rzeczy jaśniej, znalazłem odpowiedzi, których szukałem, chociaż wolałbym bardziej optymistyczne odpowiedzi... ;(

Niemniej jednak, przejdźmy do tego; spec Bluetooth dla 4.0 (BLE) tak mówi;

Gadżety dwufunkcyjne nie mogą działać jako BLE i reklamować swoich obecność, a jednocześnie możliwość połączenia w" klasycznym " Bluetooth za pomocą BR / EDR.

Ponadto CSR przykłady kodu źródłowego dla chipsetu CSR8670 dual-mode używam wszystkich w tym samym say; BLE jako Peryferia są wyłączone, gdy podłączony jest dowolny klasyczny BT-link. Zamiast tego, kod źródłowy CSR Promuje, że urządzenie powinno działać jako centralny BLE, pozwalając innym jednostkom peryferyjnym BLE reklamować się i łączyć z nim, wszystko w pełni wykonalne podczas przesyłania strumieniowego dźwięku (działając jako zlewka A2DP).

To w ogóle nie pasuje do mojej konfiguracji od;

  1. BLE Centrale zużywają więcej moc niż urządzenia peryferyjne BLE, a moje urządzenie musi oszczędzać energię
  2. dual-mode "combo" - problem z połączeniem urządzenia BR / EDR z funkcjami peryferyjnymi BLE właśnie przeniósł się do telefonu, co nie będzie działać lepiej, ponieważ nie możemy oczekiwać, że Apple (lub ktokolwiek inny) naruszy specyfikację BLE.

Zamiast tego zaleca się, aby mój zestaw słuchawkowy stereo całkowicie pominął BLE i zamiast tego użył GATT nad BR / EDR, znanego również jako reklama poprzez "vanilla", co ma sens naprawdę; chodzi mi o to, że mam już konfigurację ACL-link między dwoma urządzeniami, po co miałbym kopać jakiś mechanizm discovery ?

Znowu przydaje się Bluetooth SIG;

Https://developer.bluetooth.org/TechnologyOverview/Pages/GATT.aspx

GATT i ATT nie są specyficzne dla transportu i mogą być stosowane zarówno w BR / EDR i LE. Jednak GATT i ATT są obowiązkowe do wdrożenia w LE, ponieważ służy do odkrywania usługi

Tak, SIG mówi " tak " do korzystania z BR / EDR jako transportu dla GATT, ale pytanie, a następnie staje się; jak Mogę następnie uzyskać dostęp do że podłączone urządzenie BR / EDR z poziomu mojej aplikacji iOS, gdzie typowym scenariuszem jest użycie CBCentral do skanowania, odkryć i połączyć się z CBPeripheral? Odpowiedź jest prosta; nie można, ponieważ iOS 7.0 Nie (jeszcze?) wsparcie GATT dla BR / EDR;

Https://www.bluetooth.org/tpg/showDeclaration.cfm?3A000A5A005C5344535D5414403B0C0D0E2405022413010E57503F202A5A72

Tak więc, podsumowując; jeśli chcesz mieć konfigurację peer-to-peer między dwoma podwójnymi urządzeniami Bluetooth, używając zarówno klasycznych profili Bluetooth, jak i inteligentnych usług/cech Bluetooth, powinieneś użyć GATT nad br / EDR, co nie jest dla urządzeń Apple, ale może być obsługiwane przez Androida (Nie wiem, będzie portować aplikację na Androida w końcu chociaż, ale niezależnie od tego, że nie jest to nic wielkiego dla Androida, ponieważ najgorszy przypadek będzie oznaczać odwrót do SPP i prosty protokół bajtowy do wykonania pracy, którą muszę wykonać).

To jest to. Mam nadzieję, że komuś pomogłem ;) / Markus

 11
Author: Markus Millfjord,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-14 13:43:38

Uczysz się tak długo, jak żyjesz, jak sądzę, a odpowiedź na to pytanie nie jest taka, że nie jest wspierana, co twierdziłem wcześniej(na podstawie tego, co myślałem, że wiem).

Krótka i czysta odpowiedź na rozwój dwóch trybów i zestawów słuchawkowych na chipsetach CSR jest po prostu taka, że było to ograniczenie w stosie CSR bluetooth na wcześniejszych zestawach SDK.

Bluetooth SIG nigdy nie obsługiwał trybu dual-mode działającego jako urządzenie peryferyjne, podczas gdy jest podłączony przez Klasyczne łącza do tego samego urządzenia. Wręcz przeciwnie, to wyraźnie spec. jak taka interoperacyjność powinna być przeprowadzona -- ale to nie zawsze oznacza, że wszystkie implementacje BT-stack są zdolne do takiej funkcjonalności.

Stąd; Korzystanie z najnowszych narzędzi devtools i najnowszych firmwares Bluetooth / stacks z CSR rozwiązało wszystkie problemy i tryb podwójny jest teraz w pełni, a właściwie całkiem ładnie Mogę dodać, obsługiwany na chipsetach CSR8670 / 75.

 5
Author: Markus Millfjord,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-28 11:08:02

Używam również urządzenia CSR8670. Działa. Zarówno BLE, jak i audio.

Musisz używać ADK 4.0.0 by CSR.

Bluetooth 4.1 i Bluetooth 4.0 są różne. Za to, co powiedziałeś o Bluetooth 4.0 jest poprawne, ale twój układ może zrobić Bluetooth 4.1.

4.1 umożliwia takie połączenia.

Dodałem również flagi "Dual mode" do pakietu reklamowego.

Istnieje kilka warunków, takich jak interwał połączenia wynoszący co najmniej 90 milisekund wysoce zalecane, aby nie zadzierać z dźwiękiem.

Powodzenia!

 4
Author: Paul Rolfe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-16 04:44:12