IOS Bluetooth в двух режимах; подключите BLE (GATT) к уже подключенной стереогарнитуре BR/EDR (A2DP/HFP) одновременно

Я разрабатываю стереогарнитуру с Bluetooth, используя классические профили (HFP, A2DP, AVRCP), как можно было бы ожидать стереогарнитуру Ina. Однако я хочу развернуть приложение для удаленного управления для iOS и использовать его одновременно с другими классическими ссылками, но двухрежимный чипсет, с которым я работаю в своем дизайне, не ведет себя так, как я ожидал;

Гарнитура настроена как периферийная, позволяя устройству iOS действовать как центральное. Таким образом, периферийное устройство рекламирует свои службы BLE (с моими конкретными 128-битными UUID), и все это хорошо. Я могу просматривать периферию из любого центра, но только тогда, когда я не связан с классическими профилями (например, пока не потоковое аудио).

Мое устройство, похоже, не может рекламировать BLE, при подключении к HFP и/или A2DP! Тем не менее, я видел демонстрации того же чипсета, который действует как центральный BLE, сканирует и подключается к другим периферийным устройствам BLE, одновременно передавая аудио через A2DP. Однако в этой настройке устройство действовало как приемник A2DP, подключенный к iPhone, при сканировании/подключении через BLE к третьему устройству, действующему как периферийное устройство BLE. Следовательно, это не точка-точка с классическим и интеллектуальным Bluetooth на одно и то же устройство.

Существует ли двухрежимное ограничение, что нельзя действовать как периферийное, поддерживая/подключая профили Bluetooth Classic? И в этом случае поддерживается только центральный режим?

FYI, я использую чипсет CSR 8670.

UPDATE

Добавлен новый ответ. Мои извинения за то, что я не уточнил/не очистил свой предыдущий ответ до сих пор - время летит!

Ответ 1

Вы учитесь, пока живете, я полагаю, и этот вопрос ответ НЕ, что он не поддерживается, о котором я говорил ранее (на основе того, что, как я думал, я знал).

Краткий и чистый ответ на двухрежимную и минигарнитуру на CSR-чипсетах просто заключается в том, что это было ограничение в стеке Bluetooth CSR на более ранних SDK.

Bluetooth SIG никогда не поддерживал двухрежимный режим как периферийный, будучи подключенным через классические ссылки на одно и то же устройство. Напротив, это явно спецификация. как такая интероперабельность должна выполняться, но это не всегда означает, что все реализации BT-стека там могут иметь такую ​​функциональность.

Следовательно; Использование новейших devtools и новейших прошивок Bluetooth/стеков от CSR позволило решить все проблемы, и двухрежимный режим теперь полностью, и на самом деле довольно красиво я могу добавить, поддерживаемый на чипсетах CSR8670/75.

Ответ 2

Хорошо, после того, как я перейду в спецификации и попытаюсь понять вещи более четко, я нашел ответы, которые я искал, хотя я предпочел бы более оптимистичные ответы...; (

Тем не менее, пусть дойдет до него; спецификация Bluetooth для 4.0 (BLE) говорит, что:

Двухрежимные гаджеты не могут выступать в качестве периферийного устройства BLE и рекламировать его наличие при одновременном подключении в "классическом" Bluetooth, используя BR/EDR.

Кроме того, примеры исходного кода CSR для двухрежимного набора микросхем CSR8670, которые я использую, ведут себя одинаково; Рекламные объявления BLE как периферийные устройства отключены, когда подключен какой-либо классический BT-link. Вместо этого исходный код CSR способствует тому, что устройство должно действовать как центральный BLE вместо этого, позволяя другим периферийным устройствам BLE рекламировать и подключаться к нему, все это полностью выполнимо при потоковой передаче звука (действует как приемник A2DP).

Это не включает мою установку вообще, поскольку

  • Центры BLE потребляют больше энергии, чем периферийные устройства BLE, и моему устройству необходимо экономить энергию.
  • Двухрежимная комбо-проблема объединения BR/EDR-устройства с периферийными функциями BLE просто переместилась на телефон вместо этого, что не будет работать лучше, поскольку мы не можем ожидать, что Apple (или кто-либо другой) нарушит Спецификация BLE.

Вместо этого рекомендуется, чтобы моя стереогарнитура полностью пропускала BLE и вместо этого использовала GATT над BR/EDR, также известную как реклама через "vanilla", что действительно имеет смысл; Я имею в виду, у меня уже есть настройка ACL-link между двумя устройствами, почему мне нужно использовать какой-либо механизм обнаружения?

Опять же, Bluetooth SIG пригодится,

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

GATT и ATT не являются специфичными для транспорта и могут использоваться как в BR/EDR и LE. Однако GATT и ATT обязательны для реализации в LE, поскольку он используется для обнаружения служб

Итак, SIG говорит "да" использовать BR/EDR в качестве транспорта для GATT, но вместо этого возникает вопрос; как я могу получить доступ к этому подключенному устройству BR/EDR из моего iOS-приложения, где типичным сценарием является использование CBCentral для сканирования, обнаружения и подключения к CBPeripheral? Ответ прост; вы не можете, так как iOS 7.0 не поддерживает (пока?) поддержку GATT для BR/EDR;

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

Итак, чтобы подвести итог; если вы хотите установить одноранговую связь между двумя двухрежимными Bluetooth-устройствами, используя ОБЩИЕ профили Bluetooth Classic и функции/характеристики Bluetooth Smart, вы должны использовать GATT над BR/EDR, что не подходит для Apple-устройств, но может быть поддержана Android (не знаю, в конце концов, будет приложение для порта Android, но, несмотря на это, для Android это не очень важно, поскольку в худшем случае будет подразумеваться отказ от SPP и простой байтовый протокол для выполнения работы что мне нужно сделать).

Что это. Надеюсь, что я помог кому-то;) /Маркус

Ответ 3

Я также использую устройство CSR8670. Он работает. И периферийное устройство BLE, и аудио.

Вы должны использовать ADK 4.0.0 для CSR.

Bluetooth 4.1 и Bluetooth 4.0 отличаются. Для того, что вы сказали о Bluetooth 4.0, правильно, но ваш чип может выполнять Bluetooth 4.1.

4.1 допускает такие соединения.

Я также добавил флаги "Двойной режим" в рекламный пакет.

Существует несколько условий, таких как интервал соединения, по крайней мере, 90 миллисекунд, который рекомендуется, поэтому вы не испортите звук.

Удачи!