OSDN Git Service

am 06589f6c: Merge "Bluetooth: Clear wait flag on Start response."
authorMatthew Xie <mattx@google.com>
Mon, 31 Mar 2014 19:56:06 +0000 (19:56 +0000)
committerAndroid Git Automerger <android-git-automerger@android.com>
Mon, 31 Mar 2014 19:56:06 +0000 (19:56 +0000)
* commit '06589f6c61579105aa10e35960d59a408f9eff52':
  Bluetooth: Clear wait flag on Start response.

1  2 
bta/av/bta_av_aact.c

diff --combined bta/av/bta_av_aact.c
@@@ -288,7 -288,6 +288,7 @@@ static void notify_start_failed(tBTA_AV
  *******************************************************************************/
  void bta_av_st_rc_timer(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
 +    UNUSED(p_data);
  
      APPL_TRACE_DEBUG2("bta_av_st_rc_timer rc_handle:%d, use_rc: %d",
          p_scb->rc_handle, p_scb->use_rc);
@@@ -682,7 -681,6 +682,7 @@@ void bta_av_switch_role (tBTA_AV_SCB *p
  {
      tBTA_AV_RS_RES      switch_res = BTA_AV_RS_NONE;
      tBTA_AV_API_OPEN  *p_buf = &p_scb->q_info.open;
 +    UNUSED(p_data);
  
      APPL_TRACE_DEBUG1("bta_av_switch_role wait:x%x", p_scb->wait);
      if (p_scb->wait & BTA_AV_WAIT_ROLE_SW_RES_START)
@@@ -949,7 -947,6 +949,7 @@@ void bta_av_cleanup(tBTA_AV_SCB *p_scb
      tBTA_AV_CONN_CHG msg;
      int             xx;
      UINT8           role = BTA_AV_ROLE_AD_INT;
 +    UNUSED(p_data);
  
      APPL_TRACE_DEBUG0("bta_av_cleanup");
  
  *******************************************************************************/
  void bta_av_free_sdb(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
 +    UNUSED(p_data);
      utl_freebuf((void **) &p_scb->p_disc_db);
  }
  
@@@ -1021,7 -1017,6 +1021,7 @@@ void bta_av_config_ind (tBTA_AV_SCB *p_
      tAVDT_SEP_INFO       *p_info;
      tAVDT_CFG            *p_evt_cfg = &p_data->str_msg.cfg;
      UINT8   psc_mask = (p_evt_cfg->psc_mask | p_scb->cfg.psc_mask);
 +    UNUSED(p_data);
  
      p_scb->avdt_label = p_data->str_msg.msg.hdr.label;
      memcpy(p_scb->cfg.codec_info, p_evt_cfg->codec_info, AVDT_CODEC_SIZE);
  void bta_av_disconnect_req (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
      tBTA_AV_RCB *p_rcb;
 +    UNUSED(p_data);
 +
      APPL_TRACE_DEBUG1("bta_av_disconnect_req conn_lcb: 0x%x", bta_av_cb.conn_lcb);
  
      bta_sys_stop_timer(&bta_av_cb.sig_tmr);
@@@ -1353,8 -1346,6 +1353,8 @@@ void bta_av_security_cfm (tBTA_AV_SCB *
  *******************************************************************************/
  void bta_av_do_close (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
 +    UNUSED(p_data);
 +
      /* stop stream if started */
      if (p_scb->co_started)
      {
  *******************************************************************************/
  void bta_av_connect_req (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
 +    UNUSED(p_data);
 +
      utl_freebuf((void **) &p_scb->p_disc_db);
  
      if (p_scb->coll_mask & BTA_AV_COLL_INC_TMR)
@@@ -1581,8 -1570,6 +1581,8 @@@ void bta_av_save_caps(tBTA_AV_SCB *p_sc
  *******************************************************************************/
  void bta_av_set_use_rc (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
 +    UNUSED(p_data);
 +
      p_scb->use_rc = TRUE;
  }
  
  void bta_av_cco_close (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
      UINT16 mtu;
 +    UNUSED(p_data);
 +
      mtu = bta_av_chk_mtu(p_scb, BTA_AV_MAX_A2DP_MTU);
  
      p_scb->p_cos->close(p_scb->hndl, p_scb->codec_type, mtu);
@@@ -1757,8 -1742,6 +1757,8 @@@ void bta_av_setconfig_rej (tBTA_AV_SCB 
  *******************************************************************************/
  void bta_av_discover_req (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
 +    UNUSED(p_data);
 +
      /* send avdtp discover request */
  
      AVDT_DiscoverReq(p_scb->peer_addr, p_scb->sep_info, BTA_AV_NUM_SEPS, bta_av_dt_cback[p_scb->hdi]);
@@@ -2014,7 -1997,6 +2014,7 @@@ void bta_av_data_path (tBTA_AV_SCB *p_s
      BOOLEAN new_buf = FALSE;
      UINT8   m_pt = 0x60 | p_scb->codec_type;
      tAVDT_DATA_OPT_MASK     opt;
 +    UNUSED(p_data);
  
      if (!p_scb->cong)
      {
@@@ -2170,15 -2152,15 +2170,15 @@@ void bta_av_start_ok (tBTA_AV_SCB *p_sc
          p_scb->q_tag = BTA_AV_Q_TAG_START;
      }
  
-     if (p_scb->wait & BTA_AV_WAIT_ACP_CAPS_ON)
-     {
-         p_scb->wait |= BTA_AV_WAIT_ACP_CAPS_STARTED;
-     }
      if (p_scb->wait)
      {
-         APPL_TRACE_DEBUG2("wait:x%x q_tag:%d- not started", p_scb->wait, p_scb->q_tag);
-         return;
+         APPL_TRACE_ERROR2("wait:x%x q_tag:%d- not started", p_scb->wait, p_scb->q_tag);
+         /* Clear first bit of p_scb->wait and not to return from this point else
+          * HAL layer gets blocked. And if there is delay in Get Capability response as
+          * first bit of p_scb->wait is cleared hence it ensures bt_av_start_ok is not called
+          * again from bta_av_save_caps.
+         */
+         p_scb->wait &= ~BTA_AV_WAIT_ACP_CAPS_ON;
      }
  
      /* tell role manager to check M/S role */
  *******************************************************************************/
  void bta_av_start_failed (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
 +    UNUSED(p_data);
 +
      if(p_scb->started == FALSE && p_scb->co_started == FALSE)
      {
          bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
@@@ -2364,8 -2344,6 +2364,8 @@@ void bta_av_str_closed (tBTA_AV_SCB *p_
  *******************************************************************************/
  void bta_av_clr_cong (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
 +    UNUSED(p_data);
 +
      if(p_scb->co_started)
          p_scb->cong = FALSE;
  }
@@@ -2462,7 -2440,6 +2462,7 @@@ void bta_av_suspend_cfm (tBTA_AV_SCB *p
  void bta_av_rcfg_str_ok (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
      tBTA_AV_RECONFIG    evt;
 +    UNUSED(p_data);
  
      p_scb->l2c_cid      = AVDT_GetL2CapChannel(p_scb->avdt_handle);
      APPL_TRACE_DEBUG1("bta_av_rcfg_str_ok: l2c_cid: %d", p_scb->l2c_cid);
@@@ -2537,8 -2514,6 +2537,8 @@@ void bta_av_rcfg_failed (tBTA_AV_SCB *p
  *******************************************************************************/
  void bta_av_rcfg_connect (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
 +    UNUSED(p_data);
 +
      p_scb->cong    = FALSE;
      p_scb->num_recfg++;
      APPL_TRACE_DEBUG1("bta_av_rcfg_connect num_recfg: %d", p_scb->num_recfg);
  void bta_av_rcfg_discntd (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
      tBTA_AV_RECONFIG    evt;
 +    UNUSED(p_data);
  
      APPL_TRACE_DEBUG1("bta_av_rcfg_discntd num_recfg: %d", p_scb->num_recfg);
      p_scb->num_recfg++;
@@@ -2681,8 -2655,6 +2681,8 @@@ void bta_av_rcfg_cfm (tBTA_AV_SCB *p_sc
  *******************************************************************************/
  void bta_av_rcfg_open (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
 +    UNUSED(p_data);
 +
      APPL_TRACE_DEBUG1("bta_av_rcfg_open, num_disc_snks = %d", p_scb->num_disc_snks);
  
      if (p_scb->num_disc_snks == 0)
  *******************************************************************************/
  void bta_av_security_rej (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
  {
 +    UNUSED(p_data);
 +
      AVDT_SecurityRsp(p_scb->avdt_handle, p_scb->avdt_label, AVDT_ERR_BAD_STATE,
                       NULL, 0);
  }
@@@ -2741,7 -2711,7 +2741,7 @@@ void bta_av_chk_2nd_start (tBTA_AV_SCB 
      tBTA_AV_SCB *p_scbi;
      int i;
      BOOLEAN new_started = FALSE;
 -
 +    UNUSED(p_data);
  
      if ((p_scb->chnl == BTA_AV_CHNL_AUDIO) && (bta_av_cb.audio_open_cnt >= 2))
      {