Loading system/bta/av/bta_av_aact.cc +11 −26 Original line number Diff line number Diff line Loading @@ -166,10 +166,8 @@ static const uint16_t bta_av_stream_evt_ok[] = { BTA_AV_STR_WRITE_CFM_EVT, /* AVDT_WRITE_CFM_EVT */ BTA_AV_AVDT_CONNECT_EVT, /* AVDT_CONNECT_IND_EVT */ BTA_AV_AVDT_DISCONNECT_EVT, /* AVDT_DISCONNECT_IND_EVT */ #if (AVDT_REPORTING == TRUE) BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_CONN_EVT */ BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_DISCONN_EVT */ #endif BTA_AV_AVDT_DELAY_RPT_EVT, /* AVDT_DELAY_REPORT_EVT */ 0 /* AVDT_DELAY_REPORT_CFM_EVT */ }; Loading @@ -193,10 +191,8 @@ static const uint16_t bta_av_stream_evt_fail[] = { BTA_AV_STR_WRITE_CFM_EVT, /* AVDT_WRITE_CFM_EVT */ BTA_AV_AVDT_CONNECT_EVT, /* AVDT_CONNECT_IND_EVT */ BTA_AV_AVDT_DISCONNECT_EVT, /* AVDT_DISCONNECT_IND_EVT */ #if (AVDT_REPORTING == TRUE) BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_CONN_EVT */ BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_DISCONN_EVT */ #endif BTA_AV_AVDT_DELAY_RPT_EVT, /* AVDT_DELAY_REPORT_EVT */ 0 /* AVDT_DELAY_REPORT_CFM_EVT */ }; Loading Loading @@ -388,15 +384,13 @@ static bool bta_av_next_getcap(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { p_scb->sep_info_idx = i; /* we got a stream; get its capabilities */ if (p_scb->p_cap == NULL) p_scb->p_cap = (tAVDT_CFG*)osi_malloc(sizeof(tAVDT_CFG)); if ((p_scb->avdt_version >= AVDT_VERSION_1_3) && (A2DP_GetAvdtpVersion() >= AVDT_VERSION_1_3)) { p_req = AVDT_GetAllCapReq; } else { p_req = AVDT_GetCapReq; } (*p_req)(p_scb->peer_addr, p_scb->sep_info[i].seid, p_scb->p_cap, (*p_req)(p_scb->peer_addr, p_scb->sep_info[i].seid, &p_scb->peer_cap, bta_av_dt_cback[p_scb->hdi]); sent_cmd = true; break; Loading Loading @@ -1028,7 +1022,6 @@ void bta_av_cleanup(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) { APPL_TRACE_DEBUG("%s", __func__); /* free any buffers */ osi_free_and_reset((void**)&p_scb->p_cap); p_scb->sdp_discovery_started = false; p_scb->avdt_version = 0; Loading Loading @@ -1665,9 +1658,9 @@ void bta_av_save_caps(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { APPL_TRACE_DEBUG("%s: num_seps:%d sep_info_idx:%d wait:x%x", __func__, p_scb->num_seps, p_scb->sep_info_idx, p_scb->wait); A2DP_DumpCodecInfo(p_scb->p_cap->codec_info); A2DP_DumpCodecInfo(p_scb->peer_cap.codec_info); memcpy(&cfg, p_scb->p_cap, sizeof(tAVDT_CFG)); memcpy(&cfg, &p_scb->peer_cap, sizeof(tAVDT_CFG)); /* let application know the capability of the SNK */ p_scb->p_cos->getcfg(p_scb->hndl, cfg.codec_info, &p_scb->sep_info_idx, p_info->seid, &cfg.num_protect, cfg.protect_info); Loading Loading @@ -1808,18 +1801,18 @@ void bta_av_getcap_results(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { memcpy(&cfg, &p_scb->cfg, sizeof(tAVDT_CFG)); cfg.num_codec = 1; cfg.num_protect = p_scb->p_cap->num_protect; memcpy(cfg.codec_info, p_scb->p_cap->codec_info, AVDT_CODEC_SIZE); memcpy(cfg.protect_info, p_scb->p_cap->protect_info, AVDT_PROTECT_SIZE); media_type = A2DP_GetMediaType(p_scb->p_cap->codec_info); cfg.num_protect = p_scb->peer_cap.num_protect; memcpy(cfg.codec_info, p_scb->peer_cap.codec_info, AVDT_CODEC_SIZE); memcpy(cfg.protect_info, p_scb->peer_cap.protect_info, AVDT_PROTECT_SIZE); media_type = A2DP_GetMediaType(p_scb->peer_cap.codec_info); APPL_TRACE_DEBUG("%s: num_codec %d", __func__, p_scb->p_cap->num_codec); APPL_TRACE_DEBUG("%s: num_codec %d", __func__, p_scb->peer_cap.num_codec); APPL_TRACE_DEBUG("%s: media type x%x, x%x", __func__, media_type, p_scb->media_type); A2DP_DumpCodecInfo(p_scb->cfg.codec_info); /* if codec present and we get a codec configuration */ if ((p_scb->p_cap->num_codec != 0) && (media_type == p_scb->media_type) && if ((p_scb->peer_cap.num_codec != 0) && (media_type == p_scb->media_type) && (p_scb->p_cos->getcfg(p_scb->hndl, cfg.codec_info, &p_scb->sep_info_idx, p_info->seid, &cfg.num_protect, cfg.protect_info) == A2DP_SUCCESS)) { Loading @@ -1840,7 +1833,7 @@ void bta_av_getcap_results(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { bta_av_get_scb_handle(p_scb, AVDT_TSEP_SNK)); /* use only the services peer supports */ cfg.psc_mask &= p_scb->p_cap->psc_mask; cfg.psc_mask &= p_scb->peer_cap.psc_mask; p_scb->cur_psc_mask = cfg.psc_mask; if ((uuid_int == UUID_SERVCLASS_AUDIO_SINK) && Loading @@ -1860,11 +1853,6 @@ void bta_av_getcap_results(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { /* open the stream */ AVDT_OpenReq(p_scb->seps[p_scb->sep_idx].av_handle, p_scb->peer_addr, p_scb->sep_info[p_scb->sep_info_idx].seid, &cfg); if (!bta_av_is_rcfg_sst(p_scb)) { /* free capabilities buffer */ osi_free_and_reset((void**)&p_scb->p_cap); } } else { /* try the next stream, if any */ p_scb->sep_info_idx++; Loading Loading @@ -2096,8 +2084,6 @@ void bta_av_reconfig(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { p_scb->num_recfg = 0; /* store the new configuration in control block */ if (p_scb->p_cap == NULL) p_scb->p_cap = (tAVDT_CFG*)osi_malloc(sizeof(tAVDT_CFG)); p_cfg = &p_scb->cfg; alarm_cancel(p_scb->avrc_ct_timer); Loading @@ -2105,7 +2091,7 @@ void bta_av_reconfig(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { APPL_TRACE_DEBUG( "%s: p_scb->sep_info_idx=%d p_scb->rcfg_idx=%d p_rcfg->sep_info_idx=%d", __func__, p_scb->sep_info_idx, p_scb->rcfg_idx, p_rcfg->sep_info_idx); A2DP_DumpCodecInfo(p_scb->p_cap->codec_info); A2DP_DumpCodecInfo(p_scb->peer_cap.codec_info); A2DP_DumpCodecInfo(p_scb->cfg.codec_info); A2DP_DumpCodecInfo(p_rcfg->codec_info); Loading Loading @@ -2676,7 +2662,6 @@ void bta_av_rcfg_str_ok(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { /* rc listen */ bta_av_st_rc_timer(p_scb, NULL); osi_free_and_reset((void**)&p_scb->p_cap); /* No need to keep the role bits once reconfig is done. */ p_scb->role &= ~BTA_AV_ROLE_AD_ACP; Loading system/bta/av/bta_av_act.cc +12 −29 Original line number Diff line number Diff line Loading @@ -743,7 +743,6 @@ tBTA_AV_EVT bta_av_proc_meta_cmd(tAVRC_RESPONSE* p_rc_rsp, uint16_t u16; tAVRC_MSG_VENDOR* p_vendor = &p_msg->msg.vendor; #if (AVRC_METADATA_INCLUDED == TRUE) pdu = *(p_vendor->p_vendor_data); p_rc_rsp->pdu = pdu; *p_ctype = AVRC_RSP_REJ; Loading Loading @@ -809,12 +808,6 @@ tBTA_AV_EVT bta_av_proc_meta_cmd(tAVRC_RESPONSE* p_rc_rsp, break; } } #else APPL_TRACE_DEBUG("AVRCP 1.3 Metadata not supporteed. Reject command."); /* reject invalid message without reporting to app */ evt = 0; p_rc_rsp->rsp.status = AVRC_STS_BAD_CMD; #endif return evt; } Loading @@ -835,12 +828,10 @@ void bta_av_rc_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) { tAVRC_MSG_VENDOR* p_vendor = &p_data->rc_msg.msg.vendor; bool is_inquiry = ((p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_SPEC_INQ) || p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_GEN_INQ); #if (AVRC_METADATA_INCLUDED == TRUE) uint8_t ctype = 0; tAVRC_RESPONSE rc_rsp; rc_rsp.rsp.status = BTA_AV_STS_NO_RSP; #endif if (NULL == p_data) { APPL_TRACE_ERROR("Message from peer with no data in %s", __func__); Loading @@ -861,12 +852,10 @@ void bta_av_rc_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) { "false"); if (p_data->rc_msg.msg.pass.op_id == AVRC_ID_VENDOR) { p_data->rc_msg.msg.hdr.ctype = AVRC_RSP_NOT_IMPL; #if (AVRC_METADATA_INCLUDED == TRUE) if (p_cb->features & BTA_AV_FEAT_METADATA) p_data->rc_msg.msg.hdr.ctype = bta_av_group_navi_supported( p_data->rc_msg.msg.pass.pass_len, p_data->rc_msg.msg.pass.p_pass_data, is_inquiry); #endif } else if (((p_data->rc_msg.msg.pass.op_id == AVRC_ID_VOL_UP) || (p_data->rc_msg.msg.pass.op_id == AVRC_ID_VOL_DOWN)) && !strcmp(avrcp_ct_support, "true")) { Loading Loading @@ -935,38 +924,34 @@ void bta_av_rc_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) { /* if configured to support vendor specific and it's a command */ if ((p_cb->features & BTA_AV_FEAT_VENDOR) && p_data->rc_msg.msg.hdr.ctype <= AVRC_CMD_GEN_INQ) { #if (AVRC_METADATA_INCLUDED == TRUE) if ((p_cb->features & BTA_AV_FEAT_METADATA) && (p_vendor->company_id == AVRC_CO_METADATA)) { av.meta_msg.p_msg = &p_data->rc_msg.msg; rc_rsp.rsp.status = BTA_AV_STS_NO_RSP; evt = bta_av_proc_meta_cmd(&rc_rsp, &p_data->rc_msg, &ctype); } else #endif } else { evt = BTA_AV_VENDOR_CMD_EVT; } /* else if configured to support vendor specific and it's a response */ else if ((p_cb->features & BTA_AV_FEAT_VENDOR) && } else if ((p_cb->features & BTA_AV_FEAT_VENDOR) && p_data->rc_msg.msg.hdr.ctype >= AVRC_RSP_NOT_IMPL) { #if (AVRC_METADATA_INCLUDED == TRUE) /* else if configured to support vendor specific and it's a response */ if ((p_cb->features & BTA_AV_FEAT_METADATA) && (p_vendor->company_id == AVRC_CO_METADATA)) { av.meta_msg.p_msg = &p_data->rc_msg.msg; evt = BTA_AV_META_MSG_EVT; } else #endif } else { evt = BTA_AV_VENDOR_RSP_EVT; } /* else if not configured to support vendor specific and it's a command */ else if (!(p_cb->features & BTA_AV_FEAT_VENDOR) && } else if (!(p_cb->features & BTA_AV_FEAT_VENDOR) && p_data->rc_msg.msg.hdr.ctype <= AVRC_CMD_GEN_INQ) { /* else if not configured to support vendor specific and it's a command */ if (p_data->rc_msg.msg.vendor.p_vendor_data[0] == AVRC_PDU_INVALID) { /* reject it */ p_data->rc_msg.msg.hdr.ctype = AVRC_RSP_REJ; p_data->rc_msg.msg.vendor.p_vendor_data[4] = AVRC_STS_BAD_CMD; } else } else { p_data->rc_msg.msg.hdr.ctype = AVRC_RSP_NOT_IMPL; } AVRC_VendorRsp(p_data->rc_msg.handle, p_data->rc_msg.label, &p_data->rc_msg.msg.vendor); } Loading @@ -982,7 +967,6 @@ void bta_av_rc_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) { evt = BTA_AV_META_MSG_EVT; } #if (AVRC_METADATA_INCLUDED == TRUE) if (evt == 0 && rc_rsp.rsp.status != BTA_AV_STS_NO_RSP) { if (!p_pkt) { rc_rsp.rsp.opcode = p_data->rc_msg.opcode; Loading @@ -991,7 +975,6 @@ void bta_av_rc_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) { if (p_pkt) AVRC_MsgReq(p_data->rc_msg.handle, p_data->rc_msg.label, ctype, p_pkt); } #endif /* call callback */ if (evt != 0) { Loading system/bta/av/bta_av_cfg.cc +0 −22 Original line number Diff line number Diff line Loading @@ -74,13 +74,9 @@ const uint16_t bta_av_audio_flush_to[] = { /* Note: if AVRC_SUPF_TG_GROUP_NAVI is set, bta_av_cfg.avrc_group should be true */ #ifndef BTA_AV_RC_SUPF_TG #if (AVRC_METADATA_INCLUDED == TRUE) #define BTA_AV_RC_SUPF_TG \ (AVRC_SUPF_TG_CAT1 | AVRC_SUPF_TG_MULTI_PLAYER | \ AVRC_SUPF_TG_BROWSE) /* TODO: | AVRC_SUPF_TG_APP_SETTINGS) */ #else #define BTA_AV_RC_SUPF_TG (AVRC_SUPF_TG_CAT1) #endif #endif /* Loading Loading @@ -133,13 +129,8 @@ const uint8_t bta_av_meta_caps_evt_ids_avrcp13[] = { /* This configuration to be used when we are Src + TG + CT( only for abs vol) */ const tBTA_AV_CFG bta_av_cfg = { BTA_AV_RC_COMP_ID, /* AVRCP Company ID */ #if (AVRC_METADATA_INCLUDED == TRUE) 512, /* AVRCP MTU at L2CAP for control channel */ BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */ #else 48, /* AVRCP MTU at L2CAP for control channel */ BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */ #endif BTA_AV_RC_SUPF_CT, /* AVRCP controller categories */ BTA_AV_RC_SUPF_TG, /* AVRCP target categories */ 672, /* AVDTP signaling channel MTU at L2CAP */ Loading Loading @@ -169,11 +160,7 @@ const tBTA_AV_CFG bta_av_cfg = { */ const tBTA_AV_CFG bta_avk_cfg = { AVRC_CO_METADATA, /* AVRCP Company ID */ #if (AVRC_METADATA_INCLUDED == TRUE) 512, /* AVRCP MTU at L2CAP for control channel */ #else 48, /* AVRCP MTU at L2CAP for control channel */ #endif BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */ BTA_AVK_RC_SUPF_CT, /* AVRCP controller categories */ BTA_AVK_RC_SUPF_TG, /* AVRCP target categories */ Loading Loading @@ -203,13 +190,8 @@ const tBTA_AV_CFG bta_avk_cfg = { /* This configuration to be used when we are using AVRCP1.3 */ const tBTA_AV_CFG bta_av_cfg_compatibility = { BTA_AV_RC_COMP_ID, /* AVRCP Company ID */ #if (AVRC_METADATA_INCLUDED == TRUE) 512, /* AVRCP MTU at L2CAP for control channel */ BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */ #else 48, /* AVRCP MTU at L2CAP for control channel */ BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */ #endif BTA_AV_RC_SUPF_CT, /* AVRCP controller categories */ AVRC_SUPF_TG_CAT1, /* Only support CAT1 for AVRCP1.3 */ 672, /* AVDTP signaling channel MTU at L2CAP */ Loading Loading @@ -267,12 +249,8 @@ const uint16_t bta_av_rc_id[] = { #if (BTA_AV_RC_PASS_RSP_CODE == AVRC_RSP_INTERIM) 0x0070, /* PLAY | STOP | PAUSE */ #else /* BTA_AV_RC_PASS_RSP_CODE != AVRC_RSP_INTERIM */ #if (BTA_AVRCP_FF_RW_SUPPORT == TRUE) 0x1b7E, /* PLAY | STOP | PAUSE | FF | RW | VOL_UP | VOL_DOWN | MUTE | FW | BACK */ #else /* BTA_AVRCP_FF_RW_SUPPORT == FALSE */ 0x187E, /* PLAY | STOP | PAUSE | VOL_UP | VOL_DOWN | MUTE | FW | BACK */ #endif /* BTA_AVRCP_FF_RW_SUPPORT */ #endif /* BTA_AV_RC_PASS_RSP_CODE */ 0x0000, /* bit mask: 0=ANGLE, 1=SUBPICT */ Loading system/bta/av/bta_av_int.h +1 −4 Original line number Diff line number Diff line Loading @@ -101,9 +101,7 @@ enum { BTA_AV_AVRC_BROWSE_CLOSE_EVT, BTA_AV_CONN_CHG_EVT, BTA_AV_DEREG_COMP_EVT, #if (AVDT_REPORTING == TRUE) BTA_AV_AVDT_RPT_CONN_EVT, #endif BTA_AV_API_START_EVT, /* the following 2 events must be in the same order as the *AP_*EVT */ BTA_AV_API_STOP_EVT Loading Loading @@ -448,7 +446,7 @@ typedef struct { const tBTA_AV_CO_FUNCTS* p_cos; /* the associated callout functions */ bool sdp_discovery_started; /* variable to determine whether SDP is started */ tBTA_AV_SEP seps[BTAV_A2DP_CODEC_INDEX_MAX]; tAVDT_CFG* p_cap; /* buffer used for get capabilities */ tAVDT_CFG peer_cap; /* buffer used for get capabilities */ list_t* a2dp_list; /* used for audio channels only */ tBTA_AV_Q_INFO q_info; tAVDT_SEP_INFO sep_info[BTA_AV_NUM_SEPS]; /* stream discovery results */ Loading Loading @@ -620,7 +618,6 @@ extern bool bta_av_hdl_event(BT_HDR* p_msg); extern const char* bta_av_evt_code(uint16_t evt_code); extern bool bta_av_switch_if_needed(tBTA_AV_SCB* p_scb); extern bool bta_av_link_role_ok(tBTA_AV_SCB* p_scb, uint8_t bits); extern bool bta_av_is_rcfg_sst(tBTA_AV_SCB* p_scb); /* nsm action functions */ extern void bta_av_api_disconnect(tBTA_AV_DATA* p_data); Loading system/bta/av/bta_av_main.cc +0 −12 Original line number Diff line number Diff line Loading @@ -165,9 +165,7 @@ typedef void (*tBTA_AV_NSM_ACT)(tBTA_AV_DATA* p_data); static void bta_av_api_enable(tBTA_AV_DATA* p_data); static void bta_av_api_register(tBTA_AV_DATA* p_data); static void bta_av_ci_data(tBTA_AV_DATA* p_data); #if (AVDT_REPORTING == TRUE) static void bta_av_rpc_conn(tBTA_AV_DATA* p_data); #endif static void bta_av_api_to_ssm(tBTA_AV_DATA* p_data); static void bta_av_sco_chg_cback(tBTA_SYS_CONN_STATUS status, uint8_t id, Loading @@ -190,9 +188,7 @@ const tBTA_AV_NSM_ACT bta_av_nsm_act[] = { bta_av_rc_browse_closed, /* BTA_AV_AVRC_BROWSE_CLOSE_EVT */ bta_av_conn_chg, /* BTA_AV_CONN_CHG_EVT */ bta_av_dereg_comp, /* BTA_AV_DEREG_COMP_EVT */ #if (AVDT_REPORTING == TRUE) bta_av_rpc_conn, /* BTA_AV_AVDT_RPT_CONN_EVT */ #endif bta_av_api_to_ssm, /* BTA_AV_API_START_EVT */ bta_av_api_to_ssm, /* BTA_AV_API_STOP_EVT */ }; Loading Loading @@ -383,7 +379,6 @@ void bta_av_conn_cback(UNUSED_ATTR uint8_t handle, const RawAddress* bd_addr, } } #if (AVDT_REPORTING == TRUE) /******************************************************************************* * * Function bta_av_a2dp_report_cback Loading @@ -399,7 +394,6 @@ static void bta_av_a2dp_report_cback(UNUSED_ATTR uint8_t handle, /* Do not need to handle report data for now. * This empty function is here for conformance reasons. */ } #endif /******************************************************************************* * Loading Loading @@ -556,12 +550,10 @@ static void bta_av_api_register(tBTA_AV_DATA* p_data) { btav_a2dp_codec_index_t codec_index_max = BTAV_A2DP_CODEC_INDEX_SOURCE_MAX; #if (AVDT_REPORTING == TRUE) if (bta_av_cb.features & BTA_AV_FEAT_REPORT) { cs.cfg.psc_mask |= AVDT_PSC_REPORT; cs.p_report_cback = bta_av_a2dp_report_cback; } #endif if (bta_av_cb.features & BTA_AV_FEAT_DELAY_RPT) cs.cfg.psc_mask |= AVDT_PSC_DELAY_RPT; Loading Loading @@ -740,9 +732,7 @@ static void bta_av_ci_data(tBTA_AV_DATA* p_data) { * Returns void * ******************************************************************************/ #if (AVDT_REPORTING == TRUE) static void bta_av_rpc_conn(UNUSED_ATTR tBTA_AV_DATA* p_data) {} #endif /******************************************************************************* * Loading Loading @@ -1346,10 +1336,8 @@ const char* bta_av_evt_code(uint16_t evt_code) { return "CONN_CHG"; case BTA_AV_DEREG_COMP_EVT: return "DEREG_COMP"; #if (AVDT_REPORTING == TRUE) case BTA_AV_AVDT_RPT_CONN_EVT: return "RPT_CONN"; #endif case BTA_AV_API_START_EVT: return "API_START"; case BTA_AV_API_STOP_EVT: Loading Loading
system/bta/av/bta_av_aact.cc +11 −26 Original line number Diff line number Diff line Loading @@ -166,10 +166,8 @@ static const uint16_t bta_av_stream_evt_ok[] = { BTA_AV_STR_WRITE_CFM_EVT, /* AVDT_WRITE_CFM_EVT */ BTA_AV_AVDT_CONNECT_EVT, /* AVDT_CONNECT_IND_EVT */ BTA_AV_AVDT_DISCONNECT_EVT, /* AVDT_DISCONNECT_IND_EVT */ #if (AVDT_REPORTING == TRUE) BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_CONN_EVT */ BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_DISCONN_EVT */ #endif BTA_AV_AVDT_DELAY_RPT_EVT, /* AVDT_DELAY_REPORT_EVT */ 0 /* AVDT_DELAY_REPORT_CFM_EVT */ }; Loading @@ -193,10 +191,8 @@ static const uint16_t bta_av_stream_evt_fail[] = { BTA_AV_STR_WRITE_CFM_EVT, /* AVDT_WRITE_CFM_EVT */ BTA_AV_AVDT_CONNECT_EVT, /* AVDT_CONNECT_IND_EVT */ BTA_AV_AVDT_DISCONNECT_EVT, /* AVDT_DISCONNECT_IND_EVT */ #if (AVDT_REPORTING == TRUE) BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_CONN_EVT */ BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_DISCONN_EVT */ #endif BTA_AV_AVDT_DELAY_RPT_EVT, /* AVDT_DELAY_REPORT_EVT */ 0 /* AVDT_DELAY_REPORT_CFM_EVT */ }; Loading Loading @@ -388,15 +384,13 @@ static bool bta_av_next_getcap(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { p_scb->sep_info_idx = i; /* we got a stream; get its capabilities */ if (p_scb->p_cap == NULL) p_scb->p_cap = (tAVDT_CFG*)osi_malloc(sizeof(tAVDT_CFG)); if ((p_scb->avdt_version >= AVDT_VERSION_1_3) && (A2DP_GetAvdtpVersion() >= AVDT_VERSION_1_3)) { p_req = AVDT_GetAllCapReq; } else { p_req = AVDT_GetCapReq; } (*p_req)(p_scb->peer_addr, p_scb->sep_info[i].seid, p_scb->p_cap, (*p_req)(p_scb->peer_addr, p_scb->sep_info[i].seid, &p_scb->peer_cap, bta_av_dt_cback[p_scb->hdi]); sent_cmd = true; break; Loading Loading @@ -1028,7 +1022,6 @@ void bta_av_cleanup(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) { APPL_TRACE_DEBUG("%s", __func__); /* free any buffers */ osi_free_and_reset((void**)&p_scb->p_cap); p_scb->sdp_discovery_started = false; p_scb->avdt_version = 0; Loading Loading @@ -1665,9 +1658,9 @@ void bta_av_save_caps(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { APPL_TRACE_DEBUG("%s: num_seps:%d sep_info_idx:%d wait:x%x", __func__, p_scb->num_seps, p_scb->sep_info_idx, p_scb->wait); A2DP_DumpCodecInfo(p_scb->p_cap->codec_info); A2DP_DumpCodecInfo(p_scb->peer_cap.codec_info); memcpy(&cfg, p_scb->p_cap, sizeof(tAVDT_CFG)); memcpy(&cfg, &p_scb->peer_cap, sizeof(tAVDT_CFG)); /* let application know the capability of the SNK */ p_scb->p_cos->getcfg(p_scb->hndl, cfg.codec_info, &p_scb->sep_info_idx, p_info->seid, &cfg.num_protect, cfg.protect_info); Loading Loading @@ -1808,18 +1801,18 @@ void bta_av_getcap_results(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { memcpy(&cfg, &p_scb->cfg, sizeof(tAVDT_CFG)); cfg.num_codec = 1; cfg.num_protect = p_scb->p_cap->num_protect; memcpy(cfg.codec_info, p_scb->p_cap->codec_info, AVDT_CODEC_SIZE); memcpy(cfg.protect_info, p_scb->p_cap->protect_info, AVDT_PROTECT_SIZE); media_type = A2DP_GetMediaType(p_scb->p_cap->codec_info); cfg.num_protect = p_scb->peer_cap.num_protect; memcpy(cfg.codec_info, p_scb->peer_cap.codec_info, AVDT_CODEC_SIZE); memcpy(cfg.protect_info, p_scb->peer_cap.protect_info, AVDT_PROTECT_SIZE); media_type = A2DP_GetMediaType(p_scb->peer_cap.codec_info); APPL_TRACE_DEBUG("%s: num_codec %d", __func__, p_scb->p_cap->num_codec); APPL_TRACE_DEBUG("%s: num_codec %d", __func__, p_scb->peer_cap.num_codec); APPL_TRACE_DEBUG("%s: media type x%x, x%x", __func__, media_type, p_scb->media_type); A2DP_DumpCodecInfo(p_scb->cfg.codec_info); /* if codec present and we get a codec configuration */ if ((p_scb->p_cap->num_codec != 0) && (media_type == p_scb->media_type) && if ((p_scb->peer_cap.num_codec != 0) && (media_type == p_scb->media_type) && (p_scb->p_cos->getcfg(p_scb->hndl, cfg.codec_info, &p_scb->sep_info_idx, p_info->seid, &cfg.num_protect, cfg.protect_info) == A2DP_SUCCESS)) { Loading @@ -1840,7 +1833,7 @@ void bta_av_getcap_results(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { bta_av_get_scb_handle(p_scb, AVDT_TSEP_SNK)); /* use only the services peer supports */ cfg.psc_mask &= p_scb->p_cap->psc_mask; cfg.psc_mask &= p_scb->peer_cap.psc_mask; p_scb->cur_psc_mask = cfg.psc_mask; if ((uuid_int == UUID_SERVCLASS_AUDIO_SINK) && Loading @@ -1860,11 +1853,6 @@ void bta_av_getcap_results(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { /* open the stream */ AVDT_OpenReq(p_scb->seps[p_scb->sep_idx].av_handle, p_scb->peer_addr, p_scb->sep_info[p_scb->sep_info_idx].seid, &cfg); if (!bta_av_is_rcfg_sst(p_scb)) { /* free capabilities buffer */ osi_free_and_reset((void**)&p_scb->p_cap); } } else { /* try the next stream, if any */ p_scb->sep_info_idx++; Loading Loading @@ -2096,8 +2084,6 @@ void bta_av_reconfig(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { p_scb->num_recfg = 0; /* store the new configuration in control block */ if (p_scb->p_cap == NULL) p_scb->p_cap = (tAVDT_CFG*)osi_malloc(sizeof(tAVDT_CFG)); p_cfg = &p_scb->cfg; alarm_cancel(p_scb->avrc_ct_timer); Loading @@ -2105,7 +2091,7 @@ void bta_av_reconfig(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { APPL_TRACE_DEBUG( "%s: p_scb->sep_info_idx=%d p_scb->rcfg_idx=%d p_rcfg->sep_info_idx=%d", __func__, p_scb->sep_info_idx, p_scb->rcfg_idx, p_rcfg->sep_info_idx); A2DP_DumpCodecInfo(p_scb->p_cap->codec_info); A2DP_DumpCodecInfo(p_scb->peer_cap.codec_info); A2DP_DumpCodecInfo(p_scb->cfg.codec_info); A2DP_DumpCodecInfo(p_rcfg->codec_info); Loading Loading @@ -2676,7 +2662,6 @@ void bta_av_rcfg_str_ok(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { /* rc listen */ bta_av_st_rc_timer(p_scb, NULL); osi_free_and_reset((void**)&p_scb->p_cap); /* No need to keep the role bits once reconfig is done. */ p_scb->role &= ~BTA_AV_ROLE_AD_ACP; Loading
system/bta/av/bta_av_act.cc +12 −29 Original line number Diff line number Diff line Loading @@ -743,7 +743,6 @@ tBTA_AV_EVT bta_av_proc_meta_cmd(tAVRC_RESPONSE* p_rc_rsp, uint16_t u16; tAVRC_MSG_VENDOR* p_vendor = &p_msg->msg.vendor; #if (AVRC_METADATA_INCLUDED == TRUE) pdu = *(p_vendor->p_vendor_data); p_rc_rsp->pdu = pdu; *p_ctype = AVRC_RSP_REJ; Loading Loading @@ -809,12 +808,6 @@ tBTA_AV_EVT bta_av_proc_meta_cmd(tAVRC_RESPONSE* p_rc_rsp, break; } } #else APPL_TRACE_DEBUG("AVRCP 1.3 Metadata not supporteed. Reject command."); /* reject invalid message without reporting to app */ evt = 0; p_rc_rsp->rsp.status = AVRC_STS_BAD_CMD; #endif return evt; } Loading @@ -835,12 +828,10 @@ void bta_av_rc_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) { tAVRC_MSG_VENDOR* p_vendor = &p_data->rc_msg.msg.vendor; bool is_inquiry = ((p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_SPEC_INQ) || p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_GEN_INQ); #if (AVRC_METADATA_INCLUDED == TRUE) uint8_t ctype = 0; tAVRC_RESPONSE rc_rsp; rc_rsp.rsp.status = BTA_AV_STS_NO_RSP; #endif if (NULL == p_data) { APPL_TRACE_ERROR("Message from peer with no data in %s", __func__); Loading @@ -861,12 +852,10 @@ void bta_av_rc_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) { "false"); if (p_data->rc_msg.msg.pass.op_id == AVRC_ID_VENDOR) { p_data->rc_msg.msg.hdr.ctype = AVRC_RSP_NOT_IMPL; #if (AVRC_METADATA_INCLUDED == TRUE) if (p_cb->features & BTA_AV_FEAT_METADATA) p_data->rc_msg.msg.hdr.ctype = bta_av_group_navi_supported( p_data->rc_msg.msg.pass.pass_len, p_data->rc_msg.msg.pass.p_pass_data, is_inquiry); #endif } else if (((p_data->rc_msg.msg.pass.op_id == AVRC_ID_VOL_UP) || (p_data->rc_msg.msg.pass.op_id == AVRC_ID_VOL_DOWN)) && !strcmp(avrcp_ct_support, "true")) { Loading Loading @@ -935,38 +924,34 @@ void bta_av_rc_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) { /* if configured to support vendor specific and it's a command */ if ((p_cb->features & BTA_AV_FEAT_VENDOR) && p_data->rc_msg.msg.hdr.ctype <= AVRC_CMD_GEN_INQ) { #if (AVRC_METADATA_INCLUDED == TRUE) if ((p_cb->features & BTA_AV_FEAT_METADATA) && (p_vendor->company_id == AVRC_CO_METADATA)) { av.meta_msg.p_msg = &p_data->rc_msg.msg; rc_rsp.rsp.status = BTA_AV_STS_NO_RSP; evt = bta_av_proc_meta_cmd(&rc_rsp, &p_data->rc_msg, &ctype); } else #endif } else { evt = BTA_AV_VENDOR_CMD_EVT; } /* else if configured to support vendor specific and it's a response */ else if ((p_cb->features & BTA_AV_FEAT_VENDOR) && } else if ((p_cb->features & BTA_AV_FEAT_VENDOR) && p_data->rc_msg.msg.hdr.ctype >= AVRC_RSP_NOT_IMPL) { #if (AVRC_METADATA_INCLUDED == TRUE) /* else if configured to support vendor specific and it's a response */ if ((p_cb->features & BTA_AV_FEAT_METADATA) && (p_vendor->company_id == AVRC_CO_METADATA)) { av.meta_msg.p_msg = &p_data->rc_msg.msg; evt = BTA_AV_META_MSG_EVT; } else #endif } else { evt = BTA_AV_VENDOR_RSP_EVT; } /* else if not configured to support vendor specific and it's a command */ else if (!(p_cb->features & BTA_AV_FEAT_VENDOR) && } else if (!(p_cb->features & BTA_AV_FEAT_VENDOR) && p_data->rc_msg.msg.hdr.ctype <= AVRC_CMD_GEN_INQ) { /* else if not configured to support vendor specific and it's a command */ if (p_data->rc_msg.msg.vendor.p_vendor_data[0] == AVRC_PDU_INVALID) { /* reject it */ p_data->rc_msg.msg.hdr.ctype = AVRC_RSP_REJ; p_data->rc_msg.msg.vendor.p_vendor_data[4] = AVRC_STS_BAD_CMD; } else } else { p_data->rc_msg.msg.hdr.ctype = AVRC_RSP_NOT_IMPL; } AVRC_VendorRsp(p_data->rc_msg.handle, p_data->rc_msg.label, &p_data->rc_msg.msg.vendor); } Loading @@ -982,7 +967,6 @@ void bta_av_rc_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) { evt = BTA_AV_META_MSG_EVT; } #if (AVRC_METADATA_INCLUDED == TRUE) if (evt == 0 && rc_rsp.rsp.status != BTA_AV_STS_NO_RSP) { if (!p_pkt) { rc_rsp.rsp.opcode = p_data->rc_msg.opcode; Loading @@ -991,7 +975,6 @@ void bta_av_rc_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) { if (p_pkt) AVRC_MsgReq(p_data->rc_msg.handle, p_data->rc_msg.label, ctype, p_pkt); } #endif /* call callback */ if (evt != 0) { Loading
system/bta/av/bta_av_cfg.cc +0 −22 Original line number Diff line number Diff line Loading @@ -74,13 +74,9 @@ const uint16_t bta_av_audio_flush_to[] = { /* Note: if AVRC_SUPF_TG_GROUP_NAVI is set, bta_av_cfg.avrc_group should be true */ #ifndef BTA_AV_RC_SUPF_TG #if (AVRC_METADATA_INCLUDED == TRUE) #define BTA_AV_RC_SUPF_TG \ (AVRC_SUPF_TG_CAT1 | AVRC_SUPF_TG_MULTI_PLAYER | \ AVRC_SUPF_TG_BROWSE) /* TODO: | AVRC_SUPF_TG_APP_SETTINGS) */ #else #define BTA_AV_RC_SUPF_TG (AVRC_SUPF_TG_CAT1) #endif #endif /* Loading Loading @@ -133,13 +129,8 @@ const uint8_t bta_av_meta_caps_evt_ids_avrcp13[] = { /* This configuration to be used when we are Src + TG + CT( only for abs vol) */ const tBTA_AV_CFG bta_av_cfg = { BTA_AV_RC_COMP_ID, /* AVRCP Company ID */ #if (AVRC_METADATA_INCLUDED == TRUE) 512, /* AVRCP MTU at L2CAP for control channel */ BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */ #else 48, /* AVRCP MTU at L2CAP for control channel */ BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */ #endif BTA_AV_RC_SUPF_CT, /* AVRCP controller categories */ BTA_AV_RC_SUPF_TG, /* AVRCP target categories */ 672, /* AVDTP signaling channel MTU at L2CAP */ Loading Loading @@ -169,11 +160,7 @@ const tBTA_AV_CFG bta_av_cfg = { */ const tBTA_AV_CFG bta_avk_cfg = { AVRC_CO_METADATA, /* AVRCP Company ID */ #if (AVRC_METADATA_INCLUDED == TRUE) 512, /* AVRCP MTU at L2CAP for control channel */ #else 48, /* AVRCP MTU at L2CAP for control channel */ #endif BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */ BTA_AVK_RC_SUPF_CT, /* AVRCP controller categories */ BTA_AVK_RC_SUPF_TG, /* AVRCP target categories */ Loading Loading @@ -203,13 +190,8 @@ const tBTA_AV_CFG bta_avk_cfg = { /* This configuration to be used when we are using AVRCP1.3 */ const tBTA_AV_CFG bta_av_cfg_compatibility = { BTA_AV_RC_COMP_ID, /* AVRCP Company ID */ #if (AVRC_METADATA_INCLUDED == TRUE) 512, /* AVRCP MTU at L2CAP for control channel */ BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */ #else 48, /* AVRCP MTU at L2CAP for control channel */ BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */ #endif BTA_AV_RC_SUPF_CT, /* AVRCP controller categories */ AVRC_SUPF_TG_CAT1, /* Only support CAT1 for AVRCP1.3 */ 672, /* AVDTP signaling channel MTU at L2CAP */ Loading Loading @@ -267,12 +249,8 @@ const uint16_t bta_av_rc_id[] = { #if (BTA_AV_RC_PASS_RSP_CODE == AVRC_RSP_INTERIM) 0x0070, /* PLAY | STOP | PAUSE */ #else /* BTA_AV_RC_PASS_RSP_CODE != AVRC_RSP_INTERIM */ #if (BTA_AVRCP_FF_RW_SUPPORT == TRUE) 0x1b7E, /* PLAY | STOP | PAUSE | FF | RW | VOL_UP | VOL_DOWN | MUTE | FW | BACK */ #else /* BTA_AVRCP_FF_RW_SUPPORT == FALSE */ 0x187E, /* PLAY | STOP | PAUSE | VOL_UP | VOL_DOWN | MUTE | FW | BACK */ #endif /* BTA_AVRCP_FF_RW_SUPPORT */ #endif /* BTA_AV_RC_PASS_RSP_CODE */ 0x0000, /* bit mask: 0=ANGLE, 1=SUBPICT */ Loading
system/bta/av/bta_av_int.h +1 −4 Original line number Diff line number Diff line Loading @@ -101,9 +101,7 @@ enum { BTA_AV_AVRC_BROWSE_CLOSE_EVT, BTA_AV_CONN_CHG_EVT, BTA_AV_DEREG_COMP_EVT, #if (AVDT_REPORTING == TRUE) BTA_AV_AVDT_RPT_CONN_EVT, #endif BTA_AV_API_START_EVT, /* the following 2 events must be in the same order as the *AP_*EVT */ BTA_AV_API_STOP_EVT Loading Loading @@ -448,7 +446,7 @@ typedef struct { const tBTA_AV_CO_FUNCTS* p_cos; /* the associated callout functions */ bool sdp_discovery_started; /* variable to determine whether SDP is started */ tBTA_AV_SEP seps[BTAV_A2DP_CODEC_INDEX_MAX]; tAVDT_CFG* p_cap; /* buffer used for get capabilities */ tAVDT_CFG peer_cap; /* buffer used for get capabilities */ list_t* a2dp_list; /* used for audio channels only */ tBTA_AV_Q_INFO q_info; tAVDT_SEP_INFO sep_info[BTA_AV_NUM_SEPS]; /* stream discovery results */ Loading Loading @@ -620,7 +618,6 @@ extern bool bta_av_hdl_event(BT_HDR* p_msg); extern const char* bta_av_evt_code(uint16_t evt_code); extern bool bta_av_switch_if_needed(tBTA_AV_SCB* p_scb); extern bool bta_av_link_role_ok(tBTA_AV_SCB* p_scb, uint8_t bits); extern bool bta_av_is_rcfg_sst(tBTA_AV_SCB* p_scb); /* nsm action functions */ extern void bta_av_api_disconnect(tBTA_AV_DATA* p_data); Loading
system/bta/av/bta_av_main.cc +0 −12 Original line number Diff line number Diff line Loading @@ -165,9 +165,7 @@ typedef void (*tBTA_AV_NSM_ACT)(tBTA_AV_DATA* p_data); static void bta_av_api_enable(tBTA_AV_DATA* p_data); static void bta_av_api_register(tBTA_AV_DATA* p_data); static void bta_av_ci_data(tBTA_AV_DATA* p_data); #if (AVDT_REPORTING == TRUE) static void bta_av_rpc_conn(tBTA_AV_DATA* p_data); #endif static void bta_av_api_to_ssm(tBTA_AV_DATA* p_data); static void bta_av_sco_chg_cback(tBTA_SYS_CONN_STATUS status, uint8_t id, Loading @@ -190,9 +188,7 @@ const tBTA_AV_NSM_ACT bta_av_nsm_act[] = { bta_av_rc_browse_closed, /* BTA_AV_AVRC_BROWSE_CLOSE_EVT */ bta_av_conn_chg, /* BTA_AV_CONN_CHG_EVT */ bta_av_dereg_comp, /* BTA_AV_DEREG_COMP_EVT */ #if (AVDT_REPORTING == TRUE) bta_av_rpc_conn, /* BTA_AV_AVDT_RPT_CONN_EVT */ #endif bta_av_api_to_ssm, /* BTA_AV_API_START_EVT */ bta_av_api_to_ssm, /* BTA_AV_API_STOP_EVT */ }; Loading Loading @@ -383,7 +379,6 @@ void bta_av_conn_cback(UNUSED_ATTR uint8_t handle, const RawAddress* bd_addr, } } #if (AVDT_REPORTING == TRUE) /******************************************************************************* * * Function bta_av_a2dp_report_cback Loading @@ -399,7 +394,6 @@ static void bta_av_a2dp_report_cback(UNUSED_ATTR uint8_t handle, /* Do not need to handle report data for now. * This empty function is here for conformance reasons. */ } #endif /******************************************************************************* * Loading Loading @@ -556,12 +550,10 @@ static void bta_av_api_register(tBTA_AV_DATA* p_data) { btav_a2dp_codec_index_t codec_index_max = BTAV_A2DP_CODEC_INDEX_SOURCE_MAX; #if (AVDT_REPORTING == TRUE) if (bta_av_cb.features & BTA_AV_FEAT_REPORT) { cs.cfg.psc_mask |= AVDT_PSC_REPORT; cs.p_report_cback = bta_av_a2dp_report_cback; } #endif if (bta_av_cb.features & BTA_AV_FEAT_DELAY_RPT) cs.cfg.psc_mask |= AVDT_PSC_DELAY_RPT; Loading Loading @@ -740,9 +732,7 @@ static void bta_av_ci_data(tBTA_AV_DATA* p_data) { * Returns void * ******************************************************************************/ #if (AVDT_REPORTING == TRUE) static void bta_av_rpc_conn(UNUSED_ATTR tBTA_AV_DATA* p_data) {} #endif /******************************************************************************* * Loading Loading @@ -1346,10 +1336,8 @@ const char* bta_av_evt_code(uint16_t evt_code) { return "CONN_CHG"; case BTA_AV_DEREG_COMP_EVT: return "DEREG_COMP"; #if (AVDT_REPORTING == TRUE) case BTA_AV_AVDT_RPT_CONN_EVT: return "RPT_CONN"; #endif case BTA_AV_API_START_EVT: return "API_START"; case BTA_AV_API_STOP_EVT: Loading