Merge branch 'bugfix/fix_avrc_absolute_volume_compatibility_v5.3' into 'release/v5.3'

bugfix/fix_avrc_absolute_volume_compatibility[backport v5.3]

See merge request espressif/esp-idf!34770
This commit is contained in:
Jiang Jiang Jian
2024-11-15 10:57:45 +08:00

View File

@ -170,8 +170,7 @@ bool btc_avrc_ct_init_p(void)
bool btc_avrc_tg_connected_p(void) bool btc_avrc_tg_connected_p(void)
{ {
return (s_rc_tg_init == BTC_RC_TG_INIT_MAGIC) && return (s_rc_tg_init == BTC_RC_TG_INIT_MAGIC) &&
(btc_rc_cb.rc_connected == TRUE) && (btc_rc_cb.rc_connected == TRUE);
(btc_rc_cb.rc_features & BTA_AV_FEAT_RCCT);
} }
bool btc_avrc_ct_connected_p(void) bool btc_avrc_ct_connected_p(void)
@ -456,7 +455,7 @@ static void handle_rc_connect (tBTA_AV_RC_OPEN *p_rc_open)
btc_avrc_ct_cb_to_app(ESP_AVRC_CT_CONNECTION_STATE_EVT, &param); btc_avrc_ct_cb_to_app(ESP_AVRC_CT_CONNECTION_STATE_EVT, &param);
} }
if (p_rc_open->peer_features & BTA_AV_FEAT_RCCT) { if (btc_avrc_tg_init_p()) {
esp_avrc_tg_cb_param_t param; esp_avrc_tg_cb_param_t param;
memset(&param, 0, sizeof(esp_avrc_tg_cb_param_t)); memset(&param, 0, sizeof(esp_avrc_tg_cb_param_t));
param.conn_stat.connected = true; param.conn_stat.connected = true;
@ -515,7 +514,7 @@ static void handle_rc_disconnect (tBTA_AV_RC_CLOSE *p_rc_close)
btc_avrc_ct_cb_to_app(ESP_AVRC_CT_CONNECTION_STATE_EVT, &param); btc_avrc_ct_cb_to_app(ESP_AVRC_CT_CONNECTION_STATE_EVT, &param);
} }
if (rc_features & BTA_AV_FEAT_RCCT) { if (btc_avrc_tg_init_p()) {
esp_avrc_tg_cb_param_t param; esp_avrc_tg_cb_param_t param;
memset(&param, 0, sizeof(esp_avrc_ct_cb_param_t)); memset(&param, 0, sizeof(esp_avrc_ct_cb_param_t));
param.conn_stat.connected = false; param.conn_stat.connected = false;
@ -941,14 +940,10 @@ void btc_rc_handler(tBTA_AV_EVT event, tBTA_AV *p_data)
memcpy(param.conn_stat.remote_bda, btc_rc_cb.rc_addr, sizeof(esp_bd_addr_t)); memcpy(param.conn_stat.remote_bda, btc_rc_cb.rc_addr, sizeof(esp_bd_addr_t));
btc_avrc_ct_cb_to_app(ESP_AVRC_CT_CONNECTION_STATE_EVT, &param); btc_avrc_ct_cb_to_app(ESP_AVRC_CT_CONNECTION_STATE_EVT, &param);
} }
if ((p_data->rc_feat.peer_features & BTA_AV_FEAT_RCCT) && /**
!(old_feats & BTA_AV_FEAT_RCCT)) { * @note ESP_AVRC_TG_CONNECTION_STATE_EVT has been reported on rc connect/disconnect event,
esp_avrc_tg_cb_param_t param; * it doesn't rely on the SDP results.
memset(&param, 0, sizeof(esp_avrc_ct_cb_param_t)); */
param.conn_stat.connected = true;
memcpy(param.conn_stat.remote_bda, btc_rc_cb.rc_addr, sizeof(esp_bd_addr_t));
btc_avrc_tg_cb_to_app(ESP_AVRC_TG_CONNECTION_STATE_EVT, &param);
}
} while (0); } while (0);
btc_rc_cb.rc_features = p_data->rc_feat.peer_features; btc_rc_cb.rc_features = p_data->rc_feat.peer_features;
btc_rc_cb.rc_ct_features = p_data->rc_feat.peer_ct_features; btc_rc_cb.rc_ct_features = p_data->rc_feat.peer_ct_features;