From 85ecc44d19899b2274654ea0f0c5a7b7d574cc65 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Wed, 26 Sep 2012 16:45:53 +0300 Subject: [PATCH] AVRCP: Store version and features of the remote in the session --- audio/avrcp.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/audio/avrcp.c b/audio/avrcp.c index 53c4e135b..376f4a1ff 100644 --- a/audio/avrcp.c +++ b/audio/avrcp.c @@ -181,6 +181,8 @@ struct avrcp { struct avctp *conn; struct audio_device *dev; struct avrcp_player *player; + uint16_t version; + int features; unsigned int control_handler; unsigned int browsing_handler; @@ -1348,10 +1350,6 @@ static void state_changed(struct audio_device *dev, avctp_state_t old_state, session); server->sessions = g_slist_append(server->sessions, session); - break; - case AVCTP_STATE_CONNECTED: - if (session == NULL) - break; rec = btd_device_get_record(dev->btd_dev, AVRCP_TARGET_UUID); if (rec == NULL) @@ -1361,21 +1359,22 @@ static void state_changed(struct audio_device *dev, avctp_state_t old_state, return; desc = list->data; + session->version = desc->version; + sdp_get_int_attr(rec, SDP_ATTR_SUPPORTED_FEATURES, + &session->features); - if (desc && desc->version >= 0x0104) { - int feat; - int ret; + sdp_list_free(list, free); - register_volume_notification(session); + break; + case AVCTP_STATE_CONNECTED: + if (session == NULL) + break; - ret = sdp_get_int_attr(rec, - SDP_ATTR_SUPPORTED_FEATURES, - &feat); - if (ret == 0 && (feat & AVRCP_FEATURE_BROWSING)) + if (session->version >= 0x0104) { + register_volume_notification(session); + if (session->features & AVRCP_FEATURE_BROWSING) avctp_connect_browsing(session->conn); } - - sdp_list_free(list, free); default: return; } -- 2.47.3