blob: 5b3920804ee7b89c71e752c281d19b12409aa56d [file]
Bluetooth: Classic: HFP Shell
###############################
This document describes how to run the Bluetooth Classic HFP functionality.
The :code:`hfp` command exposes the Bluetooth Classic HFP Shell commands.
There are two sub-commands, :code:`hfp hf` and :code:`hfp ag`.
The :code:`hfp hf` is for Hands-Free Profile (HF) functionality, and the :code:`hfp ag` is
for Audio Gateway (AG) functionality.
Commands
********
All commands can only be used after the ACL connection has been established except
:code:`hfp hf reg` and :code:`hfp ag reg`.
The :code:`hfp` commands:
.. code-block:: console
uart:~$ hfp
hfp - Bluetooth HFP shell commands
Subcommands:
hf : HFP HF shell commands
ag : HFP AG shell commands
The :code:`hfp hf` commands:
.. code-block:: console
uart:~$ hfp hf
hf - HFP HF shell commands
Subcommands:
reg : [none]
connect : <channel>
disconnect : [none]
sco_disconnect : [none]
cli : <enable/disable>
vgm : <gain>
vgs : <gain>
operator : [none]
audio_connect : [none]
auto_select_codec : <enable/disable>
select_codec : Codec ID
set_codecs : Codec ID Map
accept : <call index>
reject : <call index>
terminate : <call index>
hold_incoming : <call index>
query_respond_hold_status : [none]
number_call : <phone number>
memory_dial : <memory location>
redial : [none]
turn_off_ecnr : [none]
call_waiting_notify : <enable/disable>
release_all_held : [none]
set_udub : [none]
release_active_accept_other : [none]
hold_active_accept_other : [none]
join_conversation : [none]
explicit_call_transfer : [none]
release_specified_call : <call index>
private_consultation_mode : <call index>
voice_recognition : <activate/deactivate>
ready_to_accept_audio : [none]
request_phone_number : [none]
transmit_dtmf_code : <call index> <code(set 0-9, #,*,A-D)>
query_subscriber : [none]
indicator_status : <Activate/deactivate AG indicators bitmap>
enhanced_safety : <enable/disable>
battery : <level>
The :code:`hfp ag` commands:
.. code-block:: console
uart:~$ hfp ag
ag - HFP AG shell commands
Subcommands:
reg : [none]
connect : <channel>
disconnect : [none]
sco_disconnect : [none]
ongoing_calls : <yes or no>
set_ongoing_calls : <number> <type> <status> <dir> [all]
remote_incoming : <number>
hold_incoming : <number>
remote_reject : <call index>
remote_accept : <call index>
remote_terminate : <call index>
remote_ringing : <call index>
outgoing : <number>
reject : <call index>
accept : <call index>
hold : <call index>
retrieve : <call index>
terminate : <call index>
vgm : <gain>
vgs : <gain>
operator : <mode> <operator>
audio_connect : <codec id>
inband_ringtone : <enable/disable>
explicit_call_transfer : [none]
voice_recognition : <activate/deactivate>
vre_state : <[R-ready][S-send][P-processing]>
vre_text : <[R-ready][S-send][P-processing]> <id> <type>
<operation> <text string>
subscriber : <empty/notempty>
signal_strength : <signal strength>
roaming_status : <roaming status>
battery_level : <battery level>
service_availability : <yes/no>
hf_indicator : <indicator> <enable/disable>
HFP AG SLC
**********
The :code:`hfp ag` subcommand provides functionality for HFP AG in Bluetooth Classic.
1. Register HFP AG:
.. code-block:: console
uart:~$ hfp ag reg
2. Connect to HFP HF:
.. code-block:: console
uart:~$ hfp ag connect 1
3. Connection is established with the HF device:
.. code-block:: console
Security changed: XX:XX:XX:XX:XX:XX level 2
AG received codec id bit map 2
AG connected
AG received vgm 0
AG received vgs 0
4. Disconnect from HFP HF:
.. code-block:: console
uart:~$ hfp ag disconnect
5. Connection is broken:
.. code-block:: console
AG disconnected
HFP HF SLC
**********
The :code:`hfp hf` subcommand provides functionality for HFP HF in Bluetooth Classic.
1. Register HFP HF:
.. code-block:: console
uart:~$ hfp hf reg
2. Connect to HFP AG:
.. code-block:: console
uart:~$ hfp hf connect 2
3. Connection is established with the AG device:
.. code-block:: console
Security changed: XX:XX:XX:XX:XX:XX level 2
HF service 0
HF signal 0
HF roam 0
HF battery 0
HF ring: in-band
HF connected
4. Disconnect from HFP HF:
.. code-block:: console
uart:~$ hfp hf disconnect
5. Connection is broken:
.. code-block:: console
HF disconnected
Call outgoing
*************
Place a call with the Phone number supplied by the AG:
.. tabs::
.. group-tab:: Outgoing Call Sequence on AG side
.. code-block:: console
uart:~$ hfp ag outgoing 123456
AG outgoing call 0x20007690, number 123456
AG SCO connected 0x20005248
AG SCO info:
SCO handle 0x0008
SCO air mode 2
SCO link type 2
uart:~$ hfp ag remote_ringing 0
AG call 0x20007690 start ringing mode 1
uart:~$ hfp ag remote_accept 0
AG call 0x20007690 accept
.. group-tab:: Outgoing Call Sequence on HF side
.. code-block:: console
uart:~$ hfp hf auto_select_codec enable
HF call 0x20007408 outgoing
codec negotiation: 1
codec auto selected: id 1
HF SCO connected 0x20005248
HF SCO info:
SCO handle 0x0008
SCO air mode 2
SCO link type 2
HF remote call 0x20007408 start ringing
HF call 0x20007408 accepted
Place a call with the Phone number supplied by the HF:
.. tabs::
.. group-tab:: Outgoing Call Sequence on AG side
.. code-block:: console
uart:~$
AG number call
AG outgoing call 0x20007690, number 123456789
AG SCO connected 0x20005248
AG SCO info:
SCO handle 0x0008
SCO air mode 2
SCO link type 2
uart:~$ hfp ag remote_ringing 0
AG call 0x20007690 start ringing mode 1
uart:~$ hfp ag remote_accept 0
AG call 0x20007690 accept
.. group-tab:: Outgoing Call Sequence on HF side
.. code-block:: console
uart:~$ hfp hf auto_select_codec enable
uart:~$ hfp hf number_call 123456789
HF start dialing call: err 0
HF call 0x20007408 outgoing
codec negotiation: 1
codec auto selected: id 1
HF SCO connected 0x20005248
HF SCO info:
SCO handle 0x0008
SCO air mode 2
SCO link type 2
HF remote call 0x20007408 start ringing
HF call 0x20007408 accepted
Call incoming
*************
Answer incoming call from the AG:
.. tabs::
.. group-tab:: Incoming Call Sequence on AG side
.. code-block:: console
uart:~$ hfp ag remote_incoming 123456
AG incoming call 0x20007690, number 123456
AG call 0x20007690 start ringing mode 1
AG SCO connected 0x20005248
AG SCO info:
SCO handle 0x0008
SCO air mode 2
SCO link type 2
uart:~$ hfp ag accept 0
AG call 0x20007690 accept
.. group-tab:: Incoming Call Sequence on HF side
.. code-block:: console
uart:~$ hfp hf auto_select_codec enable
HF call 0x20007408 incoming
codec negotiation: 1
codec auto selected: id 1
HF SCO connected 0x20005248
HF SCO info:
SCO handle 0x0008
SCO air mode 2
SCO link type 2
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 accepted
Answer incoming call from the HF:
.. tabs::
.. group-tab:: Incoming Call Sequence on AG side
.. code-block:: console
uart:~$ hfp ag remote_incoming 123456
AG incoming call 0x20007690, number 123456
AG codec negotiation result 0
AG call 0x20007690 start ringing mode 1
AG SCO connected 0x20005248
AG SCO info:
SCO handle 0x0008
SCO air mode 2
SCO link type 2
AG call 0x20007690 accept
.. group-tab:: Incoming Call Sequence on HF side
.. code-block:: console
uart:~$ hfp hf auto_select_codec enable
HF call 0x20007408 incoming
codec negotiation: 1
codec auto selected: id 1
HF SCO connected 0x20005248
HF SCO info:
SCO handle 0x0008
SCO air mode 2
SCO link type 2
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
HF call 0x20007408 ring
HF call 0x20007408 CLIP 123456 0
uart:~$ hfp hf accept 0
HF call 0x20007408 accepted
Call termination
****************
After the call (outgoing or incoming) is accepted, it can be terminated from either the AG
(Audio Gateway) or HF (Hands-Free) side.
Terminate a call process from the AG:
.. tabs::
.. group-tab:: Call termination on AG side
.. code-block:: console
uart:~$ hfp ag terminate 0
AG call 0x20007690 terminate
AG SCO disconnected 0x20005248 (reason 22)
.. group-tab:: Call termination on HF side
.. code-block:: console
HF call 0x20007408 terminated
HF SCO disconnected 0x20005248 (reason 22)
Terminate a call process from the HF:
.. tabs::
.. group-tab:: Call termination on AG side
.. code-block:: console
AG call 0x20007690 terminate
AG SCO disconnected 0x20005248 (reason 22)
.. group-tab:: Call termination on HF side
.. code-block:: console
uart:~$ hfp hf terminate 0
HF call 0x20007408 terminated
HF SCO disconnected 0x20005248 (reason 22)
Terminate a call process from the remote:
.. tabs::
.. group-tab:: Call termination on AG side
.. code-block:: console
uart:~$ hfp ag remote_terminate 0
AG call 0x20007690 terminate
AG SCO disconnected 0x20005248 (reason 22)
.. group-tab:: Call termination on HF side
.. code-block:: console
HF call 0x20007408 terminated
HF SCO disconnected 0x20005248 (reason 22)