Поделиться через


Bluetooth HFP обход потоковой передачи звука

В этой статье описывается операция и теория обхода аудиопотока bluetooth громкой связи (HFP).

В режиме обхода путь управления звуком Bluetooth проходит через аппаратное подключение, отличное от интерфейса хост-контроллера (HCI), например I2S, к контроллеру Bluetooth. Это другое аппаратное подключение часто является I2S, но может быть любым интерфейсом, определенным контроллером узла Bluetooth. Это подключение называется подключением "обхода" или "боковой полосы".

В то время как аудиовыпуск выполняется через обходное подключение, аудиопоток, ориентированный на воздушное синхронное подключение (SCO) по-прежнему управляется через HCI. Windows 8 предоставляет драйвер профиля Hands-Free Bluetooth (HFP), упрощающий управление подключением SCO и другими аспектами профиля Hands-Free. Однако пользовательский аудиодрайвывод управляет вводом-выводом аудиоданных между Windows и подключением обхода.

Драйвер HFP и пользовательский драйвер управления для звуковых данных ввода-вывода имеют отдельные роли, требующие эффективного взаимодействия между ними. Это взаимодействие обрабатывается набором ioCTL, передаваемых из пользовательского аудиодрайвера в драйвер Windows HFP.

Как правило, обходное подключение существует всегда. Служба Plug and Play (PnP) перечисляет оборудование, включающее это подключение, и загружает необходимый аудиодрайвер. Однако в аудиосистеме могут быть связаны гарнитуры HFP, а подключение обхода полезно только в том случае, если сопряжена хотя бы одна гарнитура HFP.

Для каждого парного устройства HFP драйвер Windows HFP регистрирует и включает интерфейс устройства в классе интерфейса GUID_DEVINTERFACE_BLUETOOTH_HFP_SCO_HCIBYPASS. К устройствам HFP применяются следующие условия:

  • Когда Windows активирует драйвер HFP (обычно во время загрузки), драйвер HFP регистрирует и включает интерфейс для каждого сопряженного устройства HFP.
  • Когда устройство HFP впервые связано с уже запущенной Windows, драйвер HFP регистрирует и включает интерфейс для устройства.
  • При наличии n парных устройств HFP драйвер HFP для Windows регистрирует n экземпляров интерфейса устройства.
  • При удалении сопряженного устройства HFP драйвер Windows HFP отключает интерфейс устройства.
  • Когда Windows останавливает драйвер HFP (обычно во время завершения работы или перезагрузки), драйвер HFP отключает интерфейс для каждого сопряженного устройства HFP.
  • Аудиодрайвер должен обрабатывать несколько операций поступления и удаления интерфейсов в любое время, а не только во время запуска или завершения работы.

Управление ресурсами I2S и SCO

В этом разделе рассматриваются допущения, сделанные при разработке поддержки обхода аудиопотока Bluetooth.

В настоящее время в Windows предполагается, что имеется только один контроллер узла Bluetooth. Кроме того, при поддержке обхода, ориентированного на синхронное подключение (SCO) профиля Hands-Free (HFP), предполагается, что существует только одно подключение обхода, и любой канал, открытый через интерфейс драйвера устройства HFP, связан с этим одним подключением.

Аудиодрайверы должны разрешать этот канал и однократное подключение обхода для одного потребителя в порядке очереди. Самый простой способ добиться этого заключается в том, чтобы драйвер разрешил только одному фильтру переводить свои контакты в состояние ACQUIRE.

См. также раздел

В следующих разделах содержатся дополнительные сведения о жизненном цикле подключения и некоторых функциях проектирования устройства HFP и его аудиодрайвера.