Lines Matching full:p_scb
73 UINT32 avdt_scb_gen_ssrc(tAVDT_SCB *p_scb)
76 return ((UINT32)(p_scb->cs.cfg.codec_info[1] | p_scb->cs.cfg.codec_info[2]));
89 void avdt_scb_hdl_abort_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
91 p_scb->role = AVDT_CLOSE_ACP;
92 avdt_scb_event(p_scb, AVDT_SCB_API_ABORT_RSP_EVT, p_data);
105 void avdt_scb_hdl_abort_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
107 UNUSED(p_scb);
122 void avdt_scb_hdl_close_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
124 p_scb->role = AVDT_CLOSE_ACP;
125 avdt_scb_event(p_scb, AVDT_SCB_API_CLOSE_RSP_EVT, p_data);
138 void avdt_scb_hdl_close_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
140 p_scb->close_code = p_data->msg.hdr.err_code;
154 void avdt_scb_hdl_getconfig_cmd(tAVDT_SCB *p_scb,tAVDT_SCB_EVT *p_data)
156 p_data->msg.svccap.p_cfg = &p_scb->curr_cfg;
158 avdt_scb_event(p_scb, AVDT_SCB_API_GETCONFIG_RSP_EVT, p_data);
171 void avdt_scb_hdl_getconfig_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
173 UNUSED(p_scb);
188 void avdt_scb_hdl_open_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
190 avdt_scb_event(p_scb, AVDT_SCB_API_OPEN_RSP_EVT, p_data);
205 void avdt_scb_hdl_open_rej(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
208 avdt_scb_hdl_setconfig_rej(p_scb, p_data);
221 void avdt_scb_hdl_open_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
226 p_scb->role = AVDT_OPEN_INT;
227 avdt_ad_open_req(AVDT_CHAN_MEDIA, p_scb->p_ccb, p_scb, AVDT_INT);
230 btu_start_timer(&p_scb->timer_entry, BTU_TTYPE_AVDT_SCB_TC, AVDT_SCB_TC_CONN_TOUT);
242 void avdt_scb_hdl_pkt_no_frag(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
298 if (p_scb->cs.p_data_cback != NULL)
302 (*p_scb->cs.p_data_cback)(avdt_scb_to_hdl(p_scb), p_data->p_pkt,
308 if ((p_scb->cs.p_media_cback != NULL)
309 && (p_scb->p_media_buf != NULL)
310 && (p_scb->media_buf_len > p_data->p_pkt->len))
313 memcpy(p_scb->p_media_buf,(UINT8*)(p_data->p_pkt + 1) + p_data->p_pkt->offset,
315 (*p_scb->cs.p_media_cback)(avdt_scb_to_hdl(p_scb),p_scb->p_media_buf,
316 p_scb->media_buf_len,time_stamp,seq,m_pt,marker);
334 UINT8 * avdt_scb_hdl_report(tAVDT_SCB *p_scb, UINT8 *p, UINT16 len)
344 if(p_scb->cs.p_report_cback)
395 (*p_scb->cs.p_report_cback)(avdt_scb_to_hdl(p_scb), pt, p_rpt);
413 void avdt_scb_hdl_pkt_frag(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
478 if (al_tsid != p_scb->curr_cfg.mux_tsid_media)
481 if((p_scb->curr_cfg.psc_mask & AVDT_PSC_REPORT) &&
482 (al_tsid == p_scb->curr_cfg.mux_tsid_report))
485 p = avdt_scb_hdl_report(p_scb, p, frag_len);
491 AVDT_TRACE_WARNING("bad tsid: %d, mux_tsid_media:%d", al_tsid, p_scb->curr_cfg.mux_tsid_media);
496 else if ((p_scb->p_media_buf == NULL) || (p_scb->cs.p_media_cback == NULL))
507 al_len, p_scb->media_buf_len);
509 p_scb->frag_off = 0;
510 p_scb->frag_org_len = al_len; /* total length of original media packet */
512 if (p_scb->frag_org_len < 12)
518 if (al_len > p_scb->media_buf_len)
520 AVDT_TRACE_WARNING("bad al_len: %d(>%d)", al_len, p_scb->media_buf_len);
526 AVDT_TRACE_WARNING("bad al_len: %d(>%d)", al_len, p_scb->media_buf_len);
533 al_len, p_scb->media_buf_len, p_scb->frag_org_len, p_scb->frag_off);
536 if(al_len != p_scb->frag_org_len - p_scb->frag_off)
539 al_len, p_scb->frag_org_len, p_scb->frag_off,
540 (p_scb->frag_org_len- p_scb->frag_off));
545 if (p_scb->frag_off == 0)
552 if((p_scb->frag_org_len <= p_scb->frag_off) || (p_scb->frag_org_len >= p_scb->media_buf_len))
555 p_scb->frag_off, p_scb->frag_org_len, p_scb->media_buf_len);
560 p_scb->frag_org_len, p_scb->frag_off, al_len, frag_len);
563 memcpy(p_scb->p_media_buf + p_scb->frag_off, p, frag_len);
564 p_scb->frag_off += frag_len;
568 if(p_scb->frag_off == p_scb->frag_org_len)
570 p_payload = p_scb->p_media_buf;
588 if(p_scb->p_media_buf + p_scb->frag_off - p_payload < 4)
591 p_scb->frag_off, p_scb->p_media_buf, p_payload);
599 if(p_payload >= p_scb->p_media_buf + p_scb->frag_off)
602 p_scb->frag_off, p_scb->p_media_buf, p_payload);
610 pad_len = *(p_scb->p_media_buf + p_scb->frag_off - 1);
615 payload_len = (UINT32)(p_scb->p_media_buf + p_scb->frag_off - pad_len - p_payload);
618 p_payload - p_scb->p_media_buf,payload_len);
621 if (p_scb->cs.p_media_cback != NULL)
623 (*p_scb->cs.p_media_cback)(avdt_scb_to_hdl(p_scb), p_payload,
646 void avdt_scb_hdl_pkt(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
654 if( 0 != (p_scb->curr_cfg.psc_mask & AVDT_PSC_MUX))
656 avdt_scb_hdl_pkt_frag(p_scb, p_data);
664 avdt_scb_hdl_report(p_scb, p, p_data->p_pkt->len);
669 avdt_scb_hdl_pkt_no_frag(p_scb, p_data);
682 void avdt_scb_drop_pkt(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
684 UNUSED(p_scb);
700 void avdt_scb_hdl_reconfig_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
703 if (p_scb->cs.nsc_mask & AVDT_NSC_RECONFIG)
708 avdt_scb_event(p_scb, AVDT_SCB_API_RECONFIG_RSP_EVT, p_data);
713 memcpy(&p_scb->req_cfg, p_data->msg.reconfig_cmd.p_cfg, sizeof(tAVDT_CFG));
716 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
733 void avdt_scb_hdl_reconfig_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
738 if (p_scb->req_cfg.num_codec > 0)
740 p_scb->curr_cfg.num_codec = p_scb->req_cfg.num_codec;
741 memcpy(p_scb->curr_cfg.codec_info, p_scb->req_cfg.codec_info, AVDT_CODEC_SIZE);
743 if (p_scb->req_cfg.num_protect > 0)
745 p_scb->curr_cfg.num_protect = p_scb->req_cfg.num_protect;
746 memcpy(p_scb->curr_cfg.protect_info, p_scb->req_cfg.protect_info, AVDT_PROTECT_SIZE);
750 p_data->msg.svccap.p_cfg = &p_scb->curr_cfg;
753 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
769 void avdt_scb_hdl_security_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
772 if (p_scb->cs.nsc_mask & AVDT_NSC_SECURITY)
776 avdt_scb_event(p_scb, AVDT_SCB_API_SECURITY_RSP_EVT, p_data);
781 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
798 void avdt_scb_hdl_security_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
801 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
818 void avdt_scb_hdl_setconfig_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
822 if (!p_scb->in_use)
825 if(p_scb->cs.cfg.codec_info[AVDT_CODEC_TYPE_INDEX] == p_cfg->codec_info[AVDT_CODEC_TYPE_INDEX])
828 p_scb->in_use = TRUE;
831 p_scb->p_ccb = avdt_ccb_by_idx(p_data->msg.config_cmd.hdr.ccb_idx);
832 p_scb->peer_seid = p_data->msg.config_cmd.int_seid;
833 memcpy(&p_scb->req_cfg, p_cfg, sizeof(tAVDT_CFG));
835 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb), /* handle of scb- which is same as sep handle of bta_av_cb.p_scb*/
836 p_scb->p_ccb ? p_scb->p_ccb->peer_addr : NULL,
850 avdt_scb_rej_in_use(p_scb, p_data);
864 void avdt_scb_hdl_setconfig_rej(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
867 avdt_scb_clr_vars(p_scb, p_data);
873 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
889 void avdt_scb_hdl_setconfig_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
894 if (p_scb->p_ccb != NULL)
897 memcpy(&p_scb->curr_cfg, &p_scb->req_cfg, sizeof(tAVDT_CFG));
900 single.seid = p_scb->peer_seid;
901 avdt_scb_event(p_scb, AVDT_SCB_API_OPEN_REQ_EVT, (tAVDT_SCB_EVT *) &single);
915 void avdt_scb_hdl_start_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
919 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
920 p_scb->p_ccb ? p_scb->p_ccb->peer_addr : NULL,
935 void avdt_scb_hdl_start_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
937 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
938 p_scb->p_ccb ? p_scb->p_ccb->peer_addr : NULL,
953 void avdt_scb_hdl_suspend_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
957 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
958 p_scb->p_ccb ? p_scb->p_ccb->peer_addr : NULL,
973 void avdt_scb_hdl_suspend_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
975 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
976 p_scb->p_ccb ? p_scb->p_ccb->peer_addr : NULL,
996 void avdt_scb_hdl_tc_close(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
998 UINT8 hdl = avdt_scb_to_hdl(p_scb);
999 tAVDT_CTRL_CBACK *p_ctrl_cback = p_scb->cs.p_ctrl_cback;
1002 tAVDT_CCB *p_ccb = p_scb->p_ccb;
1009 avdt_ctrl.hdr.err_code = p_scb->close_code;
1012 avdt_scb_clr_vars(p_scb, p_data);
1013 p_scb->media_seq = 0;
1014 p_scb->cong = FALSE;
1017 if (p_scb->p_pkt != NULL)
1019 GKI_freebuf(p_scb->p_pkt);
1020 p_scb->p_pkt = NULL;
1024 btu_stop_timer(&p_scb->timer_entry);
1026 if ((p_scb->role == AVDT_CLOSE_INT) || (p_scb->role == AVDT_OPEN_INT))
1031 event = (p_scb->role == AVDT_CLOSE_INT) ? AVDT_CLOSE_CFM_EVT : AVDT_CLOSE_IND_EVT;
1032 p_scb->role = AVDT_CLOSE_ACP;
1034 if (p_scb->remove)
1036 avdt_scb_dealloc(p_scb, NULL);
1053 void avdt_scb_snd_delay_rpt_req (tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1055 avdt_msg_send_cmd(p_scb->p_ccb, p_scb, AVDT_SIG_DELAY_RPT, (tAVDT_MSG *) &p_data->apidelay);
1068 void avdt_scb_hdl_delay_rpt_cmd (tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1070 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
1071 p_scb->p_ccb ? p_scb->p_ccb->peer_addr : NULL,
1075 if (p_scb->p_ccb)
1076 avdt_msg_send_rsp(p_scb->p_ccb, AVDT_SIG_DELAY_RPT, &p_data->msg);
1078 avdt_scb_rej_not_in_use(p_scb, p_data);
1091 void avdt_scb_hdl_delay_rpt_rsp (tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1093 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
1094 p_scb->p_ccb ? p_scb->p_ccb->peer_addr : NULL,
1110 void avdt_scb_hdl_tc_close_sto(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1123 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
1124 p_scb->p_ccb ? p_scb->p_ccb->peer_addr : NULL,
1131 avdt_scb_event(p_scb, AVDT_SCB_MSG_ABORT_RSP_EVT, NULL);
1132 avdt_scb_hdl_tc_close(p_scb, p_data);
1149 void avdt_scb_hdl_tc_open(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1157 btu_stop_timer(&p_scb->timer_entry);
1159 event = (p_scb->role == AVDT_OPEN_INT) ? AVDT_OPEN_CFM_EVT : AVDT_OPEN_IND_EVT;
1163 p_scb->cs.cfg.psc_mask, p_scb->req_cfg.psc_mask, p_scb->curr_cfg.psc_mask);
1165 if(p_scb->curr_cfg.psc_mask & AVDT_PSC_REPORT)
1168 role = (p_scb->role == AVDT_OPEN_INT) ? AVDT_INT : AVDT_ACP;
1169 avdt_ad_open_req(AVDT_CHAN_REPORT, p_scb->p_ccb, p_scb, role);
1174 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
1175 p_scb->p_ccb ? p_scb->p_ccb->peer_addr : NULL,
1193 void avdt_scb_hdl_tc_open_sto(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1203 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
1204 p_scb->p_ccb ? p_scb->p_ccb->peer_addr : NULL,
1221 void avdt_scb_hdl_write_req_no_frag(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1227 if (p_scb->p_pkt != NULL)
1229 GKI_freebuf(p_scb->p_pkt);
1239 ssrc = avdt_scb_gen_ssrc(p_scb);
1243 p_scb->media_seq++;
1248 UINT16_TO_BE_STREAM(p, p_scb->media_seq);
1254 p_scb->p_pkt = p_data->apiwrite.p_buf;
1268 void avdt_scb_hdl_write_req_frag(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1275 if (!GKI_queue_is_empty(&p_scb->frag_q))
1277 while((p_frag = (BT_HDR*)GKI_dequeue (&p_scb->frag_q)) != NULL)
1285 p_scb->frag_off = p_data->apiwrite.data_len;
1286 p_scb->p_next_frag = p_data->apiwrite.p_data;
1288 ssrc = avdt_scb_gen_ssrc(p_scb);
1299 *p++ = (p_scb->curr_cfg.mux_tsid_media<<3) | AVDT_ALH_LCODE_16BIT;
1306 UINT16_TO_BE_STREAM(p, p_scb->media_seq);
1309 p_scb->media_seq++;
1319 *p++ = (p_scb->curr_cfg.mux_tsid_media<<3) | (AVDT_ALH_FRAG_MASK|AVDT_ALH_LCODE_16BIT);
1326 p_scb->frag_q = p_data->apiwrite.frag_q;
1341 void avdt_scb_hdl_write_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1346 avdt_scb_hdl_write_req_no_frag(p_scb, p_data);
1349 avdt_scb_hdl_write_req_frag(p_scb, p_data);
1362 void avdt_scb_snd_abort_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1367 if (p_scb->p_ccb != NULL)
1369 p_scb->role = AVDT_CLOSE_INT;
1371 hdr.seid = p_scb->peer_seid;
1373 avdt_msg_send_cmd(p_scb->p_ccb, p_scb, AVDT_SIG_ABORT, (tAVDT_MSG *) &hdr);
1386 void avdt_scb_snd_abort_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1388 UNUSED(p_scb);
1403 void avdt_scb_snd_close_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1408 p_scb->role = AVDT_CLOSE_INT;
1410 hdr.seid = p_scb->peer_seid;
1412 avdt_msg_send_cmd(p_scb->p_ccb, p_scb, AVDT_SIG_CLOSE, (tAVDT_MSG *) &hdr);
1424 void avdt_scb_snd_stream_close(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1430 GKI_queue_length(&p_scb->frag_q), p_scb->frag_off);
1432 while((p_frag = (BT_HDR*)GKI_dequeue (&p_scb->frag_q)) != NULL)
1434 p_scb->frag_off = 0;
1436 if (p_scb->p_pkt)
1438 GKI_freebuf(p_scb->p_pkt);
1439 p_scb->p_pkt = NULL;
1443 if(p_scb->cong)
1444 p_scb->cong = FALSE;
1446 /* p_scb->curr_cfg.mux_tsid_media == 0 */
1448 avdt_scb_snd_close_req(p_scb, p_data);
1460 void avdt_scb_snd_close_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1462 avdt_msg_send_rsp(p_scb->p_ccb, AVDT_SIG_CLOSE, &p_data->msg);
1474 void avdt_scb_snd_getconfig_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1479 hdr.seid = p_scb->peer_seid;
1481 avdt_msg_send_cmd(p_scb->p_ccb, p_scb, AVDT_SIG_GETCONFIG, (tAVDT_MSG *) &hdr);
1493 void avdt_scb_snd_getconfig_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1495 avdt_msg_send_rsp(p_scb->p_ccb, AVDT_SIG_GETCONFIG, &p_data->msg);
1507 void avdt_scb_snd_open_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1512 hdr.seid = p_scb->peer_seid;
1514 avdt_msg_send_cmd(p_scb->p_ccb, p_scb, AVDT_SIG_OPEN, (tAVDT_MSG *) &hdr);
1528 void avdt_scb_snd_open_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1531 p_scb->role = AVDT_OPEN_ACP;
1532 avdt_ad_open_req(AVDT_CHAN_MEDIA, p_scb->p_ccb, p_scb, AVDT_ACP);
1535 avdt_msg_send_rsp(p_scb->p_ccb, AVDT_SIG_OPEN, &p_data->msg);
1538 btu_start_timer(&p_scb->timer_entry, BTU_TTYPE_AVDT_SCB_TC, AVDT_SCB_TC_CONN_TOUT);
1551 void avdt_scb_snd_reconfig_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1553 memcpy(&p_scb->req_cfg, p_data->msg.config_cmd.p_cfg, sizeof(tAVDT_CFG));
1554 p_data->msg.hdr.seid = p_scb->peer_seid;
1555 avdt_msg_send_cmd(p_scb->p_ccb, p_scb, AVDT_SIG_RECONFIG, &p_data->msg);
1568 void avdt_scb_snd_reconfig_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1573 if (p_scb->req_cfg.num_codec > 0)
1575 p_scb->curr_cfg.num_codec = p_scb->req_cfg.num_codec;
1576 memcpy(p_scb->curr_cfg.codec_info, p_scb->req_cfg.codec_info, AVDT_CODEC_SIZE);
1578 if (p_scb->req_cfg.num_protect > 0)
1580 p_scb->curr_cfg.num_protect = p_scb->req_cfg.num_protect;
1581 memcpy(p_scb->curr_cfg.protect_info, p_scb->req_cfg.protect_info, AVDT_PROTECT_SIZE);
1585 avdt_msg_send_rsp(p_scb->p_ccb, AVDT_SIG_RECONFIG, &p_data->msg);
1590 avdt_msg_send_rej(p_scb->p_ccb, AVDT_SIG_RECONFIG, &p_data->msg);
1603 void avdt_scb_snd_security_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1605 p_data->msg.hdr.seid = p_scb->peer_seid;
1606 avdt_msg_send_cmd(p_scb->p_ccb, p_scb, AVDT_SIG_SECURITY, &p_data->msg);
1618 void avdt_scb_snd_security_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1622 avdt_msg_send_rsp(p_scb->p_ccb, AVDT_SIG_SECURITY, &p_data->msg);
1626 avdt_msg_send_rej(p_scb->p_ccb, AVDT_SIG_SECURITY, &p_data->msg);
1640 void avdt_scb_snd_setconfig_rej(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1642 if (p_scb->p_ccb != NULL)
1644 avdt_msg_send_rej(p_scb->p_ccb, AVDT_SIG_SETCONFIG, &p_data->msg);
1647 avdt_scb_clr_vars(p_scb, p_data);
1663 void avdt_scb_snd_setconfig_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1668 p_scb->in_use = TRUE;
1669 p_scb->p_ccb = avdt_ccb_by_idx(p_data->msg.config_cmd.hdr.ccb_idx);
1670 p_scb->peer_seid = p_data->msg.config_cmd.hdr.seid;
1672 p_cfg = &p_scb->cs.cfg;
1682 memcpy(&p_scb->req_cfg, p_data->msg.config_cmd.p_cfg, sizeof(tAVDT_CFG));
1684 avdt_msg_send_cmd(p_scb->p_ccb, p_scb, AVDT_SIG_SETCONFIG, &p_data->msg);
1687 avdt_ccb_event(p_scb->p_ccb, AVDT_CCB_UL_OPEN_EVT, NULL);
1701 void avdt_scb_snd_setconfig_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1703 if (p_scb->p_ccb != NULL)
1705 memcpy(&p_scb->curr_cfg, &p_scb->req_cfg, sizeof(tAVDT_CFG));
1707 avdt_msg_send_rsp(p_scb->p_ccb, AVDT_SIG_SETCONFIG, &p_data->msg);
1721 void avdt_scb_snd_tc_close(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1726 if(p_scb->curr_cfg.psc_mask & AVDT_PSC_REPORT)
1727 avdt_ad_close_req(AVDT_CHAN_REPORT, p_scb->p_ccb, p_scb);
1729 avdt_ad_close_req(AVDT_CHAN_MEDIA, p_scb->p_ccb, p_scb);
1742 void avdt_scb_cb_err(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1752 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb),
1754 avdt_scb_cback_evt[p_scb->curr_evt],
1768 void avdt_scb_cong_state(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1770 p_scb->cong = p_data->llcong;
1783 void avdt_scb_rej_state(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1785 UNUSED(p_scb);
1803 void avdt_scb_rej_in_use(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1805 UNUSED(p_scb);
1823 void avdt_scb_rej_not_in_use(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1825 UNUSED(p_scb);
1842 void avdt_scb_set_remove(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1846 p_scb->remove = TRUE;
1858 void avdt_scb_free_pkt(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1882 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb), NULL, AVDT_WRITE_CFM_EVT,
1895 void avdt_scb_clr_pkt(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1910 if((p_ccb = p_scb->p_ccb) != NULL)
1913 tcid = avdt_ad_type_to_tcid(AVDT_CHAN_MEDIA, p_scb);
1919 if (p_scb->p_pkt != NULL)
1921 GKI_freebuf(p_scb->p_pkt);
1922 p_scb->p_pkt = NULL;
1927 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb), NULL, AVDT_WRITE_CFM_EVT,
1931 else if(!GKI_queue_is_empty (&p_scb->frag_q))
1935 while((p_frag = (BT_HDR*)GKI_dequeue (&p_scb->frag_q)) != NULL)
1938 p_scb->frag_off = 0;
1941 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb), NULL, AVDT_WRITE_CFM_EVT,
1960 void avdt_scb_chk_snd_pkt(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
1973 if (!p_scb->cong)
1975 if (p_scb->p_pkt != NULL)
1977 p_pkt = p_scb->p_pkt;
1978 p_scb->p_pkt = NULL;
1979 avdt_ad_write_req(AVDT_CHAN_MEDIA, p_scb->p_ccb, p_scb, p_pkt);
1981 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb), NULL, AVDT_WRITE_CFM_EVT, &avdt_ctrl);
1988 L2CA_FlushChannel(avdt_cb.ad.rt_tbl[avdt_ccb_to_idx(p_scb->p_ccb)][avdt_ad_type_to_tcid(AVDT_CHAN_MEDIA, p_scb)].lcid),
1991 while((p_pkt = (BT_HDR*)GKI_dequeue (&p_scb->frag_q)) != NULL)
1996 res = avdt_ad_write_req(AVDT_CHAN_MEDIA, p_scb->p_ccb, p_scb, p_pkt);
1999 p_scb->cong = TRUE;
2004 AVDT_TRACE_DEBUG("res=%d left=%d",res, p_scb->frag_off);
2006 if(p_scb->frag_off)
2008 if(AVDT_AD_SUCCESS == res || GKI_queue_is_empty (&p_scb->frag_q))
2011 avdt_scb_queue_frags(p_scb, &p_scb->p_next_frag, &p_scb->frag_off, &p_scb->frag_q);
2012 if(!GKI_queue_is_empty (&p_scb->frag_q))
2014 data.llcong = p_scb->cong;
2015 avdt_scb_event(p_scb, AVDT_SCB_TC_CONG_EVT, &data);
2021 else if (sent && GKI_queue_is_empty (&p_scb->frag_q))
2023 (*p_scb->cs.p_ctrl_cback)(avdt_scb_to_hdl(p_scb), NULL, AVDT_WRITE_CFM_EVT, &avdt_ctrl);
2041 void avdt_scb_tc_timer(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
2045 btu_start_timer(&p_scb->timer_entry, BTU_TTYPE_AVDT_SCB_TC, AVDT_SCB_TC_DISC_TOUT);
2057 void avdt_scb_clr_vars(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data)
2061 if ((p_scb->cs.tsep == AVDT_TSEP_SNK) && (!p_scb->sink_activated))
2063 p_scb->in_use = TRUE;
2067 p_scb->in_use = FALSE;
2069 p_scb->p_ccb = NULL;
2070 p_scb->peer_seid = 0;
2084 void avdt_scb_queue_frags(tAVDT_SCB *p_scb, UINT8 **pp_data, UINT32 *p_data_len, BUFFER_Q *pq)
2098 tcid = avdt_ad_type_to_tcid(AVDT_CHAN_MEDIA, p_scb);
2099 lcid = avdt_cb.ad.rt_tbl[avdt_ccb_to_idx(p_scb->p_ccb)][tcid].lcid;
2101 if( p_scb->frag_off != 0)
2125 p_tbl = avdt_ad_tc_tbl_by_type(AVDT_CHAN_MEDIA, p_scb->p_ccb, p_scb);
2164 *p++ = (p_scb->curr_cfg.mux_tsid_media<<3) | (AVDT_ALH_FRAG_MASK|AVDT_ALH_LCODE_16BIT);