AVCRP allows the head unit to control media playback on connected devices.
The AVRCP profile is used with the Advanced Audio Distribution Profile (A2DP) profile, which supports streaming of high-quality audio, in mono and stereo, from a mobile device to the head unit.
The following diagram shows the components involved with the operation of the AVRCP profile.
The AVRCP profile writes playback status updates to /dev/name/local/avrcp-mmplayer-plugin-server, creates the pathnames for the media player devices (/dev/io-bluetooth/avrcp/#, where # is an integer), and then monitors these entries for new playback commands. It also writes the audio data read from the Bluetooth hardware and devc-seromap_hci serial driver to the audio data device entries (/dev/io-bluetooth/avrcp/mmr/#, where # is an integer).
The mmp-avrcp.so plugin supports AVRCP. The mm-player service uses this plugin to forward playback commands, issued by the user in the HMI, to the appropriate media player device path and to mm-renderer. This last service reads media streams through the audio data device entries and then sends these streams to io-audio, which outputs the audio through hardware. The plugin also reads status information from the avrcp-mmplayer-plugin-server device entry and updates the HMI with this information as needed.
To connect via A2DP/AVRCP, simply send the connect_service command with the MAC address as the data parameter and the profile number (0x110B) as data2 to the /pps/services/bluetooth/control object. For example:
echo "command::connect_service\n data::BA:C3:32:AD:55:CC\n data2::0x110B" >> /pps/services/bluetooth/control
In response to commands sent to the control object, the Bluetooth Manager publishes appropriate events (e.g., BTMGR_EVENT_CONNECT_ALL_SUCCESS) in the /pps/services/bluetooth/status object.
To disconnect, simply send the disconnect_service command using the same parameters you used to connect. For example:
echo "command::disconnect_service\n data::BA:C3:32:AD:55:CC\n data2::0x110B" >> /pps/services/bluetooth/control