Skip to content

Conversation

@CanWang001
Copy link
Contributor

Add Bluetooth Test Protocol (BTP) support for Audio/Video Remote
Control Profile (AVRCP) and Audio/Video Control Transport Protocol
(AVCTP) testing to enable PTS qualification.

AVRCP implementation:

  • Controller (CT) role with browsing and cover art support
  • Target (TG) role with browsing and cover art support
  • Complete BTP command/event interface
  • Support for all AVRCP PTS test cases

AVCTP implementation:

  • Complete BTP command/event interface
  • Support for all AVCTP PTS test cases

makeshi and others added 20 commits November 10, 2025 16:44
Remove unnecessary checking for net_buf_tailroom(buf) < chunk_size
before sending data in avctp_tx_processor.

Signed-off-by: Make Shi <[email protected]>
This patch introduces support for AVRCP vendor-dependent commands and
responses, including full handling of fragmented messages.

- Adds fragmentation and reassembly logic for AVRCP vendor-dependent
- Introduces TX queue management using delayed work for TG
- Adds support for GetCapabilities PDUs
- Add new Kconfig for vendor-dependent with fragmentation support

Signed-off-by: Make Shi <[email protected]>
This patch adds AVRCP notification event handling for both CT and
TG roles. Also add Shell command support for testing notification
registration and responses.

Signed-off-by: Make Shi <[email protected]>
Implement support for AVRCP Player app Settings PDUs on both CT/TG
- Added APIs for sending and handling commands like LIST_ATTRS,
   LIST_VALS, GET_CURR_VAL, SET_VAL, and related text/inform PDUs.
- Added callbacks for TG request handling and CT response processing.
- Add shell commands for Player app Settings commands testing.

Signed-off-by: Make Shi <[email protected]>
Add full support for all remaining AVRCP vendor-dependent PDUs on both
Controller (CT) and Target (TG), including APIs, callbacks, and shell
commands for testing.

Signed-off-by: Make Shi <[email protected]>
Drop the 'U' suffix from enum hex literals keep style consistent
and rename `bt_avrcp_list_app_setting_attr_rsp` to the clearer.

Signed-off-by: Make Shi <[email protected]>
Introduce an optional alloc_buf() callback into AVCTP so that each
session can decide which RX buffer pool to use. Provided a dedicated
RX pool for the AVRCP browsing channel.
Also provided BT_AVRCP_BROWSING_L2CAP_MTU for configure.

Signed-off-by: Make Shi <[email protected]>
This change implements full AVRCP Browsing support on both CT/TG,
and included all public APIs and callbacks, and add shell commands
for testing.

Signed-off-by: Make Shi <[email protected]>
A new function bt_obex_add_header_body_or_end_body() is added to help
to add the body/end body header. When the tail room of the buffer is
more than the passed body room, and the total length of buffer is not
more than the mopl if the body has been added, the header end body
will be added. Or, the header body will be added.

Signed-off-by: Lyle Zhu <[email protected]>
The `bt_obex_string_is_valid()` is used to check whether the sending
or receiving UTF-16 string is valid or not.

Expose function "bt_obex_string_is_valid()" to support external
checking of UTF-16 strings.

Signed-off-by: Lyle Zhu <[email protected]>
The function `bt_obex_has_header()` is used to check whether the
specific header is in the buffer.

It is required by upper layer to check the header from the receiving
buffer.

Signed-off-by: Lyle Zhu <[email protected]>
Add functions to manage BIP transport connect and disconnect both for
l2cap and rfcomm.

Add functions to register and unregister primary and secondary OBEX
servers.

Add functions to send OBEX connect/disconnect request and response.

Add functions to send OBEX get/put request and response with different
type defined by BT_BIP_HDR_TYPE_*.

Add functions to send abort request and response.

Signed-off-by: Lyle Zhu <[email protected]>
Add commands for transport over RFCOMM, including `register-rfcomm`,
`connect-rfcomm`, and `disconnect-rfcomm`.

Add commands for transport over L2CAP, including `register-l2cap`,
`connect-l2cap`, and `disconnect-l2cap`.

Add command `alloc-buf` and `release-buf` to allocate and release TX
buffer.

Add command set `add-header` to add the OBEX headers to allocated TX
buffer.

Add command set `client` to send BIP client requests with allocated
TX buffer.

Add command set `server` to send BIP responses with allocated TX
buffer.

Signed-off-by: Lyle Zhu <[email protected]>
Add function `bt_bip_set_supported_capabilities()` to set the
supported caps of responder.

Add function `bt_bip_set_supported_features()` to set the supported
features of responder.

Add function `bt_bip_set_supported_functions()` to set the supported
functions of responder.

Check the supported features of responder when sending OBEX connect
request on initiator side.

Check the supported functions of responder when sending OBEX get/put
request on initiator side.

Signed-off-by: Lyle Zhu <[email protected]>
Add define `BT_SDP_SUPPORTED_CAPABILITIES` to define supported
capabilities attribute.

Add define `BT_SDP_SUPPORTED_FUNCTIONS` to define supported functions
attribute.

Signed-off-by: Lyle Zhu <[email protected]>
Add command `reg` to register the BIP responder SDP record.

Add command `set_caps`, `set_features`, and `set_functions` to set the
supported capabilities, features, and functions for BIP responder.

Add command `discover` to discovery the BIP responder SDP record. And
parse the response data to get the supported features and functions.

Add command `set_feats_funcs` to set the discovered supported features
and functions.

Signed-off-by: Lyle Zhu <[email protected]>
The response function should be consistent with the function of
request when server responses the request of client.

Check whether the BIP function in the server response function is
consistent with the client request.

Signed-off-by: Lyle Zhu <[email protected]>
For the uncompleted BIP request, the following BIP request function
should be same with the previous.

Keep the first request function type, and check it with the following
request function type.

Signed-off-by: Lyle Zhu <[email protected]>
Add Kconfig `BT_AVRCP_TG_COVER_ART` to enable the target cover art
feature.

Add Kconfig `BT_AVRCP_CT_COVER_ART_GET_IMAGE_PROPERTIES` to enable
the controller cover art get image properties feature.

Add Kconfig `BT_AVRCP_CT_COVER_ART_GET_IMAGE` to enable the
controller cover art get image feature.

Add Kconfig `BT_AVRCP_CT_COVER_ART_GET_LINKED_THUMBNAIL` to enable
the controller cover art get linked thumbnail feature.

Add functions `bt_avrcp_cover_art_ct_cb_register()` and
`bt_avrcp_cover_art_tg_cb_register()` to register the callback.

Add function `bt_avrcp_cover_art_ct_l2cap_connect()` to create the
L2CAP connection for OBEX transport.

Add functions `bt_avrcp_cover_art_ct_l2cap_disconnect()` and
`bt_avrcp_cover_art_tg_l2cap_disconnect()` to disconnect the L2CAP
connection.

Add functions to send OBEX request/response, including connect,
disconnect, abort, get_image_properties, get_image, and
get_linked_thumbnail.

Signed-off-by: Lyle Zhu <[email protected]>
Add cover art shell commands for AVRCP controller and target.

Signed-off-by: Lyle Zhu <[email protected]>
Add Bluetooth Test Protocol (BTP) support for Audio/Video Remote
Control Profile (AVRCP) and Audio/Video Control Transport Protocol
(AVCTP) testing to enable PTS qualification.

AVRCP implementation:
- Controller (CT) role with browsing and cover art support
- Target (TG) role with browsing and cover art support
- Complete BTP command/event interface
- Support for all AVRCP PTS test cases

AVCTP implementation:
- Complete BTP command/event interface
- Support for all AVCTP PTS test cases

Signed-off-by: Can Wang <[email protected]>
@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants