linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [bluez/bluez] c86662: shared/mcp: support multiple MCP, and add non-stub...
@ 2025-12-09 21:31 Pauli Virtanen
  0 siblings, 0 replies; only message in thread
From: Pauli Virtanen @ 2025-12-09 21:31 UTC (permalink / raw)
  To: linux-bluetooth

  Branch: refs/heads/1031829
  Home:   https://github.com/bluez/bluez
  Commit: c86662d9b9ebcb92e5ccd47886bf7c10829eea2e
      https://github.com/bluez/bluez/commit/c86662d9b9ebcb92e5ccd47886bf7c10829eea2e
  Author: Pauli Virtanen <pav@iki.fi>
  Date:   2025-12-09 (Tue, 09 Dec 2025)

  Changed paths:
    M lib/bluetooth/uuid.h
    M src/shared/mcp.c
    M src/shared/mcp.h
    M src/shared/mcs.h

  Log Message:
  -----------
  shared/mcp: support multiple MCP, and add non-stub MCS server

For Media Control Client, add support for multiple GMCS / MCS services
on the server. Revise the API accordingly.

For Media Control Server, make it a complete implementation (OTS still
missing), and add an API the profile can use.

This is mostly a complete rewrite.


  Commit: de14e8d57a77c1c4262a19c3ad4551be79f54d19
      https://github.com/bluez/bluez/commit/de14e8d57a77c1c4262a19c3ad4551be79f54d19
  Author: Pauli Virtanen <pav@iki.fi>
  Date:   2025-12-09 (Tue, 09 Dec 2025)

  Changed paths:
    M .gitignore
    M Makefile.am
    A unit/test-mcp.c

  Log Message:
  -----------
  test-mcp: add tests for MCP / MCS

Add tests for the Media Control Client / Server implementation.

This contains basic GGIT and state transition tests.  Not all state
transition tests are here, as they'd largely test the upper layer of the
profile which is not tested now.


  Commit: 7774e6b0e50b4d99a0f87ca6fff1384175372686
      https://github.com/bluez/bluez/commit/7774e6b0e50b4d99a0f87ca6fff1384175372686
  Author: Pauli Virtanen <pav@iki.fi>
  Date:   2025-12-09 (Tue, 09 Dec 2025)

  Changed paths:
    M profiles/audio/mcp.c

  Log Message:
  -----------
  mcp: adapt to new MCP API to support multiple remote MCS services

Rewrite to use the new shared/mcp API, adding support for multiple MCS
services on the remote side.


  Commit: adcf919c4dcef9012d771bb8caaf5a37e2af91ab
      https://github.com/bluez/bluez/commit/adcf919c4dcef9012d771bb8caaf5a37e2af91ab
  Author: Pauli Virtanen <pav@iki.fi>
  Date:   2025-12-09 (Tue, 09 Dec 2025)

  Changed paths:
    M Makefile.plugins
    M profiles/audio/avctp.c
    A profiles/audio/uinput-util.c
    A profiles/audio/uinput-util.h

  Log Message:
  -----------
  avctp: move uinput utilities to uinput-util.c

Move basic uinput utilities to a separate file, so they can be reused
for MCS.


  Commit: 95b460cf16efa4b1302e0084a893fe306c4b57cf
      https://github.com/bluez/bluez/commit/95b460cf16efa4b1302e0084a893fe306c4b57cf
  Author: Pauli Virtanen <pav@iki.fi>
  Date:   2025-12-09 (Tue, 09 Dec 2025)

  Changed paths:
    M profiles/audio/mcp.c

  Log Message:
  -----------
  mcp: add local GMCS service that emits uinput media keys

Implement simple GMCS service that is always inactive, and emits media
key presses via uinput for Play/Pause/Stop/Next/Prev MCS commands.

In practice, this seems to be enough to support media control keys on
headsets.  Some headsets (Creative Zen Hybrid Pro) also refuse to
connect if there is no GMCS service.


  Commit: c626e4c9ee969e04ed25f924d21a9bc340dc302b
      https://github.com/bluez/bluez/commit/c626e4c9ee969e04ed25f924d21a9bc340dc302b
  Author: Pauli Virtanen <pav@iki.fi>
  Date:   2025-12-09 (Tue, 09 Dec 2025)

  Changed paths:
    M src/shared/gatt-client.c

  Log Message:
  -----------
  shared/gatt-client: fix notify_data leak in notify_data_write_ccc

Calling bt_gatt_client_unregister_notify() when ATT has disconnected
leaks the reference to notify_data: in notify_data_write_ccc() the
bt_gatt_client_write_value() fails, the destroy is never called, and
notify_data_ref() is leaked.

Fix by balancing unref notify_data on write failure.

Log (unit/test-mcp):
Direct leak of 5760 byte(s) in 90 object(s) allocated from:
    #0 0x7fd7e2ce6f2b in malloc
    #1 0x0000004227e5 in util_malloc src/shared/util.c:46
    #2 0x00000044a81c in register_notify src/shared/gatt-client.c:1782
    #3 0x000000458367 in bt_gatt_client_register_notify src/shared/gatt-client.c:3685
    #4 0x00000049f9f5 in foreach_mcs_char src/shared/mcp.c:1834


Compare: https://github.com/bluez/bluez/compare/c86662d9b9eb%5E...c626e4c9ee96

To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2025-12-09 21:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-09 21:31 [bluez/bluez] c86662: shared/mcp: support multiple MCP, and add non-stub Pauli Virtanen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).