Loading system/bta/av/bta_av_aact.cc +17 −21 Original line number Diff line number Diff line Loading @@ -1891,15 +1891,13 @@ void bta_av_str_stopped(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { BTM_unblock_role_switch_and_sniff_mode_for(p_scb->PeerAddress()); if (p_scb->co_started) { uint16_t handle = get_btm_client_interface().lifecycle.BTM_GetHCIConnHandle( p_scb->PeerAddress(), BT_TRANSPORT_BR_EDR); if (bta_av_cb.offload_started_acl_hdl == handle) { if (bta_av_cb.offload_started_hndl == p_scb->hndl) { bta_av_vendor_offload_stop(); bta_av_cb.offload_started_acl_hdl = HCI_INVALID_HANDLE; } else if (bta_av_cb.offload_start_pending_acl_hdl == handle) { bta_av_cb.offload_started_hndl = 0; } else if (bta_av_cb.offload_start_pending_hndl == p_scb->hndl) { APPL_TRACE_WARNING("%s: Stop pending offload start command", __func__); bta_av_vendor_offload_stop(); bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_start_pending_hndl = 0; } bta_av_stream_chg(p_scb, false); Loading Loading @@ -2521,15 +2519,13 @@ void bta_av_suspend_cfm(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { /* in case that we received suspend_ind, we may need to call co_stop here */ if (p_scb->co_started) { uint16_t handle = get_btm_client_interface().lifecycle.BTM_GetHCIConnHandle( p_scb->PeerAddress(), BT_TRANSPORT_BR_EDR); if (bta_av_cb.offload_started_acl_hdl == handle) { if (bta_av_cb.offload_started_hndl == p_scb->hndl) { bta_av_vendor_offload_stop(); bta_av_cb.offload_started_acl_hdl = HCI_INVALID_HANDLE; } else if (bta_av_cb.offload_start_pending_acl_hdl == handle) { bta_av_cb.offload_started_hndl = 0; } else if (bta_av_cb.offload_start_pending_hndl == p_scb->hndl) { APPL_TRACE_WARNING("%s: Stop pending offload start command", __func__); bta_av_vendor_offload_stop(); bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_start_pending_hndl = 0; } bta_av_stream_chg(p_scb, false); Loading Loading @@ -3020,10 +3016,10 @@ void offload_vendor_callback(tBTM_VSC_CMPL* param) { APPL_TRACE_DEBUG("%s: VS_HCI_STOP_A2DP_MEDIA successful", __func__); break; case VS_HCI_A2DP_OFFLOAD_START: if (bta_av_cb.offload_start_pending_acl_hdl != HCI_INVALID_HANDLE) { bta_av_cb.offload_started_acl_hdl = bta_av_cb.offload_start_pending_acl_hdl; bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; if (bta_av_cb.offload_start_pending_hndl) { APPL_TRACE_DEBUG("%s: VS_HCI_START_A2DP_MEDIA successful", __func__); bta_av_cb.offload_started_hndl = bta_av_cb.offload_start_pending_hndl; bta_av_cb.offload_start_pending_hndl = 0; } else { LOG_INFO("%s: No pending start command due to AVDTP suspend immediately", __func__); } Loading @@ -3036,7 +3032,7 @@ void offload_vendor_callback(tBTM_VSC_CMPL* param) { APPL_TRACE_DEBUG("%s: Offload failed for subopcode= %d", __func__, sub_opcode); if (param->opcode != VS_HCI_A2DP_OFFLOAD_STOP) { bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_start_pending_hndl = 0; (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, &value); } } Loading @@ -3063,7 +3059,7 @@ void bta_av_vendor_offload_start(tBTA_AV_SCB* p_scb, UINT16_TO_STREAM(p_param, offload_start->mtu); ARRAY_TO_STREAM(p_param, offload_start->codec_info, (int8_t)sizeof(offload_start->codec_info)); bta_av_cb.offload_start_pending_acl_hdl = offload_start->acl_hdl; bta_av_cb.offload_start_pending_hndl = p_scb->hndl; LOG_INFO( "codec: %#x, sample rate: %#x, bit depth: %#x, channel: %#x, bitrate: " "%#x, ACL: %#x, L2CAP: %#x, MTU: %#x", Loading Loading @@ -3103,8 +3099,8 @@ void bta_av_offload_req(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { /* Support offload if only one audio source stream is open. */ if (p_scb->started != true) { status = BTA_AV_FAIL_STREAM; } else if (bta_av_cb.offload_start_pending_acl_hdl != HCI_INVALID_HANDLE || bta_av_cb.offload_started_acl_hdl != HCI_INVALID_HANDLE) { } else if (bta_av_cb.offload_start_pending_hndl || bta_av_cb.offload_started_hndl) { APPL_TRACE_WARNING("%s: offload already started, ignore request", __func__); return; } else { Loading Loading @@ -3176,7 +3172,7 @@ void bta_av_offload_rsp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { status = BTA_AV_FAIL_STREAM; } bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_start_pending_hndl = 0; tBTA_AV bta_av_data; bta_av_data.status = status; (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, &bta_av_data); Loading system/bta/av/bta_av_int.h +2 −2 Original line number Diff line number Diff line Loading @@ -637,8 +637,8 @@ typedef struct { uint8_t rc_acp_idx; /* (index + 1) to RCB */ uint8_t rs_idx; /* (index + 1) to SCB for the one waiting for RS on open */ bool sco_occupied; /* true if SCO is being used or call is in progress */ uint16_t offload_start_pending_acl_hdl; uint16_t offload_started_acl_hdl; uint16_t offload_start_pending_hndl; uint16_t offload_started_hndl; } tBTA_AV_CB; // total attempts are half seconds Loading system/bta/av/bta_av_main.cc +4 −15 Original line number Diff line number Diff line Loading @@ -166,8 +166,8 @@ static void bta_av_api_enable(tBTA_AV_DATA* p_data) { /* store parameters */ bta_av_cb.p_cback = p_data->api_enable.p_cback; bta_av_cb.features = p_data->api_enable.features; bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_started_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_start_pending_hndl = 0; bta_av_cb.offload_started_hndl = 0; tBTA_AV_ENABLE enable; enable.features = bta_av_cb.features; Loading Loading @@ -340,16 +340,6 @@ void bta_av_conn_cback(UNUSED_ATTR uint8_t handle, const RawAddress& bd_addr, evt = BTA_AV_SIG_CHG_EVT; if (event == AVDT_DISCONNECT_IND_EVT) { p_scb = bta_av_addr_to_scb(bd_addr); if (p_scb) { uint16_t handle = BTM_GetHCIConnHandle(p_scb->PeerAddress(), BT_TRANSPORT_BR_EDR); if (bta_av_cb.offload_started_acl_hdl == handle || bta_av_cb.offload_start_pending_acl_hdl == handle) { LOG_INFO("%s: Cleanup offload related flag", __func__); bta_av_cb.offload_started_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; } } } else if (event == AVDT_CONNECT_IND_EVT) { APPL_TRACE_DEBUG("%s: CONN_IND is ACP:%d", __func__, p_data->hdr.err_param); Loading Loading @@ -1420,9 +1410,8 @@ void bta_debug_av_dump(int fd) { dprintf(fd, " Registered audio channels mask: 0x%x\n", bta_av_cb.reg_audio); dprintf(fd, " Connected LCBs mask: 0x%x\n", bta_av_cb.conn_lcb); dprintf(fd, " Offload start pending handle: %d\n", bta_av_cb.offload_start_pending_acl_hdl); dprintf(fd, " Offload started handle: %d\n", bta_av_cb.offload_started_acl_hdl); bta_av_cb.offload_start_pending_hndl); dprintf(fd, " Offload started handle: %d\n", bta_av_cb.offload_started_hndl); for (size_t i = 0; i < sizeof(bta_av_cb.lcb) / sizeof(bta_av_cb.lcb[0]); i++) { Loading Loading
system/bta/av/bta_av_aact.cc +17 −21 Original line number Diff line number Diff line Loading @@ -1891,15 +1891,13 @@ void bta_av_str_stopped(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { BTM_unblock_role_switch_and_sniff_mode_for(p_scb->PeerAddress()); if (p_scb->co_started) { uint16_t handle = get_btm_client_interface().lifecycle.BTM_GetHCIConnHandle( p_scb->PeerAddress(), BT_TRANSPORT_BR_EDR); if (bta_av_cb.offload_started_acl_hdl == handle) { if (bta_av_cb.offload_started_hndl == p_scb->hndl) { bta_av_vendor_offload_stop(); bta_av_cb.offload_started_acl_hdl = HCI_INVALID_HANDLE; } else if (bta_av_cb.offload_start_pending_acl_hdl == handle) { bta_av_cb.offload_started_hndl = 0; } else if (bta_av_cb.offload_start_pending_hndl == p_scb->hndl) { APPL_TRACE_WARNING("%s: Stop pending offload start command", __func__); bta_av_vendor_offload_stop(); bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_start_pending_hndl = 0; } bta_av_stream_chg(p_scb, false); Loading Loading @@ -2521,15 +2519,13 @@ void bta_av_suspend_cfm(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { /* in case that we received suspend_ind, we may need to call co_stop here */ if (p_scb->co_started) { uint16_t handle = get_btm_client_interface().lifecycle.BTM_GetHCIConnHandle( p_scb->PeerAddress(), BT_TRANSPORT_BR_EDR); if (bta_av_cb.offload_started_acl_hdl == handle) { if (bta_av_cb.offload_started_hndl == p_scb->hndl) { bta_av_vendor_offload_stop(); bta_av_cb.offload_started_acl_hdl = HCI_INVALID_HANDLE; } else if (bta_av_cb.offload_start_pending_acl_hdl == handle) { bta_av_cb.offload_started_hndl = 0; } else if (bta_av_cb.offload_start_pending_hndl == p_scb->hndl) { APPL_TRACE_WARNING("%s: Stop pending offload start command", __func__); bta_av_vendor_offload_stop(); bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_start_pending_hndl = 0; } bta_av_stream_chg(p_scb, false); Loading Loading @@ -3020,10 +3016,10 @@ void offload_vendor_callback(tBTM_VSC_CMPL* param) { APPL_TRACE_DEBUG("%s: VS_HCI_STOP_A2DP_MEDIA successful", __func__); break; case VS_HCI_A2DP_OFFLOAD_START: if (bta_av_cb.offload_start_pending_acl_hdl != HCI_INVALID_HANDLE) { bta_av_cb.offload_started_acl_hdl = bta_av_cb.offload_start_pending_acl_hdl; bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; if (bta_av_cb.offload_start_pending_hndl) { APPL_TRACE_DEBUG("%s: VS_HCI_START_A2DP_MEDIA successful", __func__); bta_av_cb.offload_started_hndl = bta_av_cb.offload_start_pending_hndl; bta_av_cb.offload_start_pending_hndl = 0; } else { LOG_INFO("%s: No pending start command due to AVDTP suspend immediately", __func__); } Loading @@ -3036,7 +3032,7 @@ void offload_vendor_callback(tBTM_VSC_CMPL* param) { APPL_TRACE_DEBUG("%s: Offload failed for subopcode= %d", __func__, sub_opcode); if (param->opcode != VS_HCI_A2DP_OFFLOAD_STOP) { bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_start_pending_hndl = 0; (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, &value); } } Loading @@ -3063,7 +3059,7 @@ void bta_av_vendor_offload_start(tBTA_AV_SCB* p_scb, UINT16_TO_STREAM(p_param, offload_start->mtu); ARRAY_TO_STREAM(p_param, offload_start->codec_info, (int8_t)sizeof(offload_start->codec_info)); bta_av_cb.offload_start_pending_acl_hdl = offload_start->acl_hdl; bta_av_cb.offload_start_pending_hndl = p_scb->hndl; LOG_INFO( "codec: %#x, sample rate: %#x, bit depth: %#x, channel: %#x, bitrate: " "%#x, ACL: %#x, L2CAP: %#x, MTU: %#x", Loading Loading @@ -3103,8 +3099,8 @@ void bta_av_offload_req(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { /* Support offload if only one audio source stream is open. */ if (p_scb->started != true) { status = BTA_AV_FAIL_STREAM; } else if (bta_av_cb.offload_start_pending_acl_hdl != HCI_INVALID_HANDLE || bta_av_cb.offload_started_acl_hdl != HCI_INVALID_HANDLE) { } else if (bta_av_cb.offload_start_pending_hndl || bta_av_cb.offload_started_hndl) { APPL_TRACE_WARNING("%s: offload already started, ignore request", __func__); return; } else { Loading Loading @@ -3176,7 +3172,7 @@ void bta_av_offload_rsp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) { status = BTA_AV_FAIL_STREAM; } bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_start_pending_hndl = 0; tBTA_AV bta_av_data; bta_av_data.status = status; (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, &bta_av_data); Loading
system/bta/av/bta_av_int.h +2 −2 Original line number Diff line number Diff line Loading @@ -637,8 +637,8 @@ typedef struct { uint8_t rc_acp_idx; /* (index + 1) to RCB */ uint8_t rs_idx; /* (index + 1) to SCB for the one waiting for RS on open */ bool sco_occupied; /* true if SCO is being used or call is in progress */ uint16_t offload_start_pending_acl_hdl; uint16_t offload_started_acl_hdl; uint16_t offload_start_pending_hndl; uint16_t offload_started_hndl; } tBTA_AV_CB; // total attempts are half seconds Loading
system/bta/av/bta_av_main.cc +4 −15 Original line number Diff line number Diff line Loading @@ -166,8 +166,8 @@ static void bta_av_api_enable(tBTA_AV_DATA* p_data) { /* store parameters */ bta_av_cb.p_cback = p_data->api_enable.p_cback; bta_av_cb.features = p_data->api_enable.features; bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_started_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_start_pending_hndl = 0; bta_av_cb.offload_started_hndl = 0; tBTA_AV_ENABLE enable; enable.features = bta_av_cb.features; Loading Loading @@ -340,16 +340,6 @@ void bta_av_conn_cback(UNUSED_ATTR uint8_t handle, const RawAddress& bd_addr, evt = BTA_AV_SIG_CHG_EVT; if (event == AVDT_DISCONNECT_IND_EVT) { p_scb = bta_av_addr_to_scb(bd_addr); if (p_scb) { uint16_t handle = BTM_GetHCIConnHandle(p_scb->PeerAddress(), BT_TRANSPORT_BR_EDR); if (bta_av_cb.offload_started_acl_hdl == handle || bta_av_cb.offload_start_pending_acl_hdl == handle) { LOG_INFO("%s: Cleanup offload related flag", __func__); bta_av_cb.offload_started_acl_hdl = HCI_INVALID_HANDLE; bta_av_cb.offload_start_pending_acl_hdl = HCI_INVALID_HANDLE; } } } else if (event == AVDT_CONNECT_IND_EVT) { APPL_TRACE_DEBUG("%s: CONN_IND is ACP:%d", __func__, p_data->hdr.err_param); Loading Loading @@ -1420,9 +1410,8 @@ void bta_debug_av_dump(int fd) { dprintf(fd, " Registered audio channels mask: 0x%x\n", bta_av_cb.reg_audio); dprintf(fd, " Connected LCBs mask: 0x%x\n", bta_av_cb.conn_lcb); dprintf(fd, " Offload start pending handle: %d\n", bta_av_cb.offload_start_pending_acl_hdl); dprintf(fd, " Offload started handle: %d\n", bta_av_cb.offload_started_acl_hdl); bta_av_cb.offload_start_pending_hndl); dprintf(fd, " Offload started handle: %d\n", bta_av_cb.offload_started_hndl); for (size_t i = 0; i < sizeof(bta_av_cb.lcb) / sizeof(bta_av_cb.lcb[0]); i++) { Loading