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. Следовательно, не точка-точка с классическим и Smart Bluetooth на одно и то же устройство.

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

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

ОБНОВИТЬ

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

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

    Тем не менее, давайте займемся этим; спецификация Bluetooth для 4.0 (BLE) говорит об этом;

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

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

    С тех пор это не связано с моей настройкой;

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

    Вместо этого рекомендуемый подход позволяет моей стереогарнитуре полностью пропускать BLE и вместо этого использовать GATT над BR / EDR, также известную как реклама через «ваниль», что действительно имеет смысл; Я имею в виду, у меня уже есть настройка 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 и простой байтовый протокол для выполнения работы что мне нужно сделать).

    Ничего не поделаешь. Надеюсь, что я помог кому-то;) / Markus

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

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

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

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

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

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

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

    4.1 позволяет такие соединения.

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

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

    Удачи!

    Interesting Posts

    работать вокруг для ошибки диктовки / пользовательского текстового изображения

    ALAssetsGroup становится недействительной

    NSArray многих NSDictionary. Каков наилучший способ найти NSDictionary с необходимым значением для данного ключа?

    Получить имя пользователя WPA2 Enterprise в iOS

    PDF в UIWebView не показывает цифровую подпись

    Динамическая высота UITableViewCell с переменным количеством подзонов с автозапуском

    Отклики вызовов делегатов Push Notification не вызываются

    Могу ли я открыть файл .mht или .mhtml в Uiwebview of Ios

    Как сделать приложение, разработанное на IOS 5 совместимым с IOS 6

    База данных Firebase сохраняет данные после утверждения

    Правильный подход для реализации вертикальной прокрутки с помощью UIScrollView

    Где наблюдатели уведомлений вписываются в шаблон VIPER?

    Строка состояния iPhone6, показывающая увеличенное приложение, но не на главном экране

    Что такое awakeFromNib?

    Можно ли протестировать приложение с помощью Bluetooth в iOS Simulator?

    Давайте будем гением компьютера.