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)
|
||||
{
|
||||
APPL_TRACE_ERROR("bad channel: %d", chnl);
|
||||
APPL_TRACE_ERROR("bad channel: %d\n", chnl);
|
||||
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)
|
||||
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
|
||||
|
||||
@ -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(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
|
||||
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[2], bd_addr[3],
|
||||
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;
|
||||
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];
|
||||
BCM_STRNCPY_S(p_service_name, sizeof(p_service_name),
|
||||
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);
|
||||
#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);
|
||||
#endif
|
||||
}
|
||||
@ -631,7 +631,7 @@ static void bta_av_api_register(tBTA_AV_DATA *p_data)
|
||||
*/
|
||||
cs.nsc_mask = AVDT_NSC_RECONFIG |
|
||||
((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)
|
||||
{
|
||||
@ -683,7 +683,7 @@ static void bta_av_api_register(tBTA_AV_DATA *p_data)
|
||||
cs.tsep = AVDT_TSEP_SNK;
|
||||
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
|
||||
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 */
|
||||
#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++;
|
||||
}
|
||||
@ -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);
|
||||
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
|
||||
{
|
||||
@ -911,7 +911,7 @@ void bta_av_restore_switch (void)
|
||||
int i;
|
||||
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++)
|
||||
{
|
||||
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;
|
||||
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++)
|
||||
{
|
||||
/* 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) &&
|
||||
(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))
|
||||
{
|
||||
@ -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)
|
||||
{
|
||||
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);
|
||||
|
||||
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(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)
|
||||
{
|
||||
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))
|
||||
{
|
||||
APPL_TRACE_DEBUG("suspending scb:%d", i);
|
||||
APPL_TRACE_DEBUG("suspending scb:%d\n", i);
|
||||
/* scb is used and started, not suspended automatically */
|
||||
p_scb->sco_suspend = TRUE;
|
||||
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 */
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
@ -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)
|
||||
{
|
||||
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,
|
||||
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)))
|
||||
@ -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) )
|
||||
{
|
||||
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);
|
||||
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);
|
||||
}
|
||||
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;
|
||||
|
||||
#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));
|
||||
#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
|
||||
|
||||
/* 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 */
|
||||
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 */
|
||||
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 (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
|
||||
APPL_TRACE_VERBOSE("AV nsm event=0x%x", event);
|
||||
APPL_TRACE_VERBOSE("AV nsm event=0x%x\n", event);
|
||||
#endif
|
||||
/* non state machine events */
|
||||
(*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)
|
||||
{
|
||||
#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
|
||||
APPL_TRACE_VERBOSE("AV sm event=0x%x", event);
|
||||
APPL_TRACE_VERBOSE("AV sm event=0x%x\n", event);
|
||||
#endif
|
||||
/* state machine events */
|
||||
bta_av_sm_execute(&bta_av_cb, p_msg->event, (tBTA_AV_DATA *) p_msg);
|
||||
}
|
||||
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 */
|
||||
bta_av_ssm_execute( bta_av_hndl_to_scb(p_msg->layer_specific),
|
||||
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->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
|
||||
stream = partial_packet->data;
|
||||
@ -179,7 +180,10 @@ static void reassemble_and_dispatch(BT_HDR *packet) {
|
||||
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);
|
||||
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);
|
||||
@ -190,7 +194,8 @@ static void reassemble_and_dispatch(BT_HDR *packet) {
|
||||
memcpy(
|
||||
partial_packet->data + partial_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
|
||||
|
@ -573,7 +573,7 @@
|
||||
|
||||
/* The IO capability of the local device (for Simple Pairing) */
|
||||
#ifndef BTM_LOCAL_IO_CAPS
|
||||
#define BTM_LOCAL_IO_CAPS BTM_IO_CAP_IO
|
||||
#define BTM_LOCAL_IO_CAPS BTM_IO_CAP_NONE
|
||||
#endif
|
||||
|
||||
#ifndef BTM_LOCAL_IO_CAPS_BLE
|
||||
@ -1593,7 +1593,7 @@ Range: 2 octets
|
||||
**
|
||||
******************************************************************************/
|
||||
#ifndef AVRC_INCLUDED
|
||||
#define AVRC_INCLUDED FALSE
|
||||
#define AVRC_INCLUDED TRUE
|
||||
#endif
|
||||
|
||||
#ifndef AVRC_METADATA_INCLUDED
|
||||
|
@ -12,6 +12,7 @@
|
||||
*******************************************************************************/
|
||||
void raise_priority_a2dp(tHIGH_PRIORITY_TASK high_task)
|
||||
{
|
||||
(void) high_task;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -28,5 +29,6 @@ void raise_priority_a2dp(tHIGH_PRIORITY_TASK high_task)
|
||||
*******************************************************************************/
|
||||
void adjust_priority_a2dp(int start)
|
||||
{
|
||||
(void) start;
|
||||
return;
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ COMPONENT_ADD_INCLUDEDIRS := bluedroid/bta/include \
|
||||
bluedroid/stack/avdt/include \
|
||||
bluedroid/stack/a2dp/include \
|
||||
bluedroid/stack/include \
|
||||
bluedroid/utils/include \
|
||||
bluedroid/api/include \
|
||||
bluedroid/include \
|
||||
include
|
||||
@ -86,6 +87,7 @@ COMPONENT_SRCDIRS := bluedroid/bta/dm \
|
||||
bluedroid/stack/avdt \
|
||||
bluedroid/stack/a2dp \
|
||||
bluedroid/stack \
|
||||
bluedroid/utils \
|
||||
bluedroid/api \
|
||||
bluedroid \
|
||||
.
|
||||
|
@ -11,15 +11,17 @@
|
||||
#include "btif_stack_manager.h"
|
||||
#include "btif_sdp.h"
|
||||
#include "esp_gap_api.h"
|
||||
|
||||
#include "bta_api.h"
|
||||
#include "bt_av.h"
|
||||
|
||||
/* utl_set_device_class() */
|
||||
#include "utl.h"
|
||||
|
||||
#include "alarm.h"
|
||||
typedef enum {
|
||||
BT_APP_EVT_STACK_ON,
|
||||
BT_APP_EVT_STACK_OFF,
|
||||
BT_APP_EVT_ADD_SDP_RECORD_TO,
|
||||
BT_APP_EVT_SDP_SEARCH_START_TO,
|
||||
BT_APP_EVT_AV_OPEN_TO,
|
||||
BT_APP_EVT
|
||||
} tBT_APP_EVT;
|
||||
|
||||
@ -27,49 +29,61 @@ typedef union {
|
||||
uint32_t dummy;
|
||||
} 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_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 = {{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_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_callbacks_t bt_callbacks = {
|
||||
bt_stack_state_changed
|
||||
};
|
||||
|
||||
static btsdp_callbacks_t btsdp_callbacks = {
|
||||
bt_sdp_search_complete
|
||||
};
|
||||
|
||||
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);
|
||||
bt_stack_evt(BT_APP_EVT_ADD_SDP_RECORD_TO, NULL);
|
||||
LOG_ERROR("===btav_conn_state_cb %d ===\n", state);
|
||||
(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);
|
||||
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)
|
||||
@ -78,27 +92,21 @@ static void bt_app_stack_evt(UINT16 event, char *p_param)
|
||||
case BT_APP_EVT_STACK_ON: {
|
||||
char *dev_name = "SDP_SERVER_CLIENT";
|
||||
BTM_SetTraceLevel(BT_TRACE_LEVEL_DEBUG);
|
||||
btav_set_device_class();
|
||||
BTA_DmSetDeviceName(dev_name);
|
||||
|
||||
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);
|
||||
}
|
||||
break;
|
||||
case BT_APP_EVT_ADD_SDP_RECORD_TO: {
|
||||
bt_sdp_add_record();
|
||||
case BT_APP_EVT_AV_OPEN_TO: {
|
||||
LOG_ERROR("**BT_APP_EVT_AV_OPEN_TO\n");
|
||||
// btif_av_get_sink_interface()->connect(&peer_bd_addr);
|
||||
osi_alarm_free(app_alarm);
|
||||
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;
|
||||
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)
|
||||
{
|
||||
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)) \
|
||||
|| (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;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);\
|
||||
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);\
|
||||
}
|
||||
|
||||
/* 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);
|
||||
/* is there at least one RC connection - There should be */
|
||||
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 */
|
||||
connect_req.target_bda = (bt_bdaddr_t*)&peer_addr;
|
||||
connect_req.uuid = UUID_SERVCLASS_AUDIO_SOURCE;
|
||||
@ -240,7 +240,7 @@ static void btif_initiate_av_open_tmr_hdlr(TIMER_LIST_ENT *tle)
|
||||
}
|
||||
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)
|
||||
{
|
||||
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);
|
||||
|
||||
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
|
||||
*/
|
||||
|
||||
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));
|
||||
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,
|
||||
@ -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:
|
||||
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);
|
||||
}
|
||||
btif_rc_handler(event, p_data);
|
||||
break;
|
||||
|
||||
default:
|
||||
BTIF_TRACE_WARNING("%s : unhandled event:%s", __FUNCTION__,
|
||||
BTIF_TRACE_WARNING("%s : unhandled event:%s\n", __FUNCTION__,
|
||||
dump_av_sm_event_name(event));
|
||||
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)
|
||||
{
|
||||
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);
|
||||
|
||||
switch (event)
|
||||
@ -391,7 +391,7 @@ static BOOLEAN btif_av_state_opening_handler(btif_sm_event_t event, void *p_data
|
||||
break;
|
||||
|
||||
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_sm_change_state(btif_av_cb.sm_handle, BTIF_AV_STATE_IDLE);
|
||||
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;
|
||||
btav_connection_state_t 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);
|
||||
|
||||
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
|
||||
{
|
||||
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 );
|
||||
state = BTAV_CONNECTION_STATE_DISCONNECTED;
|
||||
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
|
||||
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);
|
||||
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),
|
||||
@ -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),
|
||||
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();
|
||||
break;
|
||||
}
|
||||
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_queue_advance();
|
||||
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),
|
||||
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;
|
||||
}
|
||||
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);
|
||||
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);
|
||||
|
||||
default:
|
||||
BTIF_TRACE_WARNING("%s : unhandled event:%s", __FUNCTION__,
|
||||
BTIF_TRACE_WARNING("%s : unhandled event:%s\n", __FUNCTION__,
|
||||
dump_av_sm_event_name(event));
|
||||
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)
|
||||
{
|
||||
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);
|
||||
|
||||
switch (event)
|
||||
@ -562,7 +562,7 @@ static BOOLEAN btif_av_state_closing_handler(btif_sm_event_t event, void *p_data
|
||||
break;
|
||||
|
||||
default:
|
||||
BTIF_TRACE_WARNING("%s : unhandled event:%s", __FUNCTION__,
|
||||
BTIF_TRACE_WARNING("%s : unhandled event:%s\n", __FUNCTION__,
|
||||
dump_av_sm_event_name(event));
|
||||
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;
|
||||
|
||||
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);
|
||||
|
||||
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) )
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
@ -614,7 +614,7 @@ static BOOLEAN btif_av_state_opened_handler(btif_sm_event_t event, void *p_data)
|
||||
|
||||
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);
|
||||
|
||||
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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
@ -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) &&
|
||||
(p_av->reconfig.status == BTA_AV_SUCCESS))
|
||||
{
|
||||
APPL_TRACE_WARNING("reconfig done BTA_AVstart()");
|
||||
APPL_TRACE_WARNING("reconfig done BTA_AVstart()\n");
|
||||
BTA_AvStart();
|
||||
}
|
||||
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),
|
||||
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
|
||||
{
|
||||
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,
|
||||
(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);
|
||||
|
||||
default:
|
||||
BTIF_TRACE_WARNING("%s : unhandled event:%s", __FUNCTION__,
|
||||
BTIF_TRACE_WARNING("%s : unhandled event:%s\n", __FUNCTION__,
|
||||
dump_av_sm_event_name(event));
|
||||
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;
|
||||
|
||||
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);
|
||||
|
||||
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:
|
||||
|
||||
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);
|
||||
|
||||
/* 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);
|
||||
|
||||
default:
|
||||
BTIF_TRACE_WARNING("%s : unhandled event:%s", __FUNCTION__,
|
||||
BTIF_TRACE_WARNING("%s : unhandled event:%s\n", __FUNCTION__,
|
||||
dump_av_sm_event_name(event));
|
||||
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) )
|
||||
{
|
||||
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
|
||||
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,
|
||||
(char*)&config_req, sizeof(config_req), NULL);
|
||||
} 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)
|
||||
{
|
||||
BTIF_TRACE_EVENT("%s()", __func__);
|
||||
BTIF_TRACE_EVENT("%s()\n", __func__);
|
||||
|
||||
bt_status_t status = btif_av_init();
|
||||
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)
|
||||
{
|
||||
BTIF_TRACE_EVENT("%s()", __func__);
|
||||
BTIF_TRACE_EVENT("%s()\n", __func__);
|
||||
|
||||
bt_status_t status = btif_av_init();
|
||||
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;
|
||||
connect_req.target_bda = bd_addr;
|
||||
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);
|
||||
|
||||
@ -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)
|
||||
{
|
||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
||||
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||
CHECK_BTAV_INIT();
|
||||
|
||||
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)
|
||||
{
|
||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
||||
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||
CHECK_BTAV_INIT();
|
||||
|
||||
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)
|
||||
{
|
||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
||||
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||
|
||||
CHECK_BTAV_INIT();
|
||||
|
||||
@ -1156,7 +1156,7 @@ static bt_status_t disconnect(bt_bdaddr_t *bd_addr)
|
||||
*******************************************************************************/
|
||||
static void cleanup(void)
|
||||
{
|
||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
||||
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||
|
||||
btif_a2dp_stop_media_task();
|
||||
|
||||
@ -1171,7 +1171,7 @@ static void cleanup(void)
|
||||
}
|
||||
|
||||
static void cleanup_src(void) {
|
||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
||||
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||
|
||||
if (bt_av_src_callbacks)
|
||||
{
|
||||
@ -1182,7 +1182,7 @@ static void cleanup_src(void) {
|
||||
}
|
||||
|
||||
static void cleanup_sink(void) {
|
||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
||||
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||
|
||||
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_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);
|
||||
|
||||
/* 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_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);
|
||||
|
||||
/* 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)
|
||||
{
|
||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
||||
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||
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)
|
||||
{
|
||||
BTIF_TRACE_EVENT("%s", __FUNCTION__);
|
||||
BTIF_TRACE_EVENT("%s\n", __FUNCTION__);
|
||||
return &bt_av_sink_interface;
|
||||
}
|
||||
|
||||
@ -1414,7 +1414,7 @@ BOOLEAN btif_av_is_connected(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)
|
||||
return TRUE;
|
||||
@ -1432,6 +1432,6 @@ BOOLEAN btif_av_is_peer_edr(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;
|
||||
}
|
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 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
|
||||
*****************************************************************************/
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "bta_api.h"
|
||||
#include "bta_av_api.h"
|
||||
#include "avrc_defs.h"
|
||||
#include "avrc_api.h"
|
||||
#include "gki.h"
|
||||
|
||||
#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 check_cod(const bt_bdaddr_t *remote_bdaddr, uint32_t cod);
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
** 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
|
||||
******************************************************************************/
|
||||
|
@ -19,8 +19,8 @@ COMPONENT_SRCDIRS := \
|
||||
app_core \
|
||||
app_project \
|
||||
udrv/ulinux \
|
||||
embdrv/sbc/encoder \
|
||||
embdrv/sbc/decoder \
|
||||
embdrv/sbc/encoder/srce \
|
||||
embdrv/sbc/decoder/srce \
|
||||
btif/co \
|
||||
btif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user