bluez avrcp volume兼容性问题

本文描述了在使用bluez协议栈连接音频设备时遇到的正反向调节无法同步的问题,并提供了相应的代码修复,涉及AVRCP_EVENT_STATUS_CHANGED和AVRCP_EVENT_VOLUME_CHANGED事件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 手机连接使用bluez协议栈的音频设备,发现正反向调节无法同步,修复如下:

diff --git a/profiles/audio/avrcp.c b/profiles/audio/avrcp.c
index dda9a30..fa3be73 100644
--- a/profiles/audio/avrcp.c
+++ b/profiles/audio/avrcp.c
@@ -1621,9 +1621,11 @@ static uint8_t avrcp_handle_register_notification(struct avrcp *session,
 	if (len != 5)
 		goto err;
 
 	/* Check if event is supported otherwise reject */
-	if (!(session->supported_events & (1 << pdu->params[0])))
-		goto err;

 	switch (pdu->params[0]) {
 	case AVRCP_EVENT_STATUS_CHANGED:
@@ -4516,8 +4518,9 @@ static int avrcp_event(struct avrcp *session, uint8_t id, const void *data)
 	int err;
 
 	/* Verify that the event is registered */
-	if (!(session->registered_events & (1 << id)))
-		return -ENOENT;
 
 	memset(buf, 0, sizeof(buf));
 
@@ -4577,8 +4580,8 @@ int avrcp_set_volume(struct btd_device *dev, int8_t volume, bool notify)
 		return -ENOTCONN;
 
 	if (notify) {
-		if (!session->target)
-			return -ENOTSUP;
 		return avrcp_event(session, AVRCP_EVENT_VOLUME_CHANGED,
 								&volume);
 	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值