Home | History | Annotate | Download | only in ag

Lines Matching refs:p_scb

136     tBTA_AG_SCB *p_scb;
148 p_scb = bta_ag_scb_by_idx(handle);
149 if(p_scb && !p_scb->svc_conn)
285 static BOOLEAN bta_ag_remove_sco(tBTA_AG_SCB *p_scb, BOOLEAN only_active)
290 if (p_scb->sco_idx != BTM_INVALID_SCO_INDEX)
292 if (!only_active || p_scb->sco_idx == bta_ag_cb.sco.cur_idx)
294 status = BTM_RemoveSco(p_scb->sco_idx);
296 APPL_TRACE_DEBUG2("ag remove sco: inx 0x%04x, status:0x%x", p_scb->sco_idx, status);
301 bta_ag_cb.sco.p_curr_scb = p_scb;
308 p_scb->sco_idx = BTM_INVALID_SCO_INDEX;
328 tBTA_AG_SCB *p_scb;
336 ((p_scb = bta_ag_scb_by_idx(handle)) != NULL) && p_scb->svc_conn)
338 p_scb->sco_idx = sco_inx;
344 bta_ag_sco_conn_rsp(p_scb, &p_data->conn_evt);
347 bta_ag_cb.sco.p_curr_scb = p_scb;
348 bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
353 bta_ag_cb.sco.p_xfer_scb = p_scb;
363 bta_ag_sco_conn_rsp(p_scb, &p_data->conn_evt);
394 static void bta_ag_cback_sco(tBTA_AG_SCB *p_scb, UINT8 event)
398 sco.handle = bta_ag_scb_to_idx(p_scb);
399 sco.app_id = p_scb->app_id;
415 static void bta_ag_create_sco(tBTA_AG_SCB *p_scb, BOOLEAN is_orig)
431 if (p_scb->sco_idx != BTM_INVALID_SCO_INDEX)
434 p_scb->sco_idx);
439 if ((p_scb->sco_codec == BTM_SCO_CODEC_MSBC) &&
440 !p_scb->codec_fallback &&
441 !p_scb->retry_with_sco_only)
444 if (p_scb->codec_fallback)
446 p_scb->codec_fallback = FALSE;
449 p_scb->codec_updated = TRUE;
481 if (p_scb->conn_service == BTA_AG_HFP && p_scb->peer_version >= HFP_VERSION_1_5 && !p_scb->retry_with_sco_only)
492 p_scb->retry_with_sco_only = TRUE;
497 p_scb->retry_with_sco_only = FALSE;
501 p_scb->retry_with_sco_only = TRUE;
508 if(p_scb->retry_with_sco_only)
510 p_scb->retry_with_sco_only = FALSE;
515 bta_ag_cb.sco.p_curr_scb = p_scb;
518 bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
521 bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, BTA_AG_CO_AUD_STATE_SETUP);
531 sco_route = bta_dm_sco_co_init(pcm_sample_rate, pcm_sample_rate, &codec_info, p_scb->app_id);
552 p_scb->inuse_codec = esco_codec;
559 bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
562 p_scb->retry_with_sco_only = FALSE;
564 p_bd_addr = p_scb->peer_addr;
567 &p_scb->sco_idx, bta_ag_sco_conn_cback,
573 BTM_RegForEScoEvts(p_scb->sco_idx, bta_ag_esco_connreq_cback);
577 bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
582 is_orig, p_scb->sco_idx, status, params.packet_types);
598 tBTA_AG_SCB *p_scb;
602 p_scb = (tBTA_AG_SCB *)p_tle->param;
604 if (p_scb)
607 bta_ag_sco_codec_nego(p_scb, FALSE);
610 bta_ag_cback_sco(p_scb, BTA_AG_AUDIO_CLOSE_EVT);
625 void bta_ag_codec_negotiate(tBTA_AG_SCB *p_scb)
627 bta_ag_cb.sco.p_curr_scb = p_scb;
629 if (p_scb->codec_updated || p_scb->codec_fallback)
632 bta_sys_busy(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
635 bta_ag_send_bcs(p_scb, NULL);
638 p_scb->cn_timer.p_cback = (TIMER_CBACK*)&bta_ag_cn_timer_cback;
639 p_scb->cn_timer.param = (INT32)p_scb;
640 bta_sys_start_timer(&p_scb->cn_timer, 0, BTA_AG_CODEC_NEGO_TIMEOUT);
645 bta_ag_sco_codec_nego(p_scb, TRUE);
660 static void bta_ag_sco_event(tBTA_AG_SCB *p_scb, UINT8 event)
673 p_scb->sco_idx,
678 p_scb->sco_idx, p_sco->state, event);
709 bta_ag_create_sco(p_scb, FALSE);
724 bta_ag_create_sco(p_scb, FALSE);
729 bta_ag_remove_sco(p_scb, FALSE);
734 p_cn_scb = p_scb;
737 bta_ag_create_sco(p_scb, TRUE);
744 bta_ag_remove_sco(p_scb, FALSE);
746 if (p_scb == p_sco->p_curr_scb)
750 if (!bta_ag_other_scb_open(p_scb))
764 bta_ag_create_sco(p_scb, FALSE);
780 bta_ag_create_sco(p_scb, FALSE);
785 bta_ag_create_sco(p_scb, TRUE);
791 p_sco->p_xfer_scb = p_scb;
797 bta_ag_remove_sco(p_scb, FALSE);
799 if (p_scb == p_sco->p_curr_scb)
803 if (!bta_ag_other_scb_open(p_scb))
816 bta_ag_create_sco(p_scb, FALSE);
833 if (p_scb != p_sco->p_curr_scb)
835 bta_ag_create_sco(p_scb, FALSE);
843 p_cn_scb = p_scb;
849 p_sco->p_xfer_scb = p_scb;
859 if (p_scb != p_sco->p_curr_scb)
862 bta_ag_remove_sco(p_scb, FALSE);
875 bta_ag_create_sco(p_scb, FALSE);
890 p_sco->p_xfer_scb = p_scb;
901 if (p_scb != p_sco->p_curr_scb)
904 bta_ag_remove_sco(p_scb, FALSE);
913 bta_ag_remove_sco(p_scb, TRUE);
935 bta_ag_remove_sco(p_scb, TRUE);
942 bta_ag_remove_sco(p_scb, FALSE);
950 bta_ag_create_sco(p_scb, FALSE); /* Back into listen mode */
972 if (p_scb != p_sco->p_curr_scb)
974 bta_ag_create_sco(p_scb, FALSE);
983 p_sco->p_xfer_scb = p_scb;
990 if (bta_ag_remove_sco(p_scb, TRUE))
998 bta_ag_remove_sco(p_scb, FALSE);
1001 if (p_scb == p_sco->p_curr_scb)
1009 bta_ag_create_sco(p_scb, FALSE);
1024 if (p_scb != p_sco->p_curr_scb)
1026 bta_ag_create_sco(p_scb, FALSE);
1036 p_sco->p_xfer_scb = p_scb;
1043 if (p_scb != p_sco->p_curr_scb)
1046 bta_ag_remove_sco(p_scb, FALSE);
1055 bta_ag_create_sco(p_scb, FALSE);
1081 p_cn_scb = p_scb;
1084 bta_ag_create_sco(p_scb, TRUE);
1091 if (p_scb != p_sco->p_curr_scb)
1093 bta_ag_create_sco(p_scb, FALSE);
1109 bta_ag_remove_sco(p_scb, TRUE);
1130 bta_ag_create_sco(p_scb, FALSE);
1157 bta_ag_remove_sco(p_scb, TRUE);
1162 if (!bta_ag_other_scb_open(p_scb))
1171 if (p_scb == p_sco->p_curr_scb)
1180 if (p_scb != p_sco->p_curr_scb)
1182 bta_ag_create_sco(p_scb, FALSE);
1187 if (!bta_ag_other_scb_open(p_scb))
1196 if (p_scb == p_sco->p_curr_scb)
1240 BOOLEAN bta_ag_sco_is_open(tBTA_AG_SCB *p_scb)
1243 (bta_ag_cb.sco.p_curr_scb == p_scb));
1256 BOOLEAN bta_ag_sco_is_opening(tBTA_AG_SCB *p_scb)
1261 (bta_ag_cb.sco.p_curr_scb == p_scb));
1264 (bta_ag_cb.sco.p_curr_scb == p_scb));
1278 void bta_ag_sco_listen(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1280 bta_ag_sco_event(p_scb, BTA_AG_SCO_LISTEN_E);
1293 void bta_ag_sco_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1298 if (bta_ag_cb.sco.p_curr_scb != NULL && bta_ag_cb.sco.p_curr_scb != p_scb)
1308 bta_ag_sco_event(p_scb, event);
1321 void bta_ag_sco_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1326 if ((p_scb->sco_idx != BTM_INVALID_SCO_INDEX) || (bta_ag_cb.sco.state == BTA_AG_SCO_CODEC_ST))
1328 if (p_scb->sco_idx != BTM_INVALID_SCO_INDEX)
1331 APPL_TRACE_DEBUG1("bta_ag_sco_close: sco_inx = %d", p_scb->sco_idx);
1332 bta_ag_sco_event(p_scb, BTA_AG_SCO_CLOSE_E);
1348 void bta_ag_sco_codec_nego(tBTA_AG_SCB *p_scb, BOOLEAN result)
1353 p_scb->codec_updated = FALSE;
1355 bta_ag_sco_event(p_scb, BTA_AG_SCO_CN_DONE_E);
1358 bta_ag_sco_event(p_scb, BTA_AG_SCO_CLOSE_E);
1372 void bta_ag_sco_shutdown(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1374 bta_ag_sco_event(p_scb, BTA_AG_SCO_SHUTDOWN_E);
1387 void bta_ag_sco_conn_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1389 bta_ag_sco_event(p_scb, BTA_AG_SCO_CONN_OPEN_E);
1391 bta_sys_sco_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
1393 bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, BTA_AG_CO_AUD_STATE_ON);
1397 bta_dm_sco_co_open(bta_ag_scb_to_idx(p_scb), BTA_SCO_OUT_PKT_SIZE, BTA_AG_CI_SCO_DATA_EVT);
1401 bta_ag_cback_sco(p_scb, BTA_AG_AUDIO_OPEN_EVT);
1403 p_scb->retry_with_sco_only = FALSE;
1416 void bta_ag_sco_conn_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1418 UINT16 handle = bta_ag_scb_to_idx(p_scb);
1422 p_scb->sco_idx = BTM_INVALID_SCO_INDEX;
1426 if (p_scb->codec_fallback && p_scb->svc_conn)
1428 bta_ag_sco_event(p_scb, BTA_AG_SCO_REOPEN_E);
1430 else if (p_scb->retry_with_sco_only && p_scb->svc_conn)
1433 bta_ag_create_sco(p_scb, TRUE);
1438 if (p_scb->retry_with_sco_only && p_scb->svc_conn)
1440 bta_ag_create_sco(p_scb, TRUE);
1447 bta_ag_co_audio_state(handle, p_scb->app_id, BTA_AG_CO_AUD_STATE_OFF_XFER);
1449 bta_ag_co_audio_state(handle, p_scb->app_id, BTA_AG_CO_AUD_STATE_OFF);
1451 bta_ag_sco_event(p_scb
1453 bta_sys_sco_close(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
1457 if(((p_scb->call_ind == BTA_AG_CALL_INACTIVE) && (p_scb->callsetup_ind == BTA_AG_CALLSETUP_NONE))
1458 || (p_scb->post_sco == BTA_AG_POST_SCO_CALL_END))
1460 bta_sys_sco_unuse(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
1464 bta_ag_cback_sco(p_scb, BTA_AG_AUDIO_CLOSE_EVT);
1466 p_scb->retry_with_sco_only = FALSE;
1479 void bta_ag_sco_conn_rsp(tBTA_AG_SCB *p_scb, tBTM_ESCO_CONN_REQ_EVT_DATA *p_data)
1522 bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
1525 bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, BTA_AG_CO_AUD_STATE_SETUP);
1536 BTM_ConfigScoPath(bta_dm_sco_co_init(pcm_sample_rate, pcm_sample_rate, &codec_info, p_scb->app_id),
1545 p_scb->inuse_codec = BTA_AG_CODEC_NONE;
1561 void bta_ag_ci_sco_data(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
1564 bta_ag_sco_event(p_scb, BTA_AG_SCO_CI_DATA_E);