OSDN Git Service

Proper state transition for disconnect during connection setup
authorAyan Ghosh <abghosh@codeaurora.org>
Fri, 8 Jul 2016 07:27:38 +0000 (12:57 +0530)
committerLinux Build Service Account <lnxbuild@localhost>
Wed, 24 Aug 2016 14:10:10 +0000 (08:10 -0600)
 - Ensure BTA AV correctly moves to init state when remote tears
   down the AV connection and ACL during incoming connection setup.
 - Properly set collision flags for handling AV connection collision.

CRs-Fixed: 1052672

Change-Id: I30cecf2cbf2cd4a21b243230e81ced80ae773db5

bta/av/bta_av_aact.c
bta/av/bta_av_ssm.c
btif/src/btif_av.c

index 05a916f..5a95dda 100644 (file)
@@ -1696,6 +1696,8 @@ void bta_av_connect_req(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
         /* SNK initiated L2C connection while SRC was doing SDP.    */
         /* Wait until timeout to check if SNK starts signalling.    */
         APPL_TRACE_EVENT("bta_av_connect_req: coll_mask = 0x%2X", p_scb->coll_mask);
+        p_scb->coll_mask |= BTA_AV_COLL_API_CALLED;
+        APPL_TRACE_EVENT("bta_av_connect_req: updated coll_mask = 0x%2X", p_scb->coll_mask);
         return;
     }
 
index e60a14d..71f508c 100644 (file)
@@ -186,7 +186,7 @@ static const UINT8 bta_av_sst_incoming[][BTA_AV_NUM_COLS] =
 /* STR_RECONFIG_CFM_EVT */  {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
 /* AVRC_TIMER_EVT */        {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
 /* AVDT_CONNECT_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
-/* AVDT_DISCONNECT_EVT */   {BTA_AV_CCO_CLOSE,      BTA_AV_DISCONNECT_REQ, BTA_AV_CLOSING_SST },
+/* AVDT_DISCONNECT_EVT */   {BTA_AV_CCO_CLOSE,      BTA_AV_CLEANUP,        BTA_AV_INIT_SST},
 /* ROLE_CHANGE_EVT*/        {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
 /* AVDT_DELAY_RPT_EVT */    {BTA_AV_DELAY_CO,       BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
 /* ACP_CONNECT_EVT */       {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
index b76fa97..5c8b77d 100644 (file)
@@ -3277,9 +3277,9 @@ void btif_av_move_idle(bt_bdaddr_t bd_addr)
     if (state == BTIF_AV_STATE_OPENING &&
             (memcmp (&bd_addr, &(btif_av_cb[index].peer_bda), sizeof(bd_addr)) == 0))
     {
-        BTIF_TRACE_DEBUG("Moving State from Opening to Idle due to ACL disconnect");
+        BTIF_TRACE_DEBUG("Moving BTIF State from Opening to Idle due to ACL disconnect");
         btif_report_connection_state(BTAV_CONNECTION_STATE_DISCONNECTED, &(btif_av_cb[index].peer_bda));
-
+        BTA_AvClose(btif_av_cb[index].bta_handle);
         btif_sm_change_state(btif_av_cb[index].sm_handle, BTIF_AV_STATE_IDLE);
         btif_queue_advance();
     }