Home | History | Annotate | Download | only in ag

Lines Matching full:p_scb

156     tBTA_AG_SCB *p_scb;
168 p_scb = bta_ag_scb_by_idx(handle);
169 if(p_scb && !p_scb->svc_conn)
314 static BOOLEAN bta_ag_remove_sco(tBTA_AG_SCB *p_scb, BOOLEAN only_active)
319 if (p_scb->sco_idx != BTM_INVALID_SCO_INDEX)
321 if (!only_active || p_scb->sco_idx == bta_ag_cb.sco.cur_idx)
323 status = BTM_RemoveSco(p_scb->sco_idx);
325 APPL_TRACE_DEBUG("ag remove sco: inx 0x%04x, status:0x%x", p_scb->sco_idx, status);
330 bta_ag_cb.sco.p_curr_scb = p_scb;
337 p_scb->sco_idx = BTM_INVALID_SCO_INDEX;
357 tBTA_AG_SCB *p_scb;
365 ((p_scb = bta_ag_scb_by_idx(handle)) != NULL) && p_scb->svc_conn)
367 p_scb->sco_idx = sco_inx;
373 bta_ag_sco_conn_rsp(p_scb, &p_data->conn_evt);
376 bta_ag_cb.sco.p_curr_scb = p_scb;
377 bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
382 bta_ag_cb.sco.p_xfer_scb = p_scb;
392 bta_ag_sco_conn_rsp(p_scb, &p_data->conn_evt);
423 static void bta_ag_cback_sco(tBTA_AG_SCB *p_scb, UINT8 event)
427 sco.handle = bta_ag_scb_to_idx(p_scb);
428 sco.app_id = p_scb->app_id;
444 static void bta_ag_create_sco(tBTA_AG_SCB *p_scb, BOOLEAN is_orig)
460 if (p_scb->sco_idx != BTM_INVALID_SCO_INDEX)
463 p_scb->sco_idx);
468 if ((p_scb->sco_codec == BTM_SCO_CODEC_MSBC) &&
469 !p_scb->codec_fallback &&
470 !p_scb->retry_with_sco_only)
473 if (p_scb->codec_fallback)
475 p_scb->codec_fallback = FALSE;
478 p_scb->codec_updated = TRUE;
485 if (p_scb->codec_msbc_settings == BTA_AG_SCO_MSBC_SETTINGS_T2)
522 if (p_scb->conn_service == BTA_AG_HFP && p_scb->peer_version >= HFP_VERSION_1_5 && !p_scb->retry_with_sco_only)
533 p_scb->retry_with_sco_only = TRUE;
538 p_scb->retry_with_sco_only = FALSE;
542 p_scb->retry_with_sco_only = TRUE;
549 if(p_scb->retry_with_sco_only)
551 p_scb->retry_with_sco_only = FALSE;
556 bta_ag_cb.sco.p_curr_scb = p_scb;
559 bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
563 bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_SETUP,
573 p_scb->inuse_codec = esco_codec;
576 bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_SETUP);
587 sco_route = bta_dm_sco_co_init(pcm_sample_rate, pcm_sample_rate, &codec_info, p_scb->app_id);
595 bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
598 p_scb->retry_with_sco_only = FALSE;
600 p_bd_addr = p_scb->peer_addr;
603 &p_scb->sco_idx, bta_ag_sco_conn_cback,
609 BTM_RegForEScoEvts(p_scb->sco_idx, bta_ag_esco_connreq_cback);
613 bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
618 is_orig, p_scb->sco_idx, status, params.packet_types);
632 BOOLEAN bta_ag_attempt_msbc_safe_settings(tBTA_AG_SCB *p_scb)
634 if (p_scb->svc_conn && p_scb->sco_codec == BTM_SCO_CODEC_MSBC &&
635 p_scb->codec_msbc_settings == BTA_AG_SCO_MSBC_SETTINGS_T1)
653 tBTA_AG_SCB *p_scb;
657 p_scb = (tBTA_AG_SCB *)p_tle->param;
659 if (p_scb)
662 bta_ag_sco_codec_nego(p_scb, FALSE);
665 bta_ag_cback_sco(p_scb, BTA_AG_AUDIO_CLOSE_EVT);
680 void bta_ag_codec_negotiate(tBTA_AG_SCB *p_scb)
682 bta_ag_cb.sco.p_curr_scb = p_scb;
684 if ((p_scb->codec_updated || p_scb->codec_fallback ||
685 bta_ag_attempt_msbc_safe_settings(p_scb)) &&
686 (p_scb->peer_features & BTA_AG_PEER_FEAT_CODEC))
689 bta_sys_busy(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
692 bta_ag_send_bcs(p_scb, NULL);
695 p_scb->cn_timer.p_cback = (TIMER_CBACK*)&bta_ag_cn_timer_cback;
696 p_scb->cn_timer.param = (INT32)p_scb;
697 bta_sys_start_timer(&p_scb->cn_timer, 0, BTA_AG_CODEC_NEGO_TIMEOUT);
703 bta_ag_sco_codec_nego(p_scb, TRUE);
718 static void bta_ag_sco_event(tBTA_AG_SCB *p_scb, UINT8 event)
731 p_scb->sco_idx,
736 p_scb->sco_idx, p_sco->state, event);
767 bta_ag_create_sco(p_scb, FALSE);
782 bta_ag_create_sco(p_scb, FALSE);
787 bta_ag_remove_sco(p_scb, FALSE);
792 p_cn_scb = p_scb;
795 bta_ag_create_sco(p_scb, TRUE);
802 bta_ag_remove_sco(p_scb, FALSE);
804 if (p_scb == p_sco->p_curr_scb)
808 if (!bta_ag_other_scb_open(p_scb))
822 bta_ag_create_sco(p_scb, FALSE);
838 bta_ag_create_sco(p_scb, FALSE);
843 bta_ag_create_sco(p_scb, TRUE);
849 p_sco->p_xfer_scb = p_scb;
855 bta_ag_remove_sco(p_scb, FALSE);
857 if (p_scb == p_sco->p_curr_scb)
861 if (!bta_ag_other_scb_open(p_scb))
874 bta_ag_create_sco(p_scb, FALSE);
891 if (p_scb != p_sco->p_curr_scb)
893 bta_ag_create_sco(p_scb, FALSE);
901 p_cn_scb = p_scb;
907 p_sco->p_xfer_scb = p_scb;
917 if (p_scb != p_sco->p_curr_scb)
920 bta_ag_remove_sco(p_scb, FALSE);
933 bta_ag_create_sco(p_scb, FALSE);
948 p_sco->p_xfer_scb = p_scb;
959 if (p_scb != p_sco->p_curr_scb)
962 bta_ag_remove_sco(p_scb, FALSE);
971 bta_ag_remove_sco(p_scb, TRUE);
993 bta_ag_remove_sco(p_scb, TRUE);
1000 bta_ag_remove_sco(p_scb, FALSE);
1008 bta_ag_create_sco(p_scb, FALSE); /* Back into listen mode */
1030 if (p_scb != p_sco->p_curr_scb)
1032 bta_ag_create_sco(p_scb, FALSE);
1041 p_sco->p_xfer_scb = p_scb;
1048 if (bta_ag_remove_sco(p_scb, TRUE))
1056 bta_ag_remove_sco(p_scb, FALSE);
1059 if (p_scb == p_sco->p_curr_scb)
1067 bta_ag_create_sco(p_scb, FALSE);
1082 if (p_scb != p_sco->p_curr_scb)
1084 bta_ag_create_sco(p_scb, FALSE);
1094 p_sco->p_xfer_scb = p_scb;
1101 if (p_scb != p_sco->p_curr_scb)
1104 bta_ag_remove_sco(p_scb, FALSE);
1113 bta_ag_create_sco(p_scb, FALSE);
1139 p_cn_scb = p_scb;
1142 bta_ag_create_sco(p_scb, TRUE);
1149 if (p_scb != p_sco->p_curr_scb)
1151 bta_ag_create_sco(p_scb, FALSE);
1167 bta_ag_remove_sco(p_scb, TRUE);
1188 bta_ag_create_sco(p_scb, FALSE);
1215 bta_ag_remove_sco(p_scb, TRUE);
1220 if (!bta_ag_other_scb_open(p_scb))
1231 if (bta_ag_scb_open(p_scb))
1233 bta_ag_create_sco(p_scb, FALSE);
1237 if (p_scb == p_sco->p_curr_scb)
1246 if (p_scb != p_sco->p_curr_scb)
1248 bta_ag_create_sco(p_scb, FALSE);
1253 if (!bta_ag_other_scb_open(p_scb))
1262 if (p_scb == p_sco->p_curr_scb)
1306 BOOLEAN bta_ag_sco_is_open(tBTA_AG_SCB *p_scb)
1309 (bta_ag_cb.sco.p_curr_scb == p_scb));
1322 BOOLEAN bta_ag_sco_is_opening(tBTA_AG_SCB *p_scb)
1327 (bta_ag_cb.sco.p_curr_scb == p_scb));
1330 (bta_ag_cb.sco.p_curr_scb == p_scb));
1344 void bta_ag_sco_listen(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1347 bta_ag_sco_event(p_scb, BTA_AG_SCO_LISTEN_E);
1360 void bta_ag_sco_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1366 if (bta_ag_cb.sco.p_curr_scb != NULL && bta_ag_cb.sco.p_curr_scb != p_scb)
1376 bta_ag_sco_event(p_scb, event);
1389 void bta_ag_sco_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1396 if ((p_scb->sco_idx != BTM_INVALID_SCO_INDEX) || (bta_ag_cb.sco.state == BTA_AG_SCO_CODEC_ST))
1398 if (p_scb->sco_idx != BTM_INVALID_SCO_INDEX)
1401 APPL_TRACE_DEBUG("bta_ag_sco_close: sco_inx = %d", p_scb->sco_idx);
1402 bta_ag_sco_event(p_scb, BTA_AG_SCO_CLOSE_E);
1418 p_scb, BOOLEAN result)
1423 p_scb->codec_updated = FALSE;
1425 bta_ag_sco_event(p_scb, BTA_AG_SCO_CN_DONE_E);
1428 bta_ag_sco_event(p_scb, BTA_AG_SCO_CLOSE_E);
1442 void bta_ag_sco_shutdown(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1446 bta_ag_sco_event(p_scb, BTA_AG_SCO_SHUTDOWN_E);
1459 void bta_ag_sco_conn_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1463 bta_ag_sco_event(p_scb, BTA_AG_SCO_CONN_OPEN_E);
1465 bta_sys_sco_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
1468 bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_ON,
1469 p_scb->inuse_codec);
1471 bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_ON);
1476 bta_dm_sco_co_open(bta_ag_scb_to_idx(p_scb), BTA_SCO_OUT_PKT_SIZE, BTA_AG_CI_SCO_DATA_EVT);
1480 bta_ag_cback_sco(p_scb, BTA_AG_AUDIO_OPEN_EVT);
1482 p_scb->retry_with_sco_only = FALSE;
1485 p_scb->codec_msbc_settings = BTA_AG_SCO_MSBC_SETTINGS_T2;
1499 void bta_ag_sco_conn_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1501 UINT16 handle = bta_ag_scb_to_idx(p_scb);
1506 p_scb->sco_idx = BTM_INVALID_SCO_INDEX;
1511 if ((p_scb->codec_fallback && p_scb->svc_conn) ||
1512 bta_ag_attempt_msbc_safe_settings(p_scb))
1514 bta_ag_sco_event(p_scb, BTA_AG_SCO_REOPEN_E);
1516 else if (p_scb->retry_with_sco_only && p_scb->svc_conn)
1519 bta_ag_create_sco(p_scb, TRUE);
1524 if (p_scb->retry_with_sco_only && p_scb->svc_conn)
1526 bta_ag_create_sco(p_scb, TRUE);
1534 bta_ag_co_audio_state(handle, p_scb->app_id, sco_state, p_scb->inuse_codec);
1537 bta_ag_co_audio_state(handle, p_scb->app_id, sco_state);
1539 bta_ag_sco_event(p_scb, BTA_AG_SCO_CONN_CLOSE_E);
1541 bta_sys_sco_close(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
1545 if(((p_scb->call_ind == BTA_AG_CALL_INACTIVE) && (p_scb->callsetup_ind == BTA_AG_CALLSETUP_NONE))
1546 || (p_scb->post_sco == BTA_AG_POST_SCO_CALL_END))
1548 bta_sys_sco_unuse(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
1552 bta_ag_cback_sco(p_scb, BTA_AG_AUDIO_CLOSE_EVT);
1554 p_scb->codec_msbc_settings = BTA_AG_SCO_MSBC_SETTINGS_T2;
1557 p_scb->retry_with_sco_only = FALSE;
1570 void bta_ag_sco_conn_rsp(tBTA_AG_SCB *p_scb, tBTM_ESCO_CONN_REQ_EVT_DATA *p_data)
1613 bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
1617 bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_SETUP);
1621 bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_SETUP,
1629 BTM_ConfigScoPath(bta_dm_sco_co_init(pcm_sample_rate, pcm_sample_rate, &codec_info, p_scb->app_id),
1638 p_scb->inuse_codec = BTA_AG_CODEC_NONE;
1654 void bta_ag_ci_sco_data(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1656 UNUSED(p_scb);
1660 bta_ag_sco_event(p_scb, BTA_AG_SCO_CI_DATA_E);