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

Commit 2b2c6400 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "HFP: Open SLC depended on value returned by +BRSF"

parents a18be026 c80ed1d2
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -100,6 +100,7 @@ void bta_ag_register(tBTA_AG_SCB* p_scb, const tBTA_AG_DATA& data) {
  /* initialize control block */
  p_scb->reg_services = data.api_register.services;
  p_scb->features = data.api_register.features;
  p_scb->masked_features = data.api_register.features;
  p_scb->app_id = data.api_register.app_id;

  /* create SDP records */
@@ -361,6 +362,7 @@ void bta_ag_rfc_close(tBTA_AG_SCB* p_scb,
  /* reinitialize stuff */
  p_scb->conn_service = 0;
  p_scb->peer_features = 0;
  p_scb->masked_features = p_scb->features;
  p_scb->peer_codecs = BTA_AG_CODEC_CVSD;
  p_scb->sco_codec = BTA_AG_CODEC_CVSD;
  /* Clear these flags upon SLC teardown */
+6 −7
Original line number Diff line number Diff line
@@ -963,7 +963,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type,
        ** peer features do not have HF Indicators, service level conn. now open
        */
        if (!p_scb->svc_conn &&
            !((p_scb->features & BTA_AG_FEAT_HF_IND) &&
            !((p_scb->masked_features & BTA_AG_FEAT_HF_IND) &&
              (p_scb->peer_features & BTA_AG_PEER_FEAT_HF_IND))) {
          bta_ag_svc_conn_open(p_scb, tBTA_AG_DATA::kEmpty);
        }
@@ -1060,9 +1060,9 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type,
         * peer features do not have 3-way or HF Indicators, service level conn.
         * now open */
        if (!p_scb->svc_conn &&
            !((p_scb->features & BTA_AG_FEAT_3WAY) &&
            !((p_scb->masked_features & BTA_AG_FEAT_3WAY) &&
              (p_scb->peer_features & BTA_AG_PEER_FEAT_3WAY)) &&
            !((p_scb->features & BTA_AG_FEAT_HF_IND) &&
            !((p_scb->masked_features & BTA_AG_FEAT_HF_IND) &&
              (p_scb->peer_features & BTA_AG_PEER_FEAT_HF_IND))) {
          bta_ag_svc_conn_open(p_scb, tBTA_AG_DATA::kEmpty);
        }
@@ -1102,17 +1102,16 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type,
      /* store peer features */
      p_scb->peer_features = (uint16_t)int_arg;

      tBTA_AG_FEAT features = p_scb->features;
      if (p_scb->peer_version < HFP_VERSION_1_7) {
        features &= HFP_1_6_FEAT_MASK;
        p_scb->masked_features &= HFP_1_6_FEAT_MASK;
      }

      APPL_TRACE_DEBUG("%s BRSF HF: 0x%x, phone: 0x%x", __func__,
                       p_scb->peer_features, features);
                       p_scb->peer_features, p_scb->masked_features);

      /* send BRSF, send OK */
      bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_BRSF, nullptr,
                         (int16_t)features);
                         (int16_t)p_scb->masked_features);
      bta_ag_send_ok(p_scb);
      break;
    }
+1 −0
Original line number Diff line number Diff line
@@ -203,6 +203,7 @@ struct tBTA_AG_SCB {
  tBTA_SERVICE_MASK open_services;      /* services specified in open API */
  uint16_t conn_handle;                 /* RFCOMM handle of connected service */
  tBTA_AG_FEAT features;                /* features registered by application */
  tBTA_AG_FEAT masked_features;         /* local BRSF features for this connection */
  tBTA_AG_PEER_FEAT peer_features;      /* peer device features */
  uint16_t peer_sdp_features;           /* peer device SDP features */
  uint16_t peer_version;                /* profile version of peer device */