Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit adc4fb44 authored by William Escande's avatar William Escande Committed by Gerrit Code Review
Browse files

Merge "A2DP: Skip A2DP SDP for IOT devices" into main

parents 5e36438a fafb4c3c
Loading
Loading
Loading
Loading
+28 −15
Original line number Diff line number Diff line
@@ -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,
@@ -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);
  }
@@ -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;
+7 −0
Original line number Diff line number Diff line
@@ -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
+3 −0
Original line number Diff line number Diff line
@@ -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;

+1 −0
Original line number Diff line number Diff line
@@ -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;
}