Loading system/bta/av/bta_av_aact.cc +28 −15 Original line number Diff line number Diff line Loading @@ -535,7 +535,8 @@ static void bta_av_a2dp_sdp_cback(bool found, tA2DP_Service* p_service, log::error("BTA_AV_SDP_DISC_FAIL_EVT: peer_addr={}", ADDRESS_TO_LOGGABLE_CSTR(p_scb->PeerAddress())); } if (found && (p_service != NULL)) { if (found) { if (p_service != NULL) { p_scb->SetAvdtpVersion(p_service->avdt_version); DEVICE_IOT_CONFIG_ADDR_SET_HEX_IF_GREATER( p_scb->PeerAddress(), IOT_CONF_KEY_A2DP_VERSION, Loading @@ -551,6 +552,7 @@ static void bta_av_a2dp_sdp_cback(bool found, tA2DP_Service* p_service, ADDRESS_TO_LOGGABLE_CSTR(p_scb->PeerAddress())); } } } } else { p_scb->SetAvdtpVersion(0); } Loading Loading @@ -815,11 +817,22 @@ void bta_av_do_disc_a2dp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { bta_sys_app_open(BTA_ID_AV, p_scb->app_id, p_scb->PeerAddress()); p_scb->uuid_int = p_data->api_open.uuid; if (p_scb->AvdtpVersion() != 0 && interop_match_addr_or_name( INTEROP_A2DP_SKIP_SDP_DURING_RECONNECTION, &p_scb->PeerAddress(), &btif_storage_get_remote_device_property)) { log::info("Skip SDP with valid AVDTP version 0x%04x", p_scb->AvdtpVersion()); bta_av_a2dp_sdp_cback(true, nullptr, p_scb->PeerAddress()); return; } /* set up parameters */ db_params.db_len = BTA_AV_DISC_BUF_SIZE; db_params.num_attr = 3; db_params.p_attrs = attr_list; p_scb->uuid_int = p_data->api_open.uuid; p_scb->sdp_discovery_started = true; if (p_scb->uuid_int == UUID_SERVCLASS_AUDIO_SINK) sdp_uuid = UUID_SERVCLASS_AUDIO_SOURCE; Loading system/conf/interop_database.conf +7 −0 Original line number Diff line number Diff line Loading @@ -865,3 +865,10 @@ EPG = Name_Based [INTEROP_MULTIPLE_HOGP_SERVICE_CHOOSE_THIRD] 0X046D-0XBB00 = Vndr_Prdt_Based 0X046D-0XBB01 = Vndr_Prdt_Based # Some A2DP sink devices don't respond SDP request during A2DP reconnection. Skip SDP for # these devices. [INTEROP_A2DP_SKIP_SDP_DURING_RECONNECTION] CANZ = Name_Based BSK30 = Name_Based BSK10 = Name_Based system/device/include/interop.h +3 −0 Original line number Diff line number Diff line Loading @@ -350,6 +350,9 @@ typedef enum { // Some LE HID devices contain more than one HOGP service. INTEROP_MULTIPLE_HOGP_SERVICE_CHOOSE_THIRD, // Som A2DP sink devices don't respond SDP request during A2DP reconnection INTEROP_A2DP_SKIP_SDP_DURING_RECONNECTION, END_OF_INTEROP_LIST } interop_feature_t; Loading system/device/src/interop.cc +1 −0 Original line number Diff line number Diff line Loading @@ -404,6 +404,7 @@ static const char* interop_feature_string_(const interop_feature_t feature) { CASE_RETURN_STR(INTEROP_INSERT_CALL_WHEN_SCO_START); CASE_RETURN_STR(INTEROP_DELAY_AUTH); CASE_RETURN_STR(INTEROP_MULTIPLE_HOGP_SERVICE_CHOOSE_THIRD); CASE_RETURN_STR(INTEROP_A2DP_SKIP_SDP_DURING_RECONNECTION); } return UNKNOWN_INTEROP_FEATURE; } Loading Loading
system/bta/av/bta_av_aact.cc +28 −15 Original line number Diff line number Diff line Loading @@ -535,7 +535,8 @@ static void bta_av_a2dp_sdp_cback(bool found, tA2DP_Service* p_service, log::error("BTA_AV_SDP_DISC_FAIL_EVT: peer_addr={}", ADDRESS_TO_LOGGABLE_CSTR(p_scb->PeerAddress())); } if (found && (p_service != NULL)) { if (found) { if (p_service != NULL) { p_scb->SetAvdtpVersion(p_service->avdt_version); DEVICE_IOT_CONFIG_ADDR_SET_HEX_IF_GREATER( p_scb->PeerAddress(), IOT_CONF_KEY_A2DP_VERSION, Loading @@ -551,6 +552,7 @@ static void bta_av_a2dp_sdp_cback(bool found, tA2DP_Service* p_service, ADDRESS_TO_LOGGABLE_CSTR(p_scb->PeerAddress())); } } } } else { p_scb->SetAvdtpVersion(0); } Loading Loading @@ -815,11 +817,22 @@ void bta_av_do_disc_a2dp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { bta_sys_app_open(BTA_ID_AV, p_scb->app_id, p_scb->PeerAddress()); p_scb->uuid_int = p_data->api_open.uuid; if (p_scb->AvdtpVersion() != 0 && interop_match_addr_or_name( INTEROP_A2DP_SKIP_SDP_DURING_RECONNECTION, &p_scb->PeerAddress(), &btif_storage_get_remote_device_property)) { log::info("Skip SDP with valid AVDTP version 0x%04x", p_scb->AvdtpVersion()); bta_av_a2dp_sdp_cback(true, nullptr, p_scb->PeerAddress()); return; } /* set up parameters */ db_params.db_len = BTA_AV_DISC_BUF_SIZE; db_params.num_attr = 3; db_params.p_attrs = attr_list; p_scb->uuid_int = p_data->api_open.uuid; p_scb->sdp_discovery_started = true; if (p_scb->uuid_int == UUID_SERVCLASS_AUDIO_SINK) sdp_uuid = UUID_SERVCLASS_AUDIO_SOURCE; Loading
system/conf/interop_database.conf +7 −0 Original line number Diff line number Diff line Loading @@ -865,3 +865,10 @@ EPG = Name_Based [INTEROP_MULTIPLE_HOGP_SERVICE_CHOOSE_THIRD] 0X046D-0XBB00 = Vndr_Prdt_Based 0X046D-0XBB01 = Vndr_Prdt_Based # Some A2DP sink devices don't respond SDP request during A2DP reconnection. Skip SDP for # these devices. [INTEROP_A2DP_SKIP_SDP_DURING_RECONNECTION] CANZ = Name_Based BSK30 = Name_Based BSK10 = Name_Based
system/device/include/interop.h +3 −0 Original line number Diff line number Diff line Loading @@ -350,6 +350,9 @@ typedef enum { // Some LE HID devices contain more than one HOGP service. INTEROP_MULTIPLE_HOGP_SERVICE_CHOOSE_THIRD, // Som A2DP sink devices don't respond SDP request during A2DP reconnection INTEROP_A2DP_SKIP_SDP_DURING_RECONNECTION, END_OF_INTEROP_LIST } interop_feature_t; Loading
system/device/src/interop.cc +1 −0 Original line number Diff line number Diff line Loading @@ -404,6 +404,7 @@ static const char* interop_feature_string_(const interop_feature_t feature) { CASE_RETURN_STR(INTEROP_INSERT_CALL_WHEN_SCO_START); CASE_RETURN_STR(INTEROP_DELAY_AUTH); CASE_RETURN_STR(INTEROP_MULTIPLE_HOGP_SERVICE_CHOOSE_THIRD); CASE_RETURN_STR(INTEROP_A2DP_SKIP_SDP_DURING_RECONNECTION); } return UNKNOWN_INTEROP_FEATURE; } Loading