[pulseaudio-discuss] [RFCv2 00/17] Add support for Bluetooth HFP HF implemented in oFono

jprvita at gmail.com jprvita at gmail.com
Mon Apr 15 14:53:15 PDT 2013

From: João Paulo Rechi Vita <jprvita at openbossa.org>

The Hansfree Unit (HF) role of the Bluetooth Handsfree Profile (HFP) is used
when we want to work as a Hands-free unit to control audio calls performed by
an Audio Gateway (AG), usually a cellular phone.

After the release of BlueZ 5, which added support for external profiles, the
HFP implementation has been moved out of BlueZ and implemented in oFono. A new
D-Bus API has been defined to enable the IPC between oFono's Handsfree Audio
Manager, which takes care of the Bluetooth HFP modems, and a Handsfree Audio
Agent, which in our particular case is PulseAudio.

This series implements support for the HF role of HFP version 1.6. One of the
new features on version 1.6 is wideband speech, with delivers higher audio
quality when compared to non-wideband-speech streams.

This series makes use of Mikel Astiz' work to add BlueZ 5 support to the
bluetooth modules. It has been based on top of Mikel's work rebased on top of
the 'next' branch.

The last two commits of the series add support for the mSBC CODEC, which is
what is needed for wideband speech support. The series is funcional without
them, just the wideband speech support will be disabled (it's an optional
feature in the HFP 1.6 spec).

Changes from the previous series are:

 - Create one card profile per UUID, as it is now upstream;
 - Do not create a new card profile 'hfp_ag';
 - Handle SCO sockets with deferred setup;
 - Handle mSBC-encoded streams, adding support for wideband speech.

João Paulo Rechi Vita (17):
  bluetooth: Track org.ofono service
  bluetooth: Register Handsfree Audio Agent object path on the bus
  bluetooth: Register Handsfree Audio Agent with oFono
  bluetooth: Unregister Handsfree Audio Agent with oFono
  bluetooth: Implement Handsfree Audio Agent Release()
  bluetooth: List HF cards from oFono
  bluetooth: Parse HF cards properties
  bluetooth: Create a pa_bluetooth_transport for each HF card
  bluetooth: Track org.ofono.HandsfreeAudioManager.CardAdded
  bluetooth: Track org.ofono.HandsfreeAudioManager.CardRemoved
  bluetooth: Create API to get BlueZ version
  bluetooth: Implement Handsfree Audio Agent NewConnection()
  bluetooth: Only call *Acquire() if using BlueZ' Media API
  bluetooth: Suspend sink/source on HFP's stream HUP
  bluetooth: Do the socket defered setup
  bluetooth: Handle mSBC-encoded streams for HFP
  bluetooth: Postpone sink and source creation for BlueZ 5 HFP

 src/modules/bluetooth/bluetooth-util.c          | 455 +++++++++++++++++++++++-
 src/modules/bluetooth/bluetooth-util.h          |  11 +
 src/modules/bluetooth/module-bluetooth-device.c | 372 ++++++++++++++++++-
 3 files changed, 813 insertions(+), 25 deletions(-)


More information about the pulseaudio-discuss mailing list