diff --git a/components/bt/bluedroid/bta/av/bta_av_aact.c b/components/bt/bluedroid/bta/av/bta_av_aact.c index 06c5022b2..badcfce5a 100644 --- a/components/bt/bluedroid/bta/av/bta_av_aact.c +++ b/components/bt/bluedroid/bta/av/bta_av_aact.c @@ -143,6 +143,7 @@ const tBTA_AV_SACT bta_av_a2d_action[] = { bta_av_role_res, /* BTA_AV_ROLE_RES */ bta_av_delay_co, /* BTA_AV_DELAY_CO */ bta_av_open_at_inc, /* BTA_AV_OPEN_AT_INC */ + bta_av_open_fail_sdp, /* BTA_AV_OPEN_FAIL_SDP */ NULL }; @@ -1060,6 +1061,35 @@ void bta_av_free_sdb(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data) utl_freebuf((void **) &p_scb->p_disc_db); } +/******************************************************************************* +** +** Function bta_av_open_fail_sdp +** +** Description report BTA_AV_OPEN_EVT with service discovery failed status +** +** Returns void +** +*******************************************************************************/ +void bta_av_open_fail_sdp(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data) +{ + tBTA_AV_OPEN open; + + bdcpy(open.bd_addr, p_scb->peer_addr); + open.chnl = p_scb->chnl; + open.hndl = p_scb->hndl; + open.status = BTA_AV_FAIL_SDP; + + if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SRC ) { + open.sep = AVDT_TSEP_SNK; + } else if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK ) { + open.sep = AVDT_TSEP_SRC; + } + + (*bta_av_cb.p_cback)(BTA_AV_OPEN_EVT, (tBTA_AV *) &open); + + UNUSED(p_data); +} + /******************************************************************************* ** ** Function bta_av_config_ind diff --git a/components/bt/bluedroid/bta/av/bta_av_ssm.c b/components/bt/bluedroid/bta/av/bta_av_ssm.c index 45fa9242b..ad21e8763 100644 --- a/components/bt/bluedroid/bta/av/bta_av_ssm.c +++ b/components/bt/bluedroid/bta/av/bta_av_ssm.c @@ -94,6 +94,7 @@ enum { BTA_AV_ROLE_RES, BTA_AV_DELAY_CO, BTA_AV_OPEN_AT_INC, + BTA_AV_OPEN_FAIL_SDP, BTA_AV_NUM_SACTIONS }; @@ -199,7 +200,7 @@ static const UINT8 bta_av_sst_opening[][BTA_AV_NUM_COLS] = { /* CI_SETCONFIG_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST }, /* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST }, /* SDP_DISC_OK_EVT */ {BTA_AV_CONNECT_REQ, BTA_AV_SIGNORE, BTA_AV_OPENING_SST }, - /* SDP_DISC_FAIL_EVT */ {BTA_AV_CONNECT_REQ, BTA_AV_SIGNORE, BTA_AV_OPENING_SST }, + /* SDP_DISC_FAIL_EVT */ {BTA_AV_FREE_SDB, BTA_AV_OPEN_FAIL_SDP, BTA_AV_INIT_SST }, /* STR_DISC_OK_EVT */ {BTA_AV_DISC_RESULTS, BTA_AV_SIGNORE, BTA_AV_OPENING_SST }, /* STR_DISC_FAIL_EVT */ {BTA_AV_OPEN_FAILED, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST }, /* STR_GETCAP_OK_EVT */ {BTA_AV_GETCAP_RESULTS, BTA_AV_SIGNORE, BTA_AV_OPENING_SST }, diff --git a/components/bt/bluedroid/bta/av/include/bta_av_int.h b/components/bt/bluedroid/bta/av/include/bta_av_int.h index 7fc6643f9..16b3f38df 100644 --- a/components/bt/bluedroid/bta/av/include/bta_av_int.h +++ b/components/bt/bluedroid/bta/av/include/bta_av_int.h @@ -661,6 +661,7 @@ extern void bta_av_switch_role (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data); extern void bta_av_role_res (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data); extern void bta_av_delay_co (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data); extern void bta_av_open_at_inc (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data); +extern void bta_av_open_fail_sdp (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data); /* ssm action functions - vdp specific */ extern void bta_av_do_disc_vdp (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);