It uses BlueZ through to get HFP working following the
org.bluez.HandsfreeGateway and org.bluez.HandsfreeAgent from
the BlueZ D-Bus API.
You need the HFP suport into BlueZ and the new D-Bus 1.3 or
later with fd-passing support.
Many thanks to Zhenhua Zhang <zhenhua.zhang@intel.com> for its
prototype on this code.
According to the HFP 1.5 specification the order of commands is actually
important. The required sequence is to use CIND=?, CIND? and then CMER.
Currently oFono issues commands in the order of CIND=?, CMER, CIND?
The call volume driver listens the speaker volume and microphone
gain from the AG. It also allow to synchronze the speaker and
microphone volume changes with the AG through AT+VGS and AT+VGM.
Volume level synchronization from HFP spec 1.5 Section 4.28.2
is performed on startup.
This driver handles phone informations about registration status, signal
strength and roaming status listening +CIEV commands. It also gets the
Network Operator name with +COPS commands.
HFP voicecall driver uses AT+CIEV indicator to notify call status
update according to Bluetooth HFP spec v1.5. This patch only adds single
call support.
We already know the indicators we're interested in from the
specification, malloc/free-ing the indicator names is thus pointless.
Instead save off the indicator index positions in an array. Parse the
current values instead of storing the unparsed list.