This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Multiple AVRCP profiles

I would like to register two AVRCP controller instances so that I can control two different sources (e.g. stop one, start the other), as well as two AVRCP target instances so that multiple devices can connect and send me AVRCP controls.

I am already registering multiple GAVD endpoints for each of these devices to send/receive audio, but I can't seem to register multiple AVRCP endpoints.

I can register one AVRCP controller profile and one AVRCP target profile, but the second call to AVCTP_Register_Profile for either role gives me error code -1006 / BTAVCTP_ERROR_PROFILE_ALREADY_REGISTERED

How can I register to connect more than one of each type at a time?

  • Hi,

    Moving to SSO team for precise answer.

  • Hi, 

    Can you clarify what platform you are running this on? The latest MSP430 release does have support for using both roles. 

    Thanks,

    Stonestreet One.

  • Using the Tiva C DK-TM4C129X development kit and a CC256xQFNem

    I can open an AVCTP profile of one of each role, but not more than one of each. I am not sure how to open two controller profiles and two target profiles.

  • Hi,

    I read some of your other posts and saw that you had ported the older M3 release for the TM4C129X. That does not support Multiple AVCTP connections beyond one Target and one Controller.

    Thanks,

    Stonestreet One. 

  • I ported the application code (things that call AVCTP_*) but the version of the library I'm using is for the Tiva M4, version 1.1. Does that version of the library support it? If not, how do I go about getting a version that does?

    Thanks :)

  • On a slightly related note, seems the Tiva C M4 1.1 SDK doesn't support the browsing channel either.

    I assumed it did support browsing since the definitions were there (and the AVRCP 1.4 controller worked thus far for basic things like passthrough and notifications). So, I made a bunch of code that would process browsing messages. When I fire it up, AVCTP_Enable_Browsing_Channel_Support() return value is BTPS_ERROR_FEATURE_NOT_AVAILABLE                        (-103)

    - compile-time option or run-time option I need to set before trying to enable the browsing channel support?

    - hardware-dependent feature (CC256xQFNEM currently installed on the DK-TM4C129X)?

    - or do I need a newer SDK than 1.1?

    Thanks :)

  • I just updated to the 1.2 version of the library just released, and it also does not support multiple controllers, multiple targets, or AVRCP browsing, unless I'm doing something wrong.

    What can I do to enable these things in the library?

  • Hi,

    You are correct that you cannot register two controllers or targets.   This is prohibited by AVCTP (which is the protocol that AVRCP uses).  AVCTP allows the registration of “profiles”, and allows the registration and connection to these registered “profiles”.  Currently there is only a single defined AVCTP “profile” and that is the same for CT and TG which is (from the spec) “A/V Remote Control”.  What this means is that there would be no way to distinguish between which remote control set you would like to use as the Profile Identifier (PID) used in the AVCTP messages would be the same.  Please note that “profile” has been deliberately placed in quotes to denote that it is different than a Bluetooth Profile (e.g. Hands Free Profile).

     

    However, the above is not the solution for your use case.  The Stonestreet One implementation of AVRCP/AVCTP supports multiple, concurrent connections to multiple devices.  These connections are multiplexed and can be differentiated via specifying the correct Bluetooth Address of the device that is of interest.  This means that you could have two (or more) phones connect to AVCTP/AVRCP and both phones could send and receive messages to your AVRCP entity.  The application would logically differentiate  the connections and group them (and take the required action).  Neither phone would be aware of the other phones connection and both phones would work normally thinking they are in complete control. 

     

    The same would be true for Audio Endpoints (A2DP) as well.  The application can then logically group AVRCP/A2DP commands to present two different concurrent instances to each phone by having the application manage the logic.  This mechanism is fully supported in the latest release of the Audio Profile Subsystem (AUD), in that it will handle the internal details for you and allow the application to only have to worry about each device based on Bluetooth Device Address.  AUD will support as many concurrent SRC/SNK as you configure and it will also handle the multiplexing of AVRCP as well.

    Thanks,

    Stonestreet One.