15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************
25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Copyright (C) 2004-2012 Broadcom Corporation
45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  you may not use this file except in compliance with the License.
75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  You may obtain a copy of the License at:
85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  See the License for the specific language governing permissions and
155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  limitations under the License.
165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/
185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************
205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  This is the stream state machine for the BTA advanced audio/video.
225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/
245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h"
265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if defined(BTA_AV_INCLUDED) && (BTA_AV_INCLUDED == TRUE)
275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h>
295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_av_co.h"
305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_av_int.h"
315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*****************************************************************************
335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Constants and types
345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*****************************************************************************/
355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state machine states */
375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum
385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_INIT_SST,
405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_INCOMING_SST,
415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_OPENING_SST,
425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_OPEN_SST,
435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_RCFG_SST,
445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_CLOSING_SST
455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state machine action enumeration list */
495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum
505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_DO_DISC,
525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_CLEANUP,
535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_FREE_SDB,
545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_CONFIG_IND,
555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_DISCONNECT_REQ,
565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SECURITY_REQ,
575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SECURITY_RSP,
585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SETCONFIG_RSP,
595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_ST_RC_TIMER,
605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_STR_OPENED,
615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SECURITY_IND,
625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SECURITY_CFM,
635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_DO_CLOSE,
645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_CONNECT_REQ,
655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SDP_FAILED,
665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_DISC_RESULTS,
675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_DISC_RES_AS_ACP,
685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_OPEN_FAILED,
695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_GETCAP_RESULTS,
705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SETCONFIG_REJ,
715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_DISCOVER_REQ,
725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_CONN_FAILED,
735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_DO_START,
745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_STR_STOPPED,
755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_RECONFIG,
765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_DATA_PATH,
775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_START_OK,
785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_START_FAILED,
795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_STR_CLOSED,
805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_CLR_CONG,
815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SUSPEND_CFM,
825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_RCFG_STR_OK,
835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_RCFG_FAILED,
845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_RCFG_CONNECT,
855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_RCFG_DISCNTD,
865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SUSPEND_CONT,
875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_RCFG_CFM,
885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_RCFG_OPEN,
895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SECURITY_REJ,
905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_OPEN_RC,
915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_CHK_2ND_START,
925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SAVE_CAPS,
935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SET_USE_RC,
945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_CCO_CLOSE,
955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_SWITCH_ROLE,
965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_ROLE_RES,
975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_DELAY_CO,
985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_OPEN_AT_INC,
995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AV_NUM_SACTIONS
1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_AV_SIGNORE       BTA_AV_NUM_SACTIONS
1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state table information */
1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* #define BTA_AV_SACTION_COL           0       position of actions */
1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_AV_SACTIONS              2       /* number of actions */
1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_AV_SNEXT_STATE           2       /* position of next state */
1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_AV_NUM_COLS              3       /* number of columns in state tables */
1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state table for init state */
1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const UINT8 bta_av_sst_init[][BTA_AV_NUM_COLS] =
1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Event                     Action 1               Action 2               Next state */
1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_OPEN_EVT */           {BTA_AV_DO_DISC,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_CLOSE_EVT */          {BTA_AV_CLEANUP,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_START_EVT */          {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_STOP_EVT */           {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_RECONFIG_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_PROTECT_REQ_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_PROTECT_RSP_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_RC_OPEN_EVT  */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SRC_DATA_READY_EVT */    {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* CI_SETCONFIG_OK_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP_DISC_OK_EVT */       {BTA_AV_FREE_SDB,       BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP_DISC_FAIL_EVT */     {BTA_AV_FREE_SDB,       BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_DISC_OK_EVT */       {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_DISC_FAIL_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_GETCAP_OK_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_GETCAP_FAIL_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_OPEN_OK_EVT */       {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_OPEN_FAIL_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_START_OK_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_START_FAIL_EVT */    {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_CLOSE_EVT */         {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_CONFIG_IND_EVT */    {BTA_AV_SETCONFIG_REJ,  BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SECURITY_IND_EVT */  {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SECURITY_CFM_EVT */  {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_WRITE_CFM_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SUSPEND_CFM_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_RECONFIG_CFM_EVT */  {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVRC_TIMER_EVT */        {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_CONNECT_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_DISCONNECT_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ROLE_CHANGE_EVT*/        {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_DELAY_RPT_EVT */    {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ACP_CONNECT_EVT */       {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST }
1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state table for incoming state */
1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const UINT8 bta_av_sst_incoming[][BTA_AV_NUM_COLS] =
1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Event                     Action 1               Action 2               Next state */
1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_OPEN_EVT */           {BTA_AV_OPEN_AT_INC,    BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_CLOSE_EVT */          {BTA_AV_CCO_CLOSE,      BTA_AV_DISCONNECT_REQ, BTA_AV_CLOSING_SST },
1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_START_EVT */          {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_STOP_EVT */           {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_RECONFIG_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_PROTECT_REQ_EVT */   {BTA_AV_SECURITY_REQ,   BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_PROTECT_RSP_EVT */   {BTA_AV_SECURITY_RSP,   BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_RC_OPEN_EVT  */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SRC_DATA_READY_EVT */    {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* CI_SETCONFIG_OK_EVT */   {BTA_AV_SETCONFIG_RSP,  BTA_AV_ST_RC_TIMER,    BTA_AV_INCOMING_SST },
165cc35559160745c60b42ae182002a59337d844d09Hemant Gupta/* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SETCONFIG_REJ,  BTA_AV_CLEANUP,        BTA_AV_INIT_SST },
1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP_DISC_OK_EVT */       {BTA_AV_FREE_SDB,       BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP_DISC_FAIL_EVT */     {BTA_AV_FREE_SDB,       BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_DISC_OK_EVT */       {BTA_AV_DISC_RES_AS_ACP,BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_DISC_FAIL_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_GETCAP_OK_EVT */     {BTA_AV_SAVE_CAPS,      BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_GETCAP_FAIL_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_OPEN_OK_EVT */       {BTA_AV_STR_OPENED,     BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_OPEN_FAIL_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_START_OK_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_START_FAIL_EVT */    {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_CLOSE_EVT */         {BTA_AV_CCO_CLOSE,      BTA_AV_CLEANUP,        BTA_AV_INIT_SST },
1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_CONFIG_IND_EVT */    {BTA_AV_CONFIG_IND,     BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SECURITY_IND_EVT */  {BTA_AV_SECURITY_IND,   BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SECURITY_CFM_EVT */  {BTA_AV_SECURITY_CFM,   BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_WRITE_CFM_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SUSPEND_CFM_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_RECONFIG_CFM_EVT */  {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVRC_TIMER_EVT */        {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_CONNECT_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_DISCONNECT_EVT */   {BTA_AV_CCO_CLOSE,      BTA_AV_CLEANUP,        BTA_AV_INIT_SST },
1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ROLE_CHANGE_EVT*/        {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_DELAY_RPT_EVT */    {BTA_AV_DELAY_CO,       BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ACP_CONNECT_EVT */       {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST }
1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state table for opening state */
1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const UINT8 bta_av_sst_opening[][BTA_AV_NUM_COLS] =
1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Event                     Action 1               Action 2               Next state */
1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_OPEN_EVT */           {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_CLOSE_EVT */          {BTA_AV_DO_CLOSE,       BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_START_EVT */          {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_STOP_EVT */           {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_RECONFIG_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_PROTECT_REQ_EVT */   {BTA_AV_SECURITY_REQ,   BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_PROTECT_RSP_EVT */   {BTA_AV_SECURITY_RSP,   BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_RC_OPEN_EVT  */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SRC_DATA_READY_EVT */    {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* CI_SETCONFIG_OK_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP_DISC_OK_EVT */       {BTA_AV_CONNECT_REQ,    BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP_DISC_FAIL_EVT */     {BTA_AV_CONNECT_REQ,    BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_DISC_OK_EVT */       {BTA_AV_DISC_RESULTS,   BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_DISC_FAIL_EVT */     {BTA_AV_OPEN_FAILED,    BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_GETCAP_OK_EVT */     {BTA_AV_GETCAP_RESULTS, BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_GETCAP_FAIL_EVT */   {BTA_AV_OPEN_FAILED,    BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_OPEN_OK_EVT */       {BTA_AV_ST_RC_TIMER,    BTA_AV_STR_OPENED,     BTA_AV_OPEN_SST },
2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_OPEN_FAIL_EVT */     {BTA_AV_OPEN_FAILED,    BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_START_OK_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_START_FAIL_EVT */    {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_CLOSE_EVT */         {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_CONFIG_IND_EVT */    {BTA_AV_CONFIG_IND,     BTA_AV_SIGNORE,        BTA_AV_INCOMING_SST },
2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SECURITY_IND_EVT */  {BTA_AV_SECURITY_IND,   BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SECURITY_CFM_EVT */  {BTA_AV_SECURITY_CFM,   BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_WRITE_CFM_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SUSPEND_CFM_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_RECONFIG_CFM_EVT */  {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVRC_TIMER_EVT */        {BTA_AV_SWITCH_ROLE,    BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_CONNECT_EVT */      {BTA_AV_DISCOVER_REQ,   BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_DISCONNECT_EVT */   {BTA_AV_CONN_FAILED,    BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ROLE_CHANGE_EVT*/        {BTA_AV_ROLE_RES,       BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_DELAY_RPT_EVT */    {BTA_AV_DELAY_CO,       BTA_AV_SIGNORE,        BTA_AV_OPENING_SST },
2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ACP_CONNECT_EVT */       {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPENING_SST }
2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state table for open state */
2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const UINT8 bta_av_sst_open[][BTA_AV_NUM_COLS] =
2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Event                     Action 1               Action 2               Next state */
2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_OPEN_EVT */           {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_CLOSE_EVT */          {BTA_AV_DO_CLOSE,       BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_START_EVT */          {BTA_AV_DO_START,       BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_STOP_EVT */           {BTA_AV_STR_STOPPED,    BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_RECONFIG_EVT */      {BTA_AV_RECONFIG,       BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_PROTECT_REQ_EVT */   {BTA_AV_SECURITY_REQ,   BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_PROTECT_RSP_EVT */   {BTA_AV_SECURITY_RSP,   BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_RC_OPEN_EVT  */      {BTA_AV_SET_USE_RC,     BTA_AV_OPEN_RC,        BTA_AV_OPEN_SST },
2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SRC_DATA_READY_EVT */    {BTA_AV_DATA_PATH,      BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* CI_SETCONFIG_OK_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP_DISC_OK_EVT */       {BTA_AV_FREE_SDB,       BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP_DISC_FAIL_EVT */     {BTA_AV_FREE_SDB,       BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_DISC_OK_EVT */       {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_DISC_FAIL_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_GETCAP_OK_EVT */     {BTA_AV_SAVE_CAPS,      BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_GETCAP_FAIL_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_OPEN_OK_EVT */       {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_OPEN_FAIL_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_START_OK_EVT */      {BTA_AV_START_OK,       BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_START_FAIL_EVT */    {BTA_AV_START_FAILED,   BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_CLOSE_EVT */         {BTA_AV_STR_CLOSED,     BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_CONFIG_IND_EVT */    {BTA_AV_SETCONFIG_REJ,  BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SECURITY_IND_EVT */  {BTA_AV_SECURITY_IND,   BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SECURITY_CFM_EVT */  {BTA_AV_SECURITY_CFM,   BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_WRITE_CFM_EVT */     {BTA_AV_CLR_CONG,       BTA_AV_DATA_PATH,      BTA_AV_OPEN_SST },
2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SUSPEND_CFM_EVT */   {BTA_AV_SUSPEND_CFM,    BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_RECONFIG_CFM_EVT */  {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVRC_TIMER_EVT */        {BTA_AV_OPEN_RC,        BTA_AV_CHK_2ND_START,  BTA_AV_OPEN_SST },
2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_CONNECT_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_DISCONNECT_EVT */   {BTA_AV_STR_CLOSED,     BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ROLE_CHANGE_EVT*/        {BTA_AV_ROLE_RES,       BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_DELAY_RPT_EVT */    {BTA_AV_DELAY_CO,       BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ACP_CONNECT_EVT */       {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_OPEN_SST }
2695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state table for reconfig state */
2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const UINT8 bta_av_sst_rcfg[][BTA_AV_NUM_COLS] =
2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
2745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Event                     Action 1               Action 2               Next state */
2755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_OPEN_EVT */           {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_CLOSE_EVT */          {BTA_AV_DISCONNECT_REQ, BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_START_EVT */          {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_STOP_EVT */           {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_RECONFIG_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_PROTECT_REQ_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_PROTECT_RSP_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_RC_OPEN_EVT  */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SRC_DATA_READY_EVT */    {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* CI_SETCONFIG_OK_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP_DISC_OK_EVT */       {BTA_AV_FREE_SDB,       BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP_DISC_FAIL_EVT */     {BTA_AV_FREE_SDB,       BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_DISC_OK_EVT */       {BTA_AV_DISC_RESULTS,   BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_DISC_FAIL_EVT */     {BTA_AV_STR_CLOSED,     BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_GETCAP_OK_EVT */     {BTA_AV_GETCAP_RESULTS, BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_GETCAP_FAIL_EVT */   {BTA_AV_STR_CLOSED,     BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_OPEN_OK_EVT */       {BTA_AV_RCFG_STR_OK,    BTA_AV_SIGNORE,        BTA_AV_OPEN_SST },
2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_OPEN_FAIL_EVT */     {BTA_AV_RCFG_FAILED,    BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_START_OK_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_START_FAIL_EVT */    {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_CLOSE_EVT */         {BTA_AV_RCFG_CONNECT,   BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_CONFIG_IND_EVT */    {BTA_AV_SETCONFIG_REJ,  BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SECURITY_IND_EVT */  {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SECURITY_CFM_EVT */  {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_WRITE_CFM_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SUSPEND_CFM_EVT */   {BTA_AV_SUSPEND_CONT,   BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_RECONFIG_CFM_EVT */  {BTA_AV_RCFG_CFM,       BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVRC_TIMER_EVT */        {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_CONNECT_EVT */      {BTA_AV_RCFG_OPEN,      BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
3055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_DISCONNECT_EVT */   {BTA_AV_RCFG_DISCNTD,   BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ROLE_CHANGE_EVT*/        {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_DELAY_RPT_EVT */    {BTA_AV_DELAY_CO,       BTA_AV_SIGNORE,        BTA_AV_RCFG_SST },
3085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ACP_CONNECT_EVT */       {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_RCFG_SST }
3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
3105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state table for closing state */
3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const UINT8 bta_av_sst_closing[][BTA_AV_NUM_COLS] =
3135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
3145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Event                     Action 1               Action 2               Next state */
3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_OPEN_EVT */           {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_CLOSE_EVT */          {BTA_AV_DISCONNECT_REQ, BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_START_EVT */          {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AP_STOP_EVT */           {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_RECONFIG_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_PROTECT_REQ_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_PROTECT_RSP_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API_RC_OPEN_EVT  */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SRC_DATA_READY_EVT */    {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* CI_SETCONFIG_OK_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP_DISC_OK_EVT */       {BTA_AV_SDP_FAILED,     BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
3275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP_DISC_FAIL_EVT */     {BTA_AV_SDP_FAILED,     BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
3285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_DISC_OK_EVT */       {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_DISC_FAIL_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_GETCAP_OK_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_GETCAP_FAIL_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_OPEN_OK_EVT */       {BTA_AV_DO_CLOSE,       BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_OPEN_FAIL_EVT */     {BTA_AV_DISCONNECT_REQ, BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_START_OK_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_START_FAIL_EVT */    {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_CLOSE_EVT */         {BTA_AV_DISCONNECT_REQ, BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_CONFIG_IND_EVT */    {BTA_AV_SETCONFIG_REJ,  BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SECURITY_IND_EVT */  {BTA_AV_SECURITY_REJ,   BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SECURITY_CFM_EVT */  {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_WRITE_CFM_EVT */     {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_SUSPEND_CFM_EVT */   {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* STR_RECONFIG_CFM_EVT */  {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVRC_TIMER_EVT */        {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_CONNECT_EVT */      {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_DISCONNECT_EVT */   {BTA_AV_STR_CLOSED,     BTA_AV_SIGNORE,        BTA_AV_INIT_SST },
3465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ROLE_CHANGE_EVT*/        {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AVDT_DELAY_RPT_EVT */    {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST },
3485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ACP_CONNECT_EVT */       {BTA_AV_SIGNORE,        BTA_AV_SIGNORE,        BTA_AV_CLOSING_SST }
3495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
3505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* type for state table */
3525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef const UINT8 (*tBTA_AV_SST_TBL)[BTA_AV_NUM_COLS];
3535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state table */
3555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const tBTA_AV_SST_TBL bta_av_sst_tbl[] =
3565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
3575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_av_sst_init,
3585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_av_sst_incoming,
3595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_av_sst_opening,
3605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_av_sst_open,
3615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_av_sst_rcfg,
3625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_av_sst_closing
3635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
3645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
3685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic char *bta_av_sst_code(UINT8 state);
3695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif
3705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
3725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         bta_av_is_rcfg_sst
3745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Check if stream state machine is in reconfig state.
3765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          TRUE if stream state machine is in reconfig state.
3795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
3815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_av_is_rcfg_sst (tBTA_AV_SCB *p_scb)
3825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
3835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BOOLEAN is_rcfg_sst = FALSE;
3845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if (p_scb != NULL)
3865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
3875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if (p_scb->state == BTA_AV_RCFG_SST)
3885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            is_rcfg_sst = TRUE;
3895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
3905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    return is_rcfg_sst;
3925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
3935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
3955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         bta_av_ssm_execute
3975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Stream state machine event handling function for AV
3995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
4025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
4045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_av_ssm_execute(tBTA_AV_SCB *p_scb, UINT16 event, tBTA_AV_DATA *p_data)
4055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
4065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_SST_TBL     state_table;
4075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT8               action;
4085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    int                 i, xx;
4095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if(p_scb == NULL)
4115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
4125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        /* this stream is not registered */
413e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati        APPL_TRACE_EVENT("AV channel not registered");
4145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        return;
4155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
4165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* In case incoming connection is for VDP, we need to swap scb.        */
4185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* When ACP_CONNECT_EVT was received, we put first available scb to    */
4195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* to Incoming state. Later, when STR_CONFIG_IND_EVT is coming, we     */
4205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* know if it is A2DP or VDP.                                          */
4215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_scb->state == BTA_AV_INIT_SST) && (event == BTA_AV_STR_CONFIG_IND_EVT))
4225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
4235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        for (xx = 0; xx < BTA_AV_NUM_STRS; xx++)
4245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
4255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            if (bta_av_cb.p_scb[xx])
4265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            {
4275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                if (bta_av_cb.p_scb[xx]->state == BTA_AV_INCOMING_SST)
4285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                {
4295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                    bta_av_cb.p_scb[xx]->state = BTA_AV_INIT_SST;
4305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                    bta_av_cb.p_scb[xx]->coll_mask = 0;
4315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                    p_scb->state = BTA_AV_INCOMING_SST;
4325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                    break;
4335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                }
4345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            }
4355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
4365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
4375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
439e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati    APPL_TRACE_VERBOSE("AV Sevent(0x%x)=0x%x(%s) state=%d(%s)",
4405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_scb->hndl, event, bta_av_evt_code(event), p_scb->state, bta_av_sst_code(p_scb->state));
4415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else
442e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati    APPL_TRACE_VERBOSE("AV Sevent=0x%x state=%d", event, p_scb->state);
4435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif
4445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* look up the state table for the current state */
4465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    state_table = bta_av_sst_tbl[p_scb->state];
4475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    event -= BTA_AV_FIRST_SSM_EVT;
4495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* set next state */
4515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    p_scb->state = state_table[event][BTA_AV_SNEXT_STATE];
4525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* execute action functions */
4545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    for(i=0; i< BTA_AV_SACTIONS; i++)
4555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
4565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if ((action = state_table[event][i]) != BTA_AV_SIGNORE)
4575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
4585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            (*p_scb->p_act_tbl[action])(p_scb, p_data);
4595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
4605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        else
4615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            break;
4625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
4635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
4655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
4675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         bta_av_is_scb_opening
4695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Returns TRUE is scb is in opening state.
4715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          TRUE if scb is in opening state.
4745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
4765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_av_is_scb_opening (tBTA_AV_SCB *p_scb)
4775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
4785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BOOLEAN is_opening = FALSE;
4795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if (p_scb)
4815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
4825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if (p_scb->state == BTA_AV_OPENING_SST)
4835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            is_opening = TRUE;
4845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
4855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    return is_opening;
4875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
4885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
4905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         bta_av_is_scb_incoming
4925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Returns TRUE is scb is in incoming state.
4945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          TRUE if scb is in incoming state.
4975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
4995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_av_is_scb_incoming (tBTA_AV_SCB *p_scb)
5005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
5015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BOOLEAN is_incoming = FALSE;
5025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if (p_scb)
5045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
5055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if (p_scb->state == BTA_AV_INCOMING_SST)
5065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            is_incoming = TRUE;
5075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
5085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    return is_incoming;
5105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
5135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         bta_av_set_scb_sst_init
5155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Set SST state to INIT.
5175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  Use this function to change SST outside of state machine.
5185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          None
5205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
5225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_av_set_scb_sst_init (tBTA_AV_SCB *p_scb)
5235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
5245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if (p_scb)
5255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
5265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_scb->state = BTA_AV_INIT_SST;
5275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
5285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
5315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         bta_av_is_scb_init
5335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Returns TRUE is scb is in init state.
5355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          TRUE if scb is in incoming state.
5385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
5405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_av_is_scb_init (tBTA_AV_SCB *p_scb)
5415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
5425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BOOLEAN is_init = FALSE;
5435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if (p_scb)
5455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
5465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if (p_scb->state == BTA_AV_INIT_SST)
5475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            is_init = TRUE;
5485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
5495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    return is_init;
5515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
5545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         bta_av_set_scb_sst_incoming
5565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Set SST state to incoming.
5585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  Use this function to change SST outside of state machine.
5595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          None
5615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
5635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_av_set_scb_sst_incoming (tBTA_AV_SCB *p_scb)
5645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
5655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if (p_scb)
5665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
5675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_scb->state = BTA_AV_INCOMING_SST;
5685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
5695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*****************************************************************************
5725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**  Debug Functions
5735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*****************************************************************************/
5745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
5755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
5765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         bta_av_sst_code
5785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description
5805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          char *
5825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
5845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic char *bta_av_sst_code(UINT8 state)
5855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
5865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    switch(state)
5875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
5885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    case BTA_AV_INIT_SST: return "INIT";
5895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    case BTA_AV_INCOMING_SST: return "INCOMING";
5905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    case BTA_AV_OPENING_SST: return "OPENING";
5915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    case BTA_AV_OPEN_SST: return "OPEN";
5925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    case BTA_AV_RCFG_SST: return "RCFG";
5935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    case BTA_AV_CLOSING_SST: return "CLOSING";
5945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    default:             return "unknown";
5955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
5965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif
5995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTA_AV_INCLUDED */
600