Home | History | Annotate | Download | only in ulinux

Lines Matching refs:ch_id

108 static int uipc_close_ch_locked(tUIPC_CH_ID ch_id);
266 static int uipc_check_fd_locked(tUIPC_CH_ID ch_id) {
267 if (ch_id >= UIPC_CH_NUM) return -1;
269 // BTIF_TRACE_EVENT("CHECK SRVFD %d (ch %d)", uipc_main.ch[ch_id].srvfd,
270 // ch_id);
272 if (SAFE_FD_ISSET(uipc_main.ch[ch_id].srvfd, &uipc_main.read_set)) {
273 BTIF_TRACE_EVENT("INCOMING CONNECTION ON CH %d", ch_id);
276 if (uipc_main.ch[ch_id].fd != UIPC_DISCONNECTED) {
277 BTIF_TRACE_EVENT("CLOSE CONNECTION (FD %d)", uipc_main.ch[ch_id].fd);
278 close(uipc_main.ch[ch_id].fd);
279 FD_CLR(uipc_main.ch[ch_id].fd, &uipc_main.active_set);
280 uipc_main.ch[ch_id].fd = UIPC_DISCONNECTED;
283 uipc_main.ch[ch_id].fd = accept_server_socket(uipc_main.ch[ch_id].srvfd);
285 BTIF_TRACE_EVENT("NEW FD %d", uipc_main.ch[ch_id].fd);
287 if ((uipc_main.ch[ch_id].fd >= 0) && uipc_main.ch[ch_id].cback) {
290 BTIF_TRACE_EVENT("ADD FD %d TO ACTIVE SET", uipc_main.ch[ch_id].fd);
291 FD_SET(uipc_main.ch[ch_id].fd, &uipc_main.active_set);
292 uipc_main.max_fd = MAX(uipc_main.max_fd, uipc_main.ch[ch_id].fd);
295 if (uipc_main.ch[ch_id].fd < 0) {
296 BTIF_TRACE_ERROR("FAILED TO ACCEPT CH %d (%s)", ch_id, strerror(errno));
300 if (uipc_main.ch[ch_id].cback)
301 uipc_main.ch[ch_id].cback(ch_id, UIPC_OPEN_EVT);
304 // BTIF_TRACE_EVENT("CHECK FD %d (ch %d)", uipc_main.ch[ch_id].fd, ch_id);
306 if (SAFE_FD_ISSET(uipc_main.ch[ch_id].fd, &uipc_main.read_set)) {
307 // BTIF_TRACE_EVENT("INCOMING DATA ON CH %d", ch_id);
309 if (uipc_main.ch[ch_id].cback)
310 uipc_main.ch[ch_id].cback(ch_id, UIPC_RX_DATA_READY_EVT);
330 static int uipc_setup_server_locked(tUIPC_CH_ID ch_id, const char* name,
334 BTIF_TRACE_EVENT("SETUP CHANNEL SERVER %d", ch_id);
336 if (ch_id >= UIPC_CH_NUM) return -1;
351 uipc_main.ch[ch_id].srvfd = fd;
352 uipc_main.ch[ch_id].cback = cback;
353 uipc_main.ch[ch_id].read_poll_tmo_ms = DEFAULT_READ_POLL_TMO_MS;
361 static void uipc_flush_ch_locked(tUIPC_CH_ID ch_id) {
366 pfd.fd = uipc_main.ch[ch_id].fd;
368 if (uipc_main.ch[ch_id].fd == UIPC_DISCONNECTED) {
400 static void uipc_flush_locked(tUIPC_CH_ID ch_id) {
401 if (ch_id >= UIPC_CH_NUM) return;
403 switch (ch_id) {
414 static int uipc_close_ch_locked(tUIPC_CH_ID ch_id) {
417 BTIF_TRACE_EVENT("CLOSE CHANNEL %d", ch_id);
419 if (ch_id >= UIPC_CH_NUM) return -1;
421 if (uipc_main.ch[ch_id].srvfd != UIPC_DISCONNECTED) {
422 BTIF_TRACE_EVENT("CLOSE SERVER (FD %d)", uipc_main.ch[ch_id].srvfd);
423 close(uipc_main.ch[ch_id].srvfd);
424 FD_CLR(uipc_main.ch[ch_id].srvfd, &uipc_main.active_set);
425 uipc_main.ch[ch_id].srvfd = UIPC_DISCONNECTED;
429 if (uipc_main.ch[ch_id].fd != UIPC_DISCONNECTED) {
430 BTIF_TRACE_EVENT("CLOSE CONNECTION (FD %d)", uipc_main.ch[ch_id].fd);
431 close(uipc_main.ch[ch_id].fd);
432 FD_CLR(uipc_main.ch[ch_id].fd, &uipc_main.active_set);
433 uipc_main.ch[ch_id].fd = UIPC_DISCONNECTED;
438 if (uipc_main.ch[ch_id].cback)
439 uipc_main.ch[ch_id].cback(ch_id, UIPC_CLOSE_EVT);
447 void uipc_close_locked(tUIPC_CH_ID ch_id) {
448 if (uipc_main.ch[ch_id].srvfd == UIPC_DISCONNECTED) {
449 BTIF_TRACE_EVENT("CHANNEL %d ALREADY CLOSED", ch_id);
454 uipc_main.ch[ch_id].task_evt_flags |= UIPC_TASK_FLAG_DISCONNECT_CHAN;
459 int ch_id;
496 for (ch_id = 0; ch_id < UIPC_CH_NUM; ch_id++) {
497 if (ch_id != UIPC_CH_ID_AV_AUDIO) uipc_check_fd_locked(ch_id);
567 bool UIPC_Open(tUIPC_CH_ID ch_id, tUIPC_RCV_CBACK* p_cback) {
568 BTIF_TRACE_DEBUG("UIPC_Open : ch_id %d, p_cback %x", ch_id, p_cback);
572 if (ch_id >= UIPC_CH_NUM) {
576 if (uipc_main.ch[ch_id].srvfd != UIPC_DISCONNECTED) {
577 BTIF_TRACE_EVENT("CHANNEL %d ALREADY OPEN", ch_id);
581 switch (ch_id) {
583 uipc_setup_server_locked(ch_id, A2DP_CTRL_PATH, p_cback);
587 uipc_setup_server_locked(ch_id, A2DP_DATA_PATH, p_cback);
604 void UIPC_Close(tUIPC_CH_ID ch_id) {
605 BTIF_TRACE_DEBUG("UIPC_Close : ch_id %d", ch_id);
608 if (ch_id != UIPC_CH_ID_ALL) {
610 uipc_close_locked(ch_id);
627 bool UIPC_Send(tUIPC_CH_ID ch_id, UNUSED_ATTR uint16_t msg_evt,
629 BTIF_TRACE_DEBUG("UIPC_Send : ch_id:%d %d bytes", ch_id, msglen);
634 OSI_NO_INTR(ret = write(uipc_main.ch[ch_id].fd, p_buf, msglen));
652 uint32_t UIPC_Read(tUIPC_CH_ID ch_id, UNUSED_ATTR uint16_t* p_msg_evt,
655 int fd = uipc_main.ch[ch_id].fd;
658 if (ch_id >= UIPC_CH_NUM) {
659 BTIF_TRACE_ERROR("UIPC_Read : invalid ch id %d", ch_id);
664 BTIF_TRACE_ERROR("UIPC_Read : channel %d closed", ch_id);
676 OSI_NO_INTR(poll_ret = poll(&pfd, 1, uipc_main.ch[ch_id].read_poll_tmo_ms));
679 uipc_main.ch[ch_id].read_poll_tmo_ms);
693 uipc_close_locked(ch_id);
705 uipc_close_locked(ch_id);
730 extern bool UIPC_Ioctl(tUIPC_CH_ID ch_id, uint32_t request, void* param) {
731 BTIF_TRACE_DEBUG("#### UIPC_Ioctl : ch_id %d, request %d ####", ch_id,
737 uipc_flush_locked(ch_id);
741 // BTIF_TRACE_EVENT("register callback ch %d srvfd %d, fd %d", ch_id,
742 // uipc_main.ch[ch_id].srvfd, uipc_main.ch[ch_id].fd);
743 uipc_main.ch[ch_id].cback = (tUIPC_RCV_CBACK*)param;
748 if (uipc_main.ch[ch_id].fd != UIPC_DISCONNECTED) {
750 FD_CLR(uipc_main.ch[ch_id].fd, &uipc_main.active_set);
758 uipc_main.ch[ch_id].read_poll_tmo_ms = (intptr_t)param;
759 BTIF_TRACE_EVENT("UIPC_SET_READ_POLL_TMO : CH %d, TMO %d ms", ch_id,
760 uipc_main.ch[ch_id].read_poll_tmo_ms);