mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
component/bt: bug fix for hci data packet reassembler
1. bugfix for hci data packet reassembler 2. create new file btif_avk.c originated from btif_av.c to eliminate the avrc related logic
This commit is contained in:
parent
7b659b2741
commit
ea75dc7064
@ -368,7 +368,7 @@ static tBTA_AV_SCB * bta_av_alloc_scb(tBTA_AV_CHNL chnl)
|
|||||||
}
|
}
|
||||||
else if(chnl != BTA_AV_CHNL_AUDIO)
|
else if(chnl != BTA_AV_CHNL_AUDIO)
|
||||||
{
|
{
|
||||||
APPL_TRACE_ERROR("bad channel: %d", chnl);
|
APPL_TRACE_ERROR("bad channel: %d\n", chnl);
|
||||||
sts = BTA_AV_FAIL;
|
sts = BTA_AV_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -438,7 +438,7 @@ void bta_av_conn_cback(UINT8 handle, BD_ADDR bd_addr, UINT8 event, tAVDT_CTRL *p
|
|||||||
#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
|
#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
|
||||||
else if (AVDT_CONNECT_IND_EVT == event)
|
else if (AVDT_CONNECT_IND_EVT == event)
|
||||||
{
|
{
|
||||||
APPL_TRACE_DEBUG("CONN_IND is ACP:%d", p_data->hdr.err_param);
|
APPL_TRACE_DEBUG("CONN_IND is ACP:%d\n", p_data->hdr.err_param);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -456,10 +456,10 @@ void bta_av_conn_cback(UINT8 handle, BD_ADDR bd_addr, UINT8 event, tAVDT_CTRL *p
|
|||||||
#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
|
#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
|
||||||
if(p_scb)
|
if(p_scb)
|
||||||
{
|
{
|
||||||
APPL_TRACE_DEBUG("scb hndl x%x, role x%x", p_scb->hndl, p_scb->role);
|
APPL_TRACE_DEBUG("scb hndl x%x, role x%x\n", p_scb->hndl, p_scb->role);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
APPL_TRACE_DEBUG("conn_cback bd_addr:%02x-%02x-%02x-%02x-%02x-%02x",
|
APPL_TRACE_DEBUG("conn_cback bd_addr:%02x-%02x-%02x-%02x-%02x-%02x\n",
|
||||||
bd_addr[0], bd_addr[1],
|
bd_addr[0], bd_addr[1],
|
||||||
bd_addr[2], bd_addr[3],
|
bd_addr[2], bd_addr[3],
|
||||||
bd_addr[4], bd_addr[5]);
|
bd_addr[4], bd_addr[5]);
|
||||||
@ -505,7 +505,7 @@ static void bta_av_api_sink_enable(tBTA_AV_DATA *p_data)
|
|||||||
{
|
{
|
||||||
UINT16 activate_sink = 0;
|
UINT16 activate_sink = 0;
|
||||||
activate_sink = p_data->hdr.layer_specific;
|
activate_sink = p_data->hdr.layer_specific;
|
||||||
APPL_TRACE_DEBUG("bta_av_api_sink_enable %d ", activate_sink)
|
APPL_TRACE_DEBUG("bta_av_api_sink_enable %d \n", activate_sink)
|
||||||
char p_service_name[BTA_SERVICE_NAME_LEN+1];
|
char p_service_name[BTA_SERVICE_NAME_LEN+1];
|
||||||
BCM_STRNCPY_S(p_service_name, sizeof(p_service_name),
|
BCM_STRNCPY_S(p_service_name, sizeof(p_service_name),
|
||||||
BTIF_AVK_SERVICE_NAME, BTA_SERVICE_NAME_LEN);
|
BTIF_AVK_SERVICE_NAME, BTA_SERVICE_NAME_LEN);
|
||||||
@ -605,7 +605,7 @@ static void bta_av_api_register(tBTA_AV_DATA *p_data)
|
|||||||
(UINT8)(bta_av_cb.sec_mask & (~BTA_SEC_AUTHORIZE)), BTA_ID_AV);
|
(UINT8)(bta_av_cb.sec_mask & (~BTA_SEC_AUTHORIZE)), BTA_ID_AV);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bta_ar_reg_avrc(UUID_SERVCLASS_AV_REM_CTRL_TARGET, "AV Remote Control Target", NULL,
|
bta_ar_reg_avrc(UUID_SERVCLASS_AV_REM_CTRL_TARGET, "AV Remote Control Target\n", NULL,
|
||||||
p_bta_av_cfg->avrc_tg_cat, BTA_ID_AV);
|
p_bta_av_cfg->avrc_tg_cat, BTA_ID_AV);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -631,7 +631,7 @@ static void bta_av_api_register(tBTA_AV_DATA *p_data)
|
|||||||
*/
|
*/
|
||||||
cs.nsc_mask = AVDT_NSC_RECONFIG |
|
cs.nsc_mask = AVDT_NSC_RECONFIG |
|
||||||
((bta_av_cb.features & BTA_AV_FEAT_PROTECT) ? 0 : AVDT_NSC_SECURITY);
|
((bta_av_cb.features & BTA_AV_FEAT_PROTECT) ? 0 : AVDT_NSC_SECURITY);
|
||||||
APPL_TRACE_DEBUG("nsc_mask: 0x%x", cs.nsc_mask);
|
APPL_TRACE_DEBUG("nsc_mask: 0x%x\n", cs.nsc_mask);
|
||||||
|
|
||||||
if (p_data->api_reg.p_service_name[0] == 0)
|
if (p_data->api_reg.p_service_name[0] == 0)
|
||||||
{
|
{
|
||||||
@ -683,7 +683,7 @@ static void bta_av_api_register(tBTA_AV_DATA *p_data)
|
|||||||
cs.tsep = AVDT_TSEP_SNK;
|
cs.tsep = AVDT_TSEP_SNK;
|
||||||
cs.p_data_cback = bta_av_stream_data_cback;
|
cs.p_data_cback = bta_av_stream_data_cback;
|
||||||
}
|
}
|
||||||
APPL_TRACE_DEBUG(" SEP Type = %d",cs.tsep);
|
APPL_TRACE_DEBUG(" SEP Type = %d\n",cs.tsep);
|
||||||
#endif
|
#endif
|
||||||
if(AVDT_CreateStream(&p_scb->seps[index].av_handle, &cs) == AVDT_SUCCESS)
|
if(AVDT_CreateStream(&p_scb->seps[index].av_handle, &cs) == AVDT_SUCCESS)
|
||||||
{
|
{
|
||||||
@ -697,7 +697,7 @@ static void bta_av_api_register(tBTA_AV_DATA *p_data)
|
|||||||
p_scb->seps[index].p_app_data_cback = NULL; /* In case of A2DP SOURCE we don't need a callback to handle media packets */
|
p_scb->seps[index].p_app_data_cback = NULL; /* In case of A2DP SOURCE we don't need a callback to handle media packets */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
APPL_TRACE_DEBUG("audio[%d] av_handle: %d codec_type: %d",
|
APPL_TRACE_DEBUG("audio[%d] av_handle: %d codec_type: %d\n",
|
||||||
index, p_scb->seps[index].av_handle, p_scb->seps[index].codec_type);
|
index, p_scb->seps[index].av_handle, p_scb->seps[index].codec_type);
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
@ -747,7 +747,7 @@ static void bta_av_api_register(tBTA_AV_DATA *p_data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
bta_av_cb.reg_audio |= BTA_AV_HNDL_TO_MSK(p_scb->hdi);
|
bta_av_cb.reg_audio |= BTA_AV_HNDL_TO_MSK(p_scb->hdi);
|
||||||
APPL_TRACE_DEBUG("reg_audio: 0x%x",bta_av_cb.reg_audio);
|
APPL_TRACE_DEBUG("reg_audio: 0x%x\n",bta_av_cb.reg_audio);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -911,7 +911,7 @@ void bta_av_restore_switch (void)
|
|||||||
int i;
|
int i;
|
||||||
UINT8 mask;
|
UINT8 mask;
|
||||||
|
|
||||||
APPL_TRACE_DEBUG("reg_audio: 0x%x",bta_av_cb.reg_audio);
|
APPL_TRACE_DEBUG("reg_audio: 0x%x\n",bta_av_cb.reg_audio);
|
||||||
for(i=0; i<BTA_AV_NUM_STRS; i++)
|
for(i=0; i<BTA_AV_NUM_STRS; i++)
|
||||||
{
|
{
|
||||||
mask = BTA_AV_HNDL_TO_MSK(i);
|
mask = BTA_AV_HNDL_TO_MSK(i);
|
||||||
@ -944,7 +944,7 @@ static void bta_av_sys_rs_cback (tBTA_SYS_CONN_STATUS status,UINT8 id, UINT8 app
|
|||||||
UINT8 peer_idx = 0;
|
UINT8 peer_idx = 0;
|
||||||
UNUSED(status);
|
UNUSED(status);
|
||||||
|
|
||||||
APPL_TRACE_DEBUG("bta_av_sys_rs_cback: %d", bta_av_cb.rs_idx);
|
APPL_TRACE_DEBUG("bta_av_sys_rs_cback: %d\n", bta_av_cb.rs_idx);
|
||||||
for(i=0; i<BTA_AV_NUM_STRS; i++)
|
for(i=0; i<BTA_AV_NUM_STRS; i++)
|
||||||
{
|
{
|
||||||
/* loop through all the SCBs to find matching peer addresses and report the role change event */
|
/* loop through all the SCBs to find matching peer addresses and report the role change event */
|
||||||
@ -953,7 +953,7 @@ static void bta_av_sys_rs_cback (tBTA_SYS_CONN_STATUS status,UINT8 id, UINT8 app
|
|||||||
if (p_scb && (bdcmp (peer_addr, p_scb->peer_addr) == 0) &&
|
if (p_scb && (bdcmp (peer_addr, p_scb->peer_addr) == 0) &&
|
||||||
(p_buf = (tBTA_AV_ROLE_RES *) GKI_getbuf(sizeof(tBTA_AV_ROLE_RES))) != NULL)
|
(p_buf = (tBTA_AV_ROLE_RES *) GKI_getbuf(sizeof(tBTA_AV_ROLE_RES))) != NULL)
|
||||||
{
|
{
|
||||||
APPL_TRACE_DEBUG("new_role:%d, hci_status:x%x hndl: x%x", id, app_id, p_scb->hndl);
|
APPL_TRACE_DEBUG("new_role:%d, hci_status:x%x hndl: x%x\n", id, app_id, p_scb->hndl);
|
||||||
/*
|
/*
|
||||||
if ((id != BTM_ROLE_MASTER) && (app_id != HCI_SUCCESS))
|
if ((id != BTM_ROLE_MASTER) && (app_id != HCI_SUCCESS))
|
||||||
{
|
{
|
||||||
@ -988,7 +988,7 @@ static void bta_av_sys_rs_cback (tBTA_SYS_CONN_STATUS status,UINT8 id, UINT8 app
|
|||||||
}
|
}
|
||||||
if (p_scb && p_scb->q_tag == BTA_AV_Q_TAG_OPEN)
|
if (p_scb && p_scb->q_tag == BTA_AV_Q_TAG_OPEN)
|
||||||
{
|
{
|
||||||
APPL_TRACE_DEBUG ("bta_av_sys_rs_cback: rs_idx(%d), hndl:x%x q_tag: %d",
|
APPL_TRACE_DEBUG ("bta_av_sys_rs_cback: rs_idx(%d), hndl:x%x q_tag: %d\n",
|
||||||
bta_av_cb.rs_idx, p_scb->hndl, p_scb->q_tag);
|
bta_av_cb.rs_idx, p_scb->hndl, p_scb->q_tag);
|
||||||
|
|
||||||
if(HCI_SUCCESS == app_id || HCI_ERR_NO_CONNECTION == app_id)
|
if(HCI_SUCCESS == app_id || HCI_ERR_NO_CONNECTION == app_id)
|
||||||
@ -1024,7 +1024,7 @@ static void bta_av_sco_chg_cback(tBTA_SYS_CONN_STATUS status, UINT8 id, UINT8
|
|||||||
UNUSED(app_id);
|
UNUSED(app_id);
|
||||||
UNUSED(peer_addr);
|
UNUSED(peer_addr);
|
||||||
|
|
||||||
APPL_TRACE_DEBUG("bta_av_sco_chg_cback:%d status:%d", id, status);
|
APPL_TRACE_DEBUG("bta_av_sco_chg_cback:%d status:%d\n", id, status);
|
||||||
if(id)
|
if(id)
|
||||||
{
|
{
|
||||||
bta_av_cb.sco_occupied = TRUE;
|
bta_av_cb.sco_occupied = TRUE;
|
||||||
@ -1036,7 +1036,7 @@ static void bta_av_sco_chg_cback(tBTA_SYS_CONN_STATUS status, UINT8 id, UINT8
|
|||||||
|
|
||||||
if( p_scb && p_scb->co_started && (p_scb->sco_suspend == FALSE))
|
if( p_scb && p_scb->co_started && (p_scb->sco_suspend == FALSE))
|
||||||
{
|
{
|
||||||
APPL_TRACE_DEBUG("suspending scb:%d", i);
|
APPL_TRACE_DEBUG("suspending scb:%d\n", i);
|
||||||
/* scb is used and started, not suspended automatically */
|
/* scb is used and started, not suspended automatically */
|
||||||
p_scb->sco_suspend = TRUE;
|
p_scb->sco_suspend = TRUE;
|
||||||
stop.flush = FALSE;
|
stop.flush = FALSE;
|
||||||
@ -1055,7 +1055,7 @@ static void bta_av_sco_chg_cback(tBTA_SYS_CONN_STATUS status, UINT8 id, UINT8
|
|||||||
|
|
||||||
if( p_scb && p_scb->sco_suspend ) /* scb is used and suspended for SCO */
|
if( p_scb && p_scb->sco_suspend ) /* scb is used and suspended for SCO */
|
||||||
{
|
{
|
||||||
APPL_TRACE_DEBUG("starting scb:%d", i);
|
APPL_TRACE_DEBUG("starting scb:%d\n", i);
|
||||||
bta_av_ssm_execute(p_scb, BTA_AV_AP_START_EVT, NULL);
|
bta_av_ssm_execute(p_scb, BTA_AV_AP_START_EVT, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1128,7 +1128,7 @@ BOOLEAN bta_av_link_role_ok(tBTA_AV_SCB *p_scb, UINT8 bits)
|
|||||||
|
|
||||||
if (BTM_GetRole(p_scb->peer_addr, &role) == BTM_SUCCESS)
|
if (BTM_GetRole(p_scb->peer_addr, &role) == BTM_SUCCESS)
|
||||||
{
|
{
|
||||||
LOG_INFO("%s hndl:x%x role:%d conn_audio:x%x bits:%d features:x%x",
|
LOG_INFO("%s hndl:x%x role:%d conn_audio:x%x bits:%d features:x%x\n",
|
||||||
__func__, p_scb->hndl, role, bta_av_cb.conn_audio, bits,
|
__func__, p_scb->hndl, role, bta_av_cb.conn_audio, bits,
|
||||||
bta_av_cb.features);
|
bta_av_cb.features);
|
||||||
if (BTM_ROLE_MASTER != role && (A2D_BitsSet(bta_av_cb.conn_audio) > bits || (bta_av_cb.features & BTA_AV_FEAT_MASTER)))
|
if (BTM_ROLE_MASTER != role && (A2D_BitsSet(bta_av_cb.conn_audio) > bits || (bta_av_cb.features & BTA_AV_FEAT_MASTER)))
|
||||||
@ -1179,7 +1179,7 @@ UINT16 bta_av_chk_mtu(tBTA_AV_SCB *p_scb, UINT16 mtu)
|
|||||||
if((p_scb != p_scbi) && p_scbi && (p_scbi->chnl == BTA_AV_CHNL_AUDIO) )
|
if((p_scb != p_scbi) && p_scbi && (p_scbi->chnl == BTA_AV_CHNL_AUDIO) )
|
||||||
{
|
{
|
||||||
mask = BTA_AV_HNDL_TO_MSK(i);
|
mask = BTA_AV_HNDL_TO_MSK(i);
|
||||||
APPL_TRACE_DEBUG("[%d] mtu: %d, mask:0x%x",
|
APPL_TRACE_DEBUG("[%d] mtu: %d, mask:0x%x\n",
|
||||||
i, p_scbi->stream_mtu, mask);
|
i, p_scbi->stream_mtu, mask);
|
||||||
if(bta_av_cb.conn_audio & mask)
|
if(bta_av_cb.conn_audio & mask)
|
||||||
{
|
{
|
||||||
@ -1189,7 +1189,7 @@ UINT16 bta_av_chk_mtu(tBTA_AV_SCB *p_scb, UINT16 mtu)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
APPL_TRACE_DEBUG("bta_av_chk_mtu audio count:%d, conn_audio:0x%x, ret:%d",
|
APPL_TRACE_DEBUG("bta_av_chk_mtu audio count:%d, conn_audio:0x%x, ret:%d\n",
|
||||||
bta_av_cb.audio_open_cnt, bta_av_cb.conn_audio, ret_mtu);
|
bta_av_cb.audio_open_cnt, bta_av_cb.conn_audio, ret_mtu);
|
||||||
}
|
}
|
||||||
return ret_mtu;
|
return ret_mtu;
|
||||||
@ -1262,10 +1262,10 @@ void bta_av_sm_execute(tBTA_AV_CB *p_cb, UINT16 event, tBTA_AV_DATA *p_data)
|
|||||||
UINT8 action;
|
UINT8 action;
|
||||||
|
|
||||||
#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
|
#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
|
||||||
APPL_TRACE_EVENT("AV event=0x%x(%s) state=%d(%s)",
|
APPL_TRACE_EVENT("AV event=0x%x(%s) state=%d(%s)\n",
|
||||||
event, bta_av_evt_code(event), p_cb->state, bta_av_st_code(p_cb->state));
|
event, bta_av_evt_code(event), p_cb->state, bta_av_st_code(p_cb->state));
|
||||||
#else
|
#else
|
||||||
APPL_TRACE_EVENT("AV event=0x%x state=%d", event, p_cb->state);
|
APPL_TRACE_EVENT("AV event=0x%x state=%d\n", event, p_cb->state);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* look up the state table for the current state */
|
/* look up the state table for the current state */
|
||||||
@ -1275,7 +1275,7 @@ void bta_av_sm_execute(tBTA_AV_CB *p_cb, UINT16 event, tBTA_AV_DATA *p_data)
|
|||||||
|
|
||||||
/* set next state */
|
/* set next state */
|
||||||
p_cb->state = state_table[event][BTA_AV_NEXT_STATE];
|
p_cb->state = state_table[event][BTA_AV_NEXT_STATE];
|
||||||
APPL_TRACE_EVENT("next state=%d", p_cb->state);
|
APPL_TRACE_EVENT("next state=%d\n", p_cb->state);
|
||||||
|
|
||||||
/* execute action functions */
|
/* execute action functions */
|
||||||
if ((action = state_table[event][BTA_AV_ACTION_COL]) != BTA_AV_IGNORE)
|
if ((action = state_table[event][BTA_AV_ACTION_COL]) != BTA_AV_IGNORE)
|
||||||
@ -1308,9 +1308,9 @@ BOOLEAN bta_av_hdl_event(BT_HDR *p_msg)
|
|||||||
if(event >= first_event)
|
if(event >= first_event)
|
||||||
{
|
{
|
||||||
#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
|
#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
|
||||||
APPL_TRACE_VERBOSE("AV nsm event=0x%x(%s)", event, bta_av_evt_code(event));
|
APPL_TRACE_VERBOSE("AV nsm event=0x%x(%s)\n", event, bta_av_evt_code(event));
|
||||||
#else
|
#else
|
||||||
APPL_TRACE_VERBOSE("AV nsm event=0x%x", event);
|
APPL_TRACE_VERBOSE("AV nsm event=0x%x\n", event);
|
||||||
#endif
|
#endif
|
||||||
/* non state machine events */
|
/* non state machine events */
|
||||||
(*bta_av_nsm_act[event - BTA_AV_FIRST_NSM_EVT]) ((tBTA_AV_DATA *) p_msg);
|
(*bta_av_nsm_act[event - BTA_AV_FIRST_NSM_EVT]) ((tBTA_AV_DATA *) p_msg);
|
||||||
@ -1318,16 +1318,16 @@ BOOLEAN bta_av_hdl_event(BT_HDR *p_msg)
|
|||||||
else if (event >= BTA_AV_FIRST_SM_EVT && event <= BTA_AV_LAST_SM_EVT)
|
else if (event >= BTA_AV_FIRST_SM_EVT && event <= BTA_AV_LAST_SM_EVT)
|
||||||
{
|
{
|
||||||
#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
|
#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
|
||||||
APPL_TRACE_VERBOSE("AV sm event=0x%x(%s)", event, bta_av_evt_code(event));
|
APPL_TRACE_VERBOSE("AV sm event=0x%x(%s)\n", event, bta_av_evt_code(event));
|
||||||
#else
|
#else
|
||||||
APPL_TRACE_VERBOSE("AV sm event=0x%x", event);
|
APPL_TRACE_VERBOSE("AV sm event=0x%x\n", event);
|
||||||
#endif
|
#endif
|
||||||
/* state machine events */
|
/* state machine events */
|
||||||
bta_av_sm_execute(&bta_av_cb, p_msg->event, (tBTA_AV_DATA *) p_msg);
|
bta_av_sm_execute(&bta_av_cb, p_msg->event, (tBTA_AV_DATA *) p_msg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
APPL_TRACE_VERBOSE("handle=0x%x", p_msg->layer_specific);
|
APPL_TRACE_VERBOSE("handle=0x%x\n", p_msg->layer_specific);
|
||||||
/* stream state machine events */
|
/* stream state machine events */
|
||||||
bta_av_ssm_execute( bta_av_hndl_to_scb(p_msg->layer_specific),
|
bta_av_ssm_execute( bta_av_hndl_to_scb(p_msg->layer_specific),
|
||||||
p_msg->event, (tBTA_AV_DATA *) p_msg);
|
p_msg->event, (tBTA_AV_DATA *) p_msg);
|
||||||
|
@ -161,7 +161,8 @@ static void reassemble_and_dispatch(BT_HDR *packet) {
|
|||||||
partial_packet->len = full_length;
|
partial_packet->len = full_length;
|
||||||
partial_packet->offset = packet->len;
|
partial_packet->offset = packet->len;
|
||||||
|
|
||||||
memcpy(partial_packet->data, packet->data, packet->len);
|
// org: memcpy(partial_packet->data, packet->data, packet->len);
|
||||||
|
memcpy(partial_packet->data, packet->data+packet->offset, packet->len);
|
||||||
|
|
||||||
// Update the ACL data size to indicate the full expected length
|
// Update the ACL data size to indicate the full expected length
|
||||||
stream = partial_packet->data;
|
stream = partial_packet->data;
|
||||||
@ -179,7 +180,10 @@ static void reassemble_and_dispatch(BT_HDR *packet) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
packet->offset = HCI_ACL_PREAMBLE_SIZE;
|
// org: packet->offset = HCI_ACL_PREAMBLE_SIZE;
|
||||||
|
packet->offset += HCI_ACL_PREAMBLE_SIZE; // skip ACL preamble
|
||||||
|
packet->len -= HCI_ACL_PREAMBLE_SIZE;
|
||||||
|
|
||||||
projected_offset = partial_packet->offset + (packet->len - HCI_ACL_PREAMBLE_SIZE);
|
projected_offset = partial_packet->offset + (packet->len - HCI_ACL_PREAMBLE_SIZE);
|
||||||
if (projected_offset > partial_packet->len) { // len stores the expected length
|
if (projected_offset > partial_packet->len) { // len stores the expected length
|
||||||
LOG_WARN("%s got packet which would exceed expected length of %d. Truncating.", __func__, partial_packet->len);
|
LOG_WARN("%s got packet which would exceed expected length of %d. Truncating.", __func__, partial_packet->len);
|
||||||
@ -190,7 +194,8 @@ static void reassemble_and_dispatch(BT_HDR *packet) {
|
|||||||
memcpy(
|
memcpy(
|
||||||
partial_packet->data + partial_packet->offset,
|
partial_packet->data + partial_packet->offset,
|
||||||
packet->data + packet->offset,
|
packet->data + packet->offset,
|
||||||
packet->len - packet->offset
|
// org: packet->len - packet->offset
|
||||||
|
packet->len
|
||||||
);
|
);
|
||||||
|
|
||||||
// Free the old packet buffer, since we don't need it anymore
|
// Free the old packet buffer, since we don't need it anymore
|
||||||
|
@ -573,7 +573,7 @@
|
|||||||
|
|
||||||
/* The IO capability of the local device (for Simple Pairing) */
|
/* The IO capability of the local device (for Simple Pairing) */
|
||||||
#ifndef BTM_LOCAL_IO_CAPS
|
#ifndef BTM_LOCAL_IO_CAPS
|
||||||
#define BTM_LOCAL_IO_CAPS BTM_IO_CAP_IO
|
#define BTM_LOCAL_IO_CAPS BTM_IO_CAP_NONE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef BTM_LOCAL_IO_CAPS_BLE
|
#ifndef BTM_LOCAL_IO_CAPS_BLE
|
||||||
@ -1593,7 +1593,7 @@ Range: 2 octets
|
|||||||
**
|
**
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
#ifndef AVRC_INCLUDED
|
#ifndef AVRC_INCLUDED
|
||||||
#define AVRC_INCLUDED FALSE
|
#define AVRC_INCLUDED TRUE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef AVRC_METADATA_INCLUDED
|
#ifndef AVRC_METADATA_INCLUDED
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
void raise_priority_a2dp(tHIGH_PRIORITY_TASK high_task)
|
void raise_priority_a2dp(tHIGH_PRIORITY_TASK high_task)
|
||||||
{
|
{
|
||||||
|
(void) high_task;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,5 +29,6 @@ void raise_priority_a2dp(tHIGH_PRIORITY_TASK high_task)
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
void adjust_priority_a2dp(int start)
|
void adjust_priority_a2dp(int start)
|
||||||
{
|
{
|
||||||
|
(void) start;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,7 @@ COMPONENT_ADD_INCLUDEDIRS := bluedroid/bta/include \
|
|||||||
bluedroid/stack/avdt/include \
|
bluedroid/stack/avdt/include \
|
||||||
bluedroid/stack/a2dp/include \
|
bluedroid/stack/a2dp/include \
|
||||||
bluedroid/stack/include \
|
bluedroid/stack/include \
|
||||||
|
bluedroid/utils/include \
|
||||||
bluedroid/api/include \
|
bluedroid/api/include \
|
||||||
bluedroid/include \
|
bluedroid/include \
|
||||||
include
|
include
|
||||||
@ -86,6 +87,7 @@ COMPONENT_SRCDIRS := bluedroid/bta/dm \
|
|||||||
bluedroid/stack/avdt \
|
bluedroid/stack/avdt \
|
||||||
bluedroid/stack/a2dp \
|
bluedroid/stack/a2dp \
|
||||||
bluedroid/stack \
|
bluedroid/stack \
|
||||||
|
bluedroid/utils \
|
||||||
bluedroid/api \
|
bluedroid/api \
|
||||||
bluedroid \
|
bluedroid \
|
||||||
.
|
.
|
||||||
|
@ -11,15 +11,17 @@
|
|||||||
#include "btif_stack_manager.h"
|
#include "btif_stack_manager.h"
|
||||||
#include "btif_sdp.h"
|
#include "btif_sdp.h"
|
||||||
#include "esp_gap_api.h"
|
#include "esp_gap_api.h"
|
||||||
|
|
||||||
#include "bta_api.h"
|
#include "bta_api.h"
|
||||||
|
#include "bt_av.h"
|
||||||
|
|
||||||
|
/* utl_set_device_class() */
|
||||||
|
#include "utl.h"
|
||||||
|
|
||||||
#include "alarm.h"
|
#include "alarm.h"
|
||||||
typedef enum {
|
typedef enum {
|
||||||
BT_APP_EVT_STACK_ON,
|
BT_APP_EVT_STACK_ON,
|
||||||
BT_APP_EVT_STACK_OFF,
|
BT_APP_EVT_STACK_OFF,
|
||||||
BT_APP_EVT_ADD_SDP_RECORD_TO,
|
BT_APP_EVT_AV_OPEN_TO,
|
||||||
BT_APP_EVT_SDP_SEARCH_START_TO,
|
|
||||||
BT_APP_EVT
|
BT_APP_EVT
|
||||||
} tBT_APP_EVT;
|
} tBT_APP_EVT;
|
||||||
|
|
||||||
@ -27,49 +29,61 @@ typedef union {
|
|||||||
uint32_t dummy;
|
uint32_t dummy;
|
||||||
} tBT_APP_EVT_DATA;
|
} tBT_APP_EVT_DATA;
|
||||||
|
|
||||||
|
extern const btav_interface_t *btif_av_get_sink_interface(void);
|
||||||
static void bt_stack_evt(tBT_APP_EVT event, tBT_APP_EVT_DATA *p_data);
|
static void bt_stack_evt(tBT_APP_EVT event, tBT_APP_EVT_DATA *p_data);
|
||||||
static void bt_stack_state_changed(bt_state_t state);
|
static void bt_stack_state_changed(bt_state_t state);
|
||||||
static int bt_sdp_add_record(void);
|
|
||||||
static void bt_sdp_search_complete(bt_status_t status, bt_bdaddr_t *bd_addr, uint8_t* uuid, int num_records, bluetooth_sdp_record *records);
|
|
||||||
|
|
||||||
// static bt_bdaddr_t peer_bd_addr = {{0x00, 0x1b, 0xdc, 0x08, 0x0f, 0xe7}};
|
static bt_bdaddr_t peer_bd_addr = {{0x00, 0x1b, 0xdc, 0x08, 0x0f, 0xe7}};
|
||||||
static bt_bdaddr_t peer_bd_addr = {{0xfc, 0x3f, 0x7c, 0xf1, 0x2c, 0x78}};
|
// static bt_bdaddr_t peer_bd_addr = {{0xfc, 0x3f, 0x7c, 0xf1, 0x2c, 0x78}};
|
||||||
|
|
||||||
/* root browse
|
|
||||||
static const uint8_t target_uuid[16] = { 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x10, 0x00,
|
|
||||||
0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB };
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* UUID_MAP_MAS */
|
|
||||||
static const uint8_t target_uuid[] = {0x00, 0x00, 0x11, 0x32, 0x00, 0x00, 0x10, 0x00,
|
|
||||||
0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB};
|
|
||||||
|
|
||||||
/* UUID AUDIO Source */
|
|
||||||
/*
|
|
||||||
static const uint8_t target_uuid[] = {0x00, 0x00, 0x11, 0x0A, 0x00, 0x00, 0x10, 0x00,
|
|
||||||
0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB};
|
|
||||||
*/
|
|
||||||
|
|
||||||
static bt_callbacks_t bt_callbacks = {
|
static bt_callbacks_t bt_callbacks = {
|
||||||
bt_stack_state_changed
|
bt_stack_state_changed
|
||||||
};
|
};
|
||||||
|
|
||||||
static btsdp_callbacks_t btsdp_callbacks = {
|
|
||||||
bt_sdp_search_complete
|
|
||||||
};
|
|
||||||
|
|
||||||
osi_alarm_t *app_alarm = NULL;
|
osi_alarm_t *app_alarm = NULL;
|
||||||
|
|
||||||
static void bt_sdp_add_record_to(void *context)
|
static void btav_conn_state_cb(btav_connection_state_t state,
|
||||||
|
bt_bdaddr_t *bd_addr)
|
||||||
{
|
{
|
||||||
(void)(context);
|
LOG_ERROR("===btav_conn_state_cb %d ===\n", state);
|
||||||
bt_stack_evt(BT_APP_EVT_ADD_SDP_RECORD_TO, NULL);
|
(void) bd_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bt_sdp_search_start_to(void *context)
|
static void btav_audio_state_cb(btav_audio_state_t state, bt_bdaddr_t *bd_addr)
|
||||||
|
{
|
||||||
|
LOG_ERROR("===btav_audio_state_cb %d ===\n", state);
|
||||||
|
(void) bd_addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void btav_audio_cfg_cb(bt_bdaddr_t *bd_addr, uint32_t sample_rate, uint8_t channel_count)
|
||||||
|
{
|
||||||
|
LOG_ERROR("===btav_audio_cfg_cb %d %d===\n", sample_rate, channel_count);
|
||||||
|
(void) bd_addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static btav_callbacks_t btav_cbs = {
|
||||||
|
sizeof (btav_callbacks_t),
|
||||||
|
btav_conn_state_cb,
|
||||||
|
btav_audio_state_cb,
|
||||||
|
btav_audio_cfg_cb
|
||||||
|
};
|
||||||
|
|
||||||
|
static void btav_open_to(void *context)
|
||||||
{
|
{
|
||||||
(void)(context);
|
(void)(context);
|
||||||
bt_stack_evt(BT_APP_EVT_SDP_SEARCH_START_TO, NULL);
|
bt_stack_evt(BT_APP_EVT_AV_OPEN_TO, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void btav_set_device_class(void)
|
||||||
|
{
|
||||||
|
tBTA_UTL_COD cod;
|
||||||
|
memset(&cod, 0, sizeof(tBTA_UTL_COD));
|
||||||
|
cod.major = BTM_COD_MAJOR_AUDIO;
|
||||||
|
cod.minor = BTM_COD_MINOR_LOUDSPEAKER;
|
||||||
|
cod.service = BTM_COD_SERVICE_CAPTURING | BTM_COD_SERVICE_AUDIO;
|
||||||
|
utl_set_device_class(&cod, BTA_UTL_SET_COD_ALL);
|
||||||
|
LOG_ERROR("set class of device: major 0x%x, minor 0x%x, service 0x%x\n",
|
||||||
|
cod.major, cod.minor, cod.service);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bt_app_stack_evt(UINT16 event, char *p_param)
|
static void bt_app_stack_evt(UINT16 event, char *p_param)
|
||||||
@ -78,27 +92,21 @@ static void bt_app_stack_evt(UINT16 event, char *p_param)
|
|||||||
case BT_APP_EVT_STACK_ON: {
|
case BT_APP_EVT_STACK_ON: {
|
||||||
char *dev_name = "SDP_SERVER_CLIENT";
|
char *dev_name = "SDP_SERVER_CLIENT";
|
||||||
BTM_SetTraceLevel(BT_TRACE_LEVEL_DEBUG);
|
BTM_SetTraceLevel(BT_TRACE_LEVEL_DEBUG);
|
||||||
|
btav_set_device_class();
|
||||||
BTA_DmSetDeviceName(dev_name);
|
BTA_DmSetDeviceName(dev_name);
|
||||||
|
|
||||||
esp_bt_gap_set_scan_mode(BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);
|
esp_bt_gap_set_scan_mode(BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);
|
||||||
BTIF_SdpInit(&btsdp_callbacks);
|
btif_av_get_sink_interface()->init(&btav_cbs);
|
||||||
|
|
||||||
app_alarm = osi_alarm_new("app_alarm", bt_sdp_add_record_to, NULL, 1000, false);
|
// app_alarm = osi_alarm_new("app_alarm", bt_sdp_add_record_to, NULL, 1000, false);
|
||||||
|
app_alarm = osi_alarm_new("app_alarm", btav_open_to, NULL, 1000, false);
|
||||||
osi_alarm_set(app_alarm, 1000);
|
osi_alarm_set(app_alarm, 1000);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BT_APP_EVT_ADD_SDP_RECORD_TO: {
|
case BT_APP_EVT_AV_OPEN_TO: {
|
||||||
bt_sdp_add_record();
|
LOG_ERROR("**BT_APP_EVT_AV_OPEN_TO\n");
|
||||||
|
// btif_av_get_sink_interface()->connect(&peer_bd_addr);
|
||||||
osi_alarm_free(app_alarm);
|
osi_alarm_free(app_alarm);
|
||||||
app_alarm = NULL;
|
app_alarm = NULL;
|
||||||
app_alarm = osi_alarm_new("app_alarm", bt_sdp_search_start_to, NULL, 20000, false);
|
|
||||||
osi_alarm_set(app_alarm, 20000);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case BT_APP_EVT_SDP_SEARCH_START_TO: {
|
|
||||||
osi_alarm_free(app_alarm);
|
|
||||||
app_alarm = NULL;
|
|
||||||
BTIF_SdpSearch(&peer_bd_addr, target_uuid);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -120,44 +128,6 @@ static void bt_stack_state_changed(bt_state_t state)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bt_sdp_add_record(void)
|
|
||||||
{
|
|
||||||
int handle;
|
|
||||||
bluetooth_sdp_sap_record sap_svr;
|
|
||||||
memset (&sap_svr, 0, sizeof(bluetooth_sdp_sap_record));
|
|
||||||
|
|
||||||
sap_svr.hdr.type = SDP_TYPE_SAP_SERVER;
|
|
||||||
sap_svr.hdr.rfcomm_channel_number = 2;
|
|
||||||
sap_svr.hdr.service_name = "SIM ACCESS";
|
|
||||||
sap_svr.hdr.service_name_length = 10;
|
|
||||||
sap_svr.hdr.profile_version = 0x0100;
|
|
||||||
|
|
||||||
BTIF_SdpCreateRecord((bluetooth_sdp_record *)(&sap_svr), &handle);
|
|
||||||
return handle;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void bt_sdp_search_complete(bt_status_t status, bt_bdaddr_t *bd_addr, uint8_t* uuid, int num_records, bluetooth_sdp_record *records)
|
|
||||||
{
|
|
||||||
uint8_t *addr = bd_addr->address;
|
|
||||||
bluetooth_sdp_hdr_overlay *p = &records->mas.hdr;
|
|
||||||
LOG_ERROR("sdp search cmpl: st %d, bd_addr: %02x:%02x:%02x:%02x:%02x:%02x, records %d\n",
|
|
||||||
status, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], num_records);
|
|
||||||
if (p->service_name_length > 0) {
|
|
||||||
LOG_ERROR("service name: %s\n", p->service_name);
|
|
||||||
}
|
|
||||||
LOG_ERROR("rfc_chl_num %d, l2cap_psm %d, version %02x\n",
|
|
||||||
p->rfcomm_channel_number, p->l2cap_psm, p->profile_version);
|
|
||||||
#if 0
|
|
||||||
uint8_t *addr = bd_addr->address;
|
|
||||||
bluetooth_sdp_hdr_overlay *p = &records->hdr;
|
|
||||||
LOG_ERROR("sdp search cmpl: st %d, bd_addr: %02x:%02x:%02x:%02x:%02x:%02x, records %d, len:%d\n",
|
|
||||||
status, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], num_records, p->user1_ptr_len);
|
|
||||||
if (p->service_name_length > 0) {
|
|
||||||
LOG_ERROR("service name: %s\n", p->service_name);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void app_main_entry(void)
|
void app_main_entry(void)
|
||||||
{
|
{
|
||||||
bt_status_t stat;
|
bt_status_t stat;
|
||||||
|
@ -110,12 +110,12 @@ static TIMER_LIST_ENT tle_av_open_on_rc;
|
|||||||
#define CHECK_BTAV_INIT() if (((bt_av_src_callbacks == NULL) &&(bt_av_sink_callbacks == NULL)) \
|
#define CHECK_BTAV_INIT() if (((bt_av_src_callbacks == NULL) &&(bt_av_sink_callbacks == NULL)) \
|
||||||
|| (btif_av_cb.sm_handle == NULL))\
|
|| (btif_av_cb.sm_handle == NULL))\
|
||||||
{\
|
{\
|
||||||
BTIF_TRACE_WARNING("%s: BTAV not initialized", __FUNCTION__);\
|
BTIF_TRACE_WARNING("%s: BTAV not initialized\n", __FUNCTION__);\
|
||||||
return BT_STATUS_NOT_READY;\
|
return BT_STATUS_NOT_READY;\
|
||||||
}\
|
}\
|
||||||
else\
|
else\
|
||||||
{\
|
{\
|
||||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);\
|
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);\
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Helper macro to avoid code duplication in the state machine handlers */
|
/* Helper macro to avoid code duplication in the state machine handlers */
|
||||||
@ -232,7 +232,7 @@ static void btif_initiate_av_open_tmr_hdlr(TIMER_LIST_ENT *tle)
|
|||||||
UNUSED(tle);
|
UNUSED(tle);
|
||||||
/* is there at least one RC connection - There should be */
|
/* is there at least one RC connection - There should be */
|
||||||
if (btif_rc_get_connected_peer(peer_addr)) {
|
if (btif_rc_get_connected_peer(peer_addr)) {
|
||||||
BTIF_TRACE_DEBUG("%s Issuing connect to the remote RC peer", __FUNCTION__);
|
BTIF_TRACE_DEBUG("%s Issuing connect to the remote RC peer\n", __FUNCTION__);
|
||||||
/* In case of AVRCP connection request, we will initiate SRC connection */
|
/* In case of AVRCP connection request, we will initiate SRC connection */
|
||||||
connect_req.target_bda = (bt_bdaddr_t*)&peer_addr;
|
connect_req.target_bda = (bt_bdaddr_t*)&peer_addr;
|
||||||
connect_req.uuid = UUID_SERVCLASS_AUDIO_SOURCE;
|
connect_req.uuid = UUID_SERVCLASS_AUDIO_SOURCE;
|
||||||
@ -240,7 +240,7 @@ static void btif_initiate_av_open_tmr_hdlr(TIMER_LIST_ENT *tle)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BTIF_TRACE_ERROR("%s No connected RC peers", __FUNCTION__);
|
BTIF_TRACE_ERROR("%s No connected RC peers\n", __FUNCTION__);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,7 +278,7 @@ static void btif_report_audio_state(btav_audio_state_t state, bt_bdaddr_t *bd_ad
|
|||||||
|
|
||||||
static BOOLEAN btif_av_state_idle_handler(btif_sm_event_t event, void *p_data)
|
static BOOLEAN btif_av_state_idle_handler(btif_sm_event_t event, void *p_data)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_DEBUG("%s event:%s flags %x", __FUNCTION__,
|
BTIF_TRACE_DEBUG("%s event:%s flags %x\n", __FUNCTION__,
|
||||||
dump_av_sm_event_name(event), btif_av_cb.flags);
|
dump_av_sm_event_name(event), btif_av_cb.flags);
|
||||||
|
|
||||||
switch (event)
|
switch (event)
|
||||||
@ -331,7 +331,7 @@ static BOOLEAN btif_av_state_idle_handler(btif_sm_event_t event, void *p_data)
|
|||||||
* TODO: We may need to do this only on an AVRCP Play. FixMe
|
* TODO: We may need to do this only on an AVRCP Play. FixMe
|
||||||
*/
|
*/
|
||||||
|
|
||||||
BTIF_TRACE_DEBUG("BTA_AV_RC_OPEN_EVT received w/o AV");
|
BTIF_TRACE_DEBUG("BTA_AV_RC_OPEN_EVT received w/o AV\n");
|
||||||
memset(&tle_av_open_on_rc, 0, sizeof(tle_av_open_on_rc));
|
memset(&tle_av_open_on_rc, 0, sizeof(tle_av_open_on_rc));
|
||||||
tle_av_open_on_rc.param = (UINT32)btif_initiate_av_open_tmr_hdlr;
|
tle_av_open_on_rc.param = (UINT32)btif_initiate_av_open_tmr_hdlr;
|
||||||
btu_start_timer(&tle_av_open_on_rc, BTU_TTYPE_USER_FUNC,
|
btu_start_timer(&tle_av_open_on_rc, BTU_TTYPE_USER_FUNC,
|
||||||
@ -349,14 +349,14 @@ static BOOLEAN btif_av_state_idle_handler(btif_sm_event_t event, void *p_data)
|
|||||||
|
|
||||||
case BTA_AV_RC_CLOSE_EVT:
|
case BTA_AV_RC_CLOSE_EVT:
|
||||||
if (tle_av_open_on_rc.in_use) {
|
if (tle_av_open_on_rc.in_use) {
|
||||||
BTIF_TRACE_DEBUG("BTA_AV_RC_CLOSE_EVT: Stopping AV timer.");
|
BTIF_TRACE_DEBUG("BTA_AV_RC_CLOSE_EVT: Stopping AV timer.\n");
|
||||||
btu_stop_timer(&tle_av_open_on_rc);
|
btu_stop_timer(&tle_av_open_on_rc);
|
||||||
}
|
}
|
||||||
btif_rc_handler(event, p_data);
|
btif_rc_handler(event, p_data);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BTIF_TRACE_WARNING("%s : unhandled event:%s", __FUNCTION__,
|
BTIF_TRACE_WARNING("%s : unhandled event:%s\n", __FUNCTION__,
|
||||||
dump_av_sm_event_name(event));
|
dump_av_sm_event_name(event));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -377,7 +377,7 @@ static BOOLEAN btif_av_state_idle_handler(btif_sm_event_t event, void *p_data)
|
|||||||
|
|
||||||
static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data)
|
static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_DEBUG("%s event:%s flags %x", __FUNCTION__,
|
BTIF_TRACE_DEBUG("%s event:%s flags %x\n", __FUNCTION__,
|
||||||
dump_av_sm_event_name(event), btif_av_cb.flags);
|
dump_av_sm_event_name(event), btif_av_cb.flags);
|
||||||
|
|
||||||
switch (event)
|
switch (event)
|
||||||
@ -391,7 +391,7 @@ static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case BTA_AV_REJECT_EVT:
|
case BTA_AV_REJECT_EVT:
|
||||||
BTIF_TRACE_DEBUG(" Received BTA_AV_REJECT_EVT ");
|
BTIF_TRACE_DEBUG(" Received BTA_AV_REJECT_EVT \n");
|
||||||
btif_report_connection_state(BTAV_CONNECTION_STATE_DISCONNECTED, &(btif_av_cb.peer_bda));
|
btif_report_connection_state(BTAV_CONNECTION_STATE_DISCONNECTED, &(btif_av_cb.peer_bda));
|
||||||
btif_sm_change_state(btif_av_cb.sm_handle, BTIF_AV_STATE_IDLE);
|
btif_sm_change_state(btif_av_cb.sm_handle, BTIF_AV_STATE_IDLE);
|
||||||
break;
|
break;
|
||||||
@ -401,7 +401,7 @@ static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data
|
|||||||
tBTA_AV *p_bta_data = (tBTA_AV*)p_data;
|
tBTA_AV *p_bta_data = (tBTA_AV*)p_data;
|
||||||
btav_connection_state_t state;
|
btav_connection_state_t state;
|
||||||
btif_sm_state_t av_state;
|
btif_sm_state_t av_state;
|
||||||
BTIF_TRACE_DEBUG("status:%d, edr 0x%x",p_bta_data->open.status,
|
BTIF_TRACE_DEBUG("status:%d, edr 0x%x\n",p_bta_data->open.status,
|
||||||
p_bta_data->open.edr);
|
p_bta_data->open.edr);
|
||||||
|
|
||||||
if (p_bta_data->open.status == BTA_AV_SUCCESS)
|
if (p_bta_data->open.status == BTA_AV_SUCCESS)
|
||||||
@ -415,7 +415,7 @@ static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BTIF_TRACE_WARNING("BTA_AV_OPEN_EVT::FAILED status: %d",
|
BTIF_TRACE_WARNING("BTA_AV_OPEN_EVT::FAILED status: %d\n",
|
||||||
p_bta_data->open.status );
|
p_bta_data->open.status );
|
||||||
state = BTAV_CONNECTION_STATE_DISCONNECTED;
|
state = BTAV_CONNECTION_STATE_DISCONNECTED;
|
||||||
av_state = BTIF_AV_STATE_IDLE;
|
av_state = BTIF_AV_STATE_IDLE;
|
||||||
@ -447,7 +447,7 @@ static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data
|
|||||||
// copy to avoid alignment problems
|
// copy to avoid alignment problems
|
||||||
memcpy(&req, p_data, sizeof(req));
|
memcpy(&req, p_data, sizeof(req));
|
||||||
|
|
||||||
BTIF_TRACE_WARNING("BTIF_AV_SINK_CONFIG_REQ_EVT %d %d", req.sample_rate,
|
BTIF_TRACE_WARNING("BTIF_AV_SINK_CONFIG_REQ_EVT %d %d\n", req.sample_rate,
|
||||||
req.channel_count);
|
req.channel_count);
|
||||||
if (btif_av_cb.peer_sep == AVDT_TSEP_SRC && bt_av_sink_callbacks != NULL) {
|
if (btif_av_cb.peer_sep == AVDT_TSEP_SRC && bt_av_sink_callbacks != NULL) {
|
||||||
HAL_CBACK(bt_av_sink_callbacks, audio_config_cb, &(btif_av_cb.peer_bda),
|
HAL_CBACK(bt_av_sink_callbacks, audio_config_cb, &(btif_av_cb.peer_bda),
|
||||||
@ -460,13 +460,13 @@ static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data
|
|||||||
if (memcmp ((bt_bdaddr_t*)p_data, &(btif_av_cb.peer_bda),
|
if (memcmp ((bt_bdaddr_t*)p_data, &(btif_av_cb.peer_bda),
|
||||||
sizeof(btif_av_cb.peer_bda)) == 0)
|
sizeof(btif_av_cb.peer_bda)) == 0)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_DEBUG("%s: Same device moved to Opening state,ignore Connect Req", __func__);
|
BTIF_TRACE_DEBUG("%s: Same device moved to Opening state,ignore Connect Req\n", __func__);
|
||||||
btif_queue_advance();
|
btif_queue_advance();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BTIF_TRACE_DEBUG("%s: Moved from idle by Incoming Connection request", __func__);
|
BTIF_TRACE_DEBUG("%s: Moved from idle by Incoming Connection request\n", __func__);
|
||||||
btif_report_connection_state(BTAV_CONNECTION_STATE_DISCONNECTED, (bt_bdaddr_t*)p_data);
|
btif_report_connection_state(BTAV_CONNECTION_STATE_DISCONNECTED, (bt_bdaddr_t*)p_data);
|
||||||
btif_queue_advance();
|
btif_queue_advance();
|
||||||
break;
|
break;
|
||||||
@ -477,12 +477,12 @@ static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data
|
|||||||
if (memcmp (((tBTA_AV*)p_data)->pend.bd_addr, &(btif_av_cb.peer_bda),
|
if (memcmp (((tBTA_AV*)p_data)->pend.bd_addr, &(btif_av_cb.peer_bda),
|
||||||
sizeof(btif_av_cb.peer_bda)) == 0)
|
sizeof(btif_av_cb.peer_bda)) == 0)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_DEBUG("%s: Same device moved to Opening state,ignore Pending Req", __func__);
|
BTIF_TRACE_DEBUG("%s: Same device moved to Opening state,ignore Pending Req\n", __func__);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BTIF_TRACE_DEBUG("%s: Moved from idle by outgoing Connection request", __func__);
|
BTIF_TRACE_DEBUG("%s: Moved from idle by outgoing Connection request\n", __func__);
|
||||||
BTA_AvDisconnect(((tBTA_AV*)p_data)->pend.bd_addr);
|
BTA_AvDisconnect(((tBTA_AV*)p_data)->pend.bd_addr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -490,7 +490,7 @@ static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data
|
|||||||
CHECK_RC_EVENT(event, p_data);
|
CHECK_RC_EVENT(event, p_data);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BTIF_TRACE_WARNING("%s : unhandled event:%s", __FUNCTION__,
|
BTIF_TRACE_WARNING("%s : unhandled event:%s\n", __FUNCTION__,
|
||||||
dump_av_sm_event_name(event));
|
dump_av_sm_event_name(event));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -512,7 +512,7 @@ static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data
|
|||||||
|
|
||||||
static BOOLEAN btif_av_state_closing_handler(btif_sm_event_t event, void *p_data)
|
static BOOLEAN btif_av_state_closing_handler(btif_sm_event_t event, void *p_data)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_DEBUG("%s event:%s flags %x", __FUNCTION__,
|
BTIF_TRACE_DEBUG("%s event:%s flags %x\n", __FUNCTION__,
|
||||||
dump_av_sm_event_name(event), btif_av_cb.flags);
|
dump_av_sm_event_name(event), btif_av_cb.flags);
|
||||||
|
|
||||||
switch (event)
|
switch (event)
|
||||||
@ -562,7 +562,7 @@ static BOOLEAN btif_av_state_closing_handler(btif_sm_event_t event, void *p_data
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BTIF_TRACE_WARNING("%s : unhandled event:%s", __FUNCTION__,
|
BTIF_TRACE_WARNING("%s : unhandled event:%s\n", __FUNCTION__,
|
||||||
dump_av_sm_event_name(event));
|
dump_av_sm_event_name(event));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -584,13 +584,13 @@ static BOOLEAN btif_av_state_opened_handler(btif_sm_event_t event, void *p_data)
|
|||||||
{
|
{
|
||||||
tBTA_AV *p_av = (tBTA_AV*)p_data;
|
tBTA_AV *p_av = (tBTA_AV*)p_data;
|
||||||
|
|
||||||
BTIF_TRACE_DEBUG("%s event:%s flags %x", __FUNCTION__,
|
BTIF_TRACE_DEBUG("%s event:%s flags %x\n", __FUNCTION__,
|
||||||
dump_av_sm_event_name(event), btif_av_cb.flags);
|
dump_av_sm_event_name(event), btif_av_cb.flags);
|
||||||
|
|
||||||
if ( (event == BTA_AV_REMOTE_CMD_EVT) && (btif_av_cb.flags & BTIF_AV_FLAG_REMOTE_SUSPEND) &&
|
if ( (event == BTA_AV_REMOTE_CMD_EVT) && (btif_av_cb.flags & BTIF_AV_FLAG_REMOTE_SUSPEND) &&
|
||||||
(p_av->remote_cmd.rc_id == BTA_AV_RC_PLAY) )
|
(p_av->remote_cmd.rc_id == BTA_AV_RC_PLAY) )
|
||||||
{
|
{
|
||||||
BTIF_TRACE_EVENT("%s: Resetting remote suspend flag on RC PLAY", __FUNCTION__);
|
BTIF_TRACE_EVENT("%s: Resetting remote suspend flag on RC PLAY\n", __FUNCTION__);
|
||||||
btif_av_cb.flags &= ~BTIF_AV_FLAG_REMOTE_SUSPEND;
|
btif_av_cb.flags &= ~BTIF_AV_FLAG_REMOTE_SUSPEND;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -614,7 +614,7 @@ static BOOLEAN btif_av_state_opened_handler(btif_sm_event_t event, void *p_data)
|
|||||||
|
|
||||||
case BTA_AV_START_EVT:
|
case BTA_AV_START_EVT:
|
||||||
{
|
{
|
||||||
BTIF_TRACE_EVENT("BTA_AV_START_EVT status %d, suspending %d, init %d",
|
BTIF_TRACE_EVENT("BTA_AV_START_EVT status %d, suspending %d, init %d\n",
|
||||||
p_av->start.status, p_av->start.suspending, p_av->start.initiator);
|
p_av->start.status, p_av->start.suspending, p_av->start.initiator);
|
||||||
|
|
||||||
if ((p_av->start.status == BTA_SUCCESS) && (p_av->start.suspending == TRUE))
|
if ((p_av->start.status == BTA_SUCCESS) && (p_av->start.suspending == TRUE))
|
||||||
@ -628,7 +628,7 @@ static BOOLEAN btif_av_state_opened_handler(btif_sm_event_t event, void *p_data)
|
|||||||
{
|
{
|
||||||
if (btif_av_cb.peer_sep == AVDT_TSEP_SNK)
|
if (btif_av_cb.peer_sep == AVDT_TSEP_SNK)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_EVENT("%s: trigger suspend as remote initiated!!", __FUNCTION__);
|
BTIF_TRACE_EVENT("%s: trigger suspend as remote initiated!!\n", __FUNCTION__);
|
||||||
btif_dispatch_sm_event(BTIF_AV_SUSPEND_STREAM_REQ_EVT, NULL, 0);
|
btif_dispatch_sm_event(BTIF_AV_SUSPEND_STREAM_REQ_EVT, NULL, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -692,7 +692,7 @@ static BOOLEAN btif_av_state_opened_handler(btif_sm_event_t event, void *p_data)
|
|||||||
if((btif_av_cb.flags & BTIF_AV_FLAG_PENDING_START) &&
|
if((btif_av_cb.flags & BTIF_AV_FLAG_PENDING_START) &&
|
||||||
(p_av->reconfig.status == BTA_AV_SUCCESS))
|
(p_av->reconfig.status == BTA_AV_SUCCESS))
|
||||||
{
|
{
|
||||||
APPL_TRACE_WARNING("reconfig done BTA_AVstart()");
|
APPL_TRACE_WARNING("reconfig done BTA_AVstart()\n");
|
||||||
BTA_AvStart();
|
BTA_AvStart();
|
||||||
}
|
}
|
||||||
else if(btif_av_cb.flags & BTIF_AV_FLAG_PENDING_START)
|
else if(btif_av_cb.flags & BTIF_AV_FLAG_PENDING_START)
|
||||||
@ -706,11 +706,11 @@ static BOOLEAN btif_av_state_opened_handler(btif_sm_event_t event, void *p_data)
|
|||||||
if (memcmp ((bt_bdaddr_t*)p_data, &(btif_av_cb.peer_bda),
|
if (memcmp ((bt_bdaddr_t*)p_data, &(btif_av_cb.peer_bda),
|
||||||
sizeof(btif_av_cb.peer_bda)) == 0)
|
sizeof(btif_av_cb.peer_bda)) == 0)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_DEBUG("%s: Ignore BTIF_AV_CONNECT_REQ_EVT for same device", __func__);
|
BTIF_TRACE_DEBUG("%s: Ignore BTIF_AV_CONNECT_REQ_EVT for same device\n", __func__);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BTIF_TRACE_DEBUG("%s: Moved to opened by Other Incoming Conn req", __func__);
|
BTIF_TRACE_DEBUG("%s: Moved to opened by Other Incoming Conn req\n", __func__);
|
||||||
btif_report_connection_state(BTAV_CONNECTION_STATE_DISCONNECTED,
|
btif_report_connection_state(BTAV_CONNECTION_STATE_DISCONNECTED,
|
||||||
(bt_bdaddr_t*)p_data);
|
(bt_bdaddr_t*)p_data);
|
||||||
}
|
}
|
||||||
@ -720,7 +720,7 @@ static BOOLEAN btif_av_state_opened_handler(btif_sm_event_t event, void *p_data)
|
|||||||
CHECK_RC_EVENT(event, p_data);
|
CHECK_RC_EVENT(event, p_data);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BTIF_TRACE_WARNING("%s : unhandled event:%s", __FUNCTION__,
|
BTIF_TRACE_WARNING("%s : unhandled event:%s\n", __FUNCTION__,
|
||||||
dump_av_sm_event_name(event));
|
dump_av_sm_event_name(event));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -742,7 +742,7 @@ static BOOLEAN btif_av_state_started_handler(btif_sm_event_t event, void *p_data
|
|||||||
{
|
{
|
||||||
tBTA_AV *p_av = (tBTA_AV*)p_data;
|
tBTA_AV *p_av = (tBTA_AV*)p_data;
|
||||||
|
|
||||||
BTIF_TRACE_DEBUG("%s event:%s flags %x", __FUNCTION__,
|
BTIF_TRACE_DEBUG("%s event:%s flags %x\n", __FUNCTION__,
|
||||||
dump_av_sm_event_name(event), btif_av_cb.flags);
|
dump_av_sm_event_name(event), btif_av_cb.flags);
|
||||||
|
|
||||||
switch (event)
|
switch (event)
|
||||||
@ -815,7 +815,7 @@ static BOOLEAN btif_av_state_started_handler(btif_sm_event_t event, void *p_data
|
|||||||
|
|
||||||
case BTA_AV_SUSPEND_EVT:
|
case BTA_AV_SUSPEND_EVT:
|
||||||
|
|
||||||
BTIF_TRACE_EVENT("BTA_AV_SUSPEND_EVT status %d, init %d",
|
BTIF_TRACE_EVENT("BTA_AV_SUSPEND_EVT status %d, init %d\n",
|
||||||
p_av->suspend.status, p_av->suspend.initiator);
|
p_av->suspend.status, p_av->suspend.initiator);
|
||||||
|
|
||||||
/* a2dp suspended, stop media task until resumed */
|
/* a2dp suspended, stop media task until resumed */
|
||||||
@ -886,7 +886,7 @@ static BOOLEAN btif_av_state_started_handler(btif_sm_event_t event, void *p_data
|
|||||||
CHECK_RC_EVENT(event, p_data);
|
CHECK_RC_EVENT(event, p_data);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BTIF_TRACE_WARNING("%s : unhandled event:%s", __FUNCTION__,
|
BTIF_TRACE_WARNING("%s : unhandled event:%s\n", __FUNCTION__,
|
||||||
dump_av_sm_event_name(event));
|
dump_av_sm_event_name(event));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -991,7 +991,7 @@ static void bte_av_media_callback(tBTA_AV_EVT event, tBTA_AV_MEDIA *p_data)
|
|||||||
(state == BTIF_AV_STATE_OPENED) )
|
(state == BTIF_AV_STATE_OPENED) )
|
||||||
{
|
{
|
||||||
que_len = btif_media_sink_enque_buf((BT_HDR *)p_data);
|
que_len = btif_media_sink_enque_buf((BT_HDR *)p_data);
|
||||||
BTIF_TRACE_DEBUG(" Packets in Que %d",que_len);
|
BTIF_TRACE_DEBUG(" Packets in Que %d\n",que_len);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
@ -1009,7 +1009,7 @@ static void bte_av_media_callback(tBTA_AV_EVT event, tBTA_AV_MEDIA *p_data)
|
|||||||
btif_transfer_context(btif_av_handle_event, BTIF_AV_SINK_CONFIG_REQ_EVT,
|
btif_transfer_context(btif_av_handle_event, BTIF_AV_SINK_CONFIG_REQ_EVT,
|
||||||
(char*)&config_req, sizeof(config_req), NULL);
|
(char*)&config_req, sizeof(config_req), NULL);
|
||||||
} else {
|
} else {
|
||||||
APPL_TRACE_ERROR("ERROR dump_codec_info A2D_ParsSbcInfo fail:%d", a2d_status);
|
APPL_TRACE_ERROR("ERROR dump_codec_info A2D_ParsSbcInfo fail:%d\n", a2d_status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1057,7 +1057,7 @@ bt_status_t btif_av_init()
|
|||||||
|
|
||||||
static bt_status_t init_src(btav_callbacks_t* callbacks)
|
static bt_status_t init_src(btav_callbacks_t* callbacks)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_EVENT("%s()", __func__);
|
BTIF_TRACE_EVENT("%s()\n", __func__);
|
||||||
|
|
||||||
bt_status_t status = btif_av_init();
|
bt_status_t status = btif_av_init();
|
||||||
if (status == BT_STATUS_SUCCESS)
|
if (status == BT_STATUS_SUCCESS)
|
||||||
@ -1078,7 +1078,7 @@ static bt_status_t init_src(btav_callbacks_t* callbacks)
|
|||||||
|
|
||||||
static bt_status_t init_sink(btav_callbacks_t* callbacks)
|
static bt_status_t init_sink(btav_callbacks_t* callbacks)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_EVENT("%s()", __func__);
|
BTIF_TRACE_EVENT("%s()\n", __func__);
|
||||||
|
|
||||||
bt_status_t status = btif_av_init();
|
bt_status_t status = btif_av_init();
|
||||||
if (status == BT_STATUS_SUCCESS)
|
if (status == BT_STATUS_SUCCESS)
|
||||||
@ -1102,7 +1102,7 @@ static bt_status_t connect_int(bt_bdaddr_t *bd_addr, uint16_t uuid)
|
|||||||
btif_av_connect_req_t connect_req;
|
btif_av_connect_req_t connect_req;
|
||||||
connect_req.target_bda = bd_addr;
|
connect_req.target_bda = bd_addr;
|
||||||
connect_req.uuid = uuid;
|
connect_req.uuid = uuid;
|
||||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||||
|
|
||||||
btif_sm_dispatch(btif_av_cb.sm_handle, BTIF_AV_CONNECT_REQ_EVT, (char*)&connect_req);
|
btif_sm_dispatch(btif_av_cb.sm_handle, BTIF_AV_CONNECT_REQ_EVT, (char*)&connect_req);
|
||||||
|
|
||||||
@ -1111,7 +1111,7 @@ static bt_status_t connect_int(bt_bdaddr_t *bd_addr, uint16_t uuid)
|
|||||||
|
|
||||||
static bt_status_t src_connect_sink(bt_bdaddr_t *bd_addr)
|
static bt_status_t src_connect_sink(bt_bdaddr_t *bd_addr)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||||
CHECK_BTAV_INIT();
|
CHECK_BTAV_INIT();
|
||||||
|
|
||||||
return btif_queue_connect(UUID_SERVCLASS_AUDIO_SOURCE, bd_addr, connect_int);
|
return btif_queue_connect(UUID_SERVCLASS_AUDIO_SOURCE, bd_addr, connect_int);
|
||||||
@ -1119,7 +1119,7 @@ static bt_status_t src_connect_sink(bt_bdaddr_t *bd_addr)
|
|||||||
|
|
||||||
static bt_status_t sink_connect_src(bt_bdaddr_t *bd_addr)
|
static bt_status_t sink_connect_src(bt_bdaddr_t *bd_addr)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||||
CHECK_BTAV_INIT();
|
CHECK_BTAV_INIT();
|
||||||
|
|
||||||
return btif_queue_connect(UUID_SERVCLASS_AUDIO_SINK, bd_addr, connect_int);
|
return btif_queue_connect(UUID_SERVCLASS_AUDIO_SINK, bd_addr, connect_int);
|
||||||
@ -1136,7 +1136,7 @@ static bt_status_t sink_connect_src(bt_bdaddr_t *bd_addr)
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
static bt_status_t disconnect(bt_bdaddr_t *bd_addr)
|
static bt_status_t disconnect(bt_bdaddr_t *bd_addr)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||||
|
|
||||||
CHECK_BTAV_INIT();
|
CHECK_BTAV_INIT();
|
||||||
|
|
||||||
@ -1156,7 +1156,7 @@ static bt_status_t disconnect(bt_bdaddr_t *bd_addr)
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
static void cleanup(void)
|
static void cleanup(void)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||||
|
|
||||||
btif_a2dp_stop_media_task();
|
btif_a2dp_stop_media_task();
|
||||||
|
|
||||||
@ -1171,7 +1171,7 @@ static void cleanup(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void cleanup_src(void) {
|
static void cleanup_src(void) {
|
||||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||||
|
|
||||||
if (bt_av_src_callbacks)
|
if (bt_av_src_callbacks)
|
||||||
{
|
{
|
||||||
@ -1182,7 +1182,7 @@ static void cleanup_src(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void cleanup_sink(void) {
|
static void cleanup_sink(void) {
|
||||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||||
|
|
||||||
if (bt_av_sink_callbacks)
|
if (bt_av_sink_callbacks)
|
||||||
{
|
{
|
||||||
@ -1237,7 +1237,7 @@ BOOLEAN btif_av_stream_ready(void)
|
|||||||
{
|
{
|
||||||
btif_sm_state_t state = btif_sm_get_state(btif_av_cb.sm_handle);
|
btif_sm_state_t state = btif_sm_get_state(btif_av_cb.sm_handle);
|
||||||
|
|
||||||
BTIF_TRACE_DEBUG("btif_av_stream_ready : sm hdl %d, state %d, flags %x",
|
BTIF_TRACE_DEBUG("btif_av_stream_ready : sm hdl %d, state %d, flags %x\n",
|
||||||
btif_av_cb.sm_handle, state, btif_av_cb.flags);
|
btif_av_cb.sm_handle, state, btif_av_cb.flags);
|
||||||
|
|
||||||
/* also make sure main adapter is enabled */
|
/* also make sure main adapter is enabled */
|
||||||
@ -1268,7 +1268,7 @@ BOOLEAN btif_av_stream_started_ready(void)
|
|||||||
{
|
{
|
||||||
btif_sm_state_t state = btif_sm_get_state(btif_av_cb.sm_handle);
|
btif_sm_state_t state = btif_sm_get_state(btif_av_cb.sm_handle);
|
||||||
|
|
||||||
BTIF_TRACE_DEBUG("btif_av_stream_started : sm hdl %d, state %d, flags %x",
|
BTIF_TRACE_DEBUG("btif_av_stream_started : sm hdl %d, state %d, flags %x\n",
|
||||||
btif_av_cb.sm_handle, state, btif_av_cb.flags);
|
btif_av_cb.sm_handle, state, btif_av_cb.flags);
|
||||||
|
|
||||||
/* disallow media task to start if we have pending actions */
|
/* disallow media task to start if we have pending actions */
|
||||||
@ -1366,7 +1366,7 @@ bt_status_t btif_av_sink_execute_service(BOOLEAN b_enable)
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
const btav_interface_t *btif_av_get_src_interface(void)
|
const btav_interface_t *btif_av_get_src_interface(void)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||||
return &bt_av_src_interface;
|
return &bt_av_src_interface;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1381,7 +1381,7 @@ const btav_interface_t *btif_av_get_src_interface(void)
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
const btav_interface_t *btif_av_get_sink_interface(void)
|
const btav_interface_t *btif_av_get_sink_interface(void)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||||
return &bt_av_sink_interface;
|
return &bt_av_sink_interface;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1414,7 +1414,7 @@ BOOLEAN btif_av_is_connected(void)
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
BOOLEAN btif_av_is_peer_edr(void)
|
BOOLEAN btif_av_is_peer_edr(void)
|
||||||
{
|
{
|
||||||
ASSERTC(btif_av_is_connected(), "No active a2dp connection", 0);
|
ASSERTC(btif_av_is_connected(), "No active a2dp connection\n", 0);
|
||||||
|
|
||||||
if (btif_av_cb.edr)
|
if (btif_av_cb.edr)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -1432,6 +1432,6 @@ BOOLEAN btif_av_is_peer_edr(void)
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
void btif_av_clear_remote_suspend_flag(void)
|
void btif_av_clear_remote_suspend_flag(void)
|
||||||
{
|
{
|
||||||
BTIF_TRACE_DEBUG("%s: flag :%x",__func__, btif_av_cb.flags);
|
BTIF_TRACE_DEBUG("%s: flag :%x\n",__func__, btif_av_cb.flags);
|
||||||
btif_av_cb.flags &= ~BTIF_AV_FLAG_REMOTE_SUSPEND;
|
btif_av_cb.flags &= ~BTIF_AV_FLAG_REMOTE_SUSPEND;
|
||||||
}
|
}
|
1364
examples/09_a2dp/components/bluedroid_demos/btif/btif_avk.c
Executable file
1364
examples/09_a2dp/components/bluedroid_demos/btif/btif_avk.c
Executable file
File diff suppressed because it is too large
Load Diff
@ -334,6 +334,14 @@ static fixed_queue_t *btif_media_cmd_msg_queue = NULL;
|
|||||||
static xTaskHandle xBtifMediaTaskHandle = NULL;
|
static xTaskHandle xBtifMediaTaskHandle = NULL;
|
||||||
static QueueHandle_t xBtifMediaQueue = NULL;
|
static QueueHandle_t xBtifMediaQueue = NULL;
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
** temporary hacked functions. TODO: port these functions or remove them?
|
||||||
|
*****************************************************************************/
|
||||||
|
BOOLEAN btif_hf_is_call_idle(void)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
** Misc helper functions
|
** Misc helper functions
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "bta_api.h"
|
#include "bta_api.h"
|
||||||
#include "bta_av_api.h"
|
#include "bta_av_api.h"
|
||||||
#include "avrc_defs.h"
|
#include "avrc_defs.h"
|
||||||
|
#include "avrc_api.h"
|
||||||
#include "gki.h"
|
#include "gki.h"
|
||||||
|
|
||||||
#define LOG_TAG "bt_btif_avrc"
|
#define LOG_TAG "bt_btif_avrc"
|
||||||
@ -206,11 +207,23 @@ static btrc_ctrl_callbacks_t *bt_rc_ctrl_callbacks = NULL;
|
|||||||
extern BOOLEAN btif_hf_call_terminated_recently();
|
extern BOOLEAN btif_hf_call_terminated_recently();
|
||||||
extern BOOLEAN check_cod(const bt_bdaddr_t *remote_bdaddr, uint32_t cod);
|
extern BOOLEAN check_cod(const bt_bdaddr_t *remote_bdaddr, uint32_t cod);
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
** Functions
|
** Functions
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
** temporarily hacked functions. TODO: remove or port these functions
|
||||||
|
*****************************************************************************/
|
||||||
|
BOOLEAN btif_hf_call_terminated_recently(void)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOLEAN check_cod(const bt_bdaddr_t *remote_bdaddr, uint32_t cod)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
** Local uinput helper functions
|
** Local uinput helper functions
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
@ -19,8 +19,8 @@ COMPONENT_SRCDIRS := \
|
|||||||
app_core \
|
app_core \
|
||||||
app_project \
|
app_project \
|
||||||
udrv/ulinux \
|
udrv/ulinux \
|
||||||
embdrv/sbc/encoder \
|
embdrv/sbc/encoder/srce \
|
||||||
embdrv/sbc/decoder \
|
embdrv/sbc/decoder/srce \
|
||||||
btif/co \
|
btif/co \
|
||||||
btif
|
btif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user