Lines Matching refs:ch_id

116 static int uipc_close_ch_locked(tUIPC_CH_ID ch_id);
275 static int uipc_check_fd_locked(tUIPC_CH_ID ch_id)
277 if (ch_id >= UIPC_CH_NUM)
280 //BTIF_TRACE_EVENT("CHECK SRVFD %d (ch %d)", uipc_main.ch[ch_id].srvfd, ch_id);
282 if (SAFE_FD_ISSET(uipc_main.ch[ch_id].srvfd, &uipc_main.read_set))
284 BTIF_TRACE_EVENT("INCOMING CONNECTION ON CH %d", ch_id);
286 uipc_main.ch[ch_id].fd = accept_server_socket(uipc_main.ch[ch_id].srvfd);
288 BTIF_TRACE_EVENT("NEW FD %d", uipc_main.ch[ch_id].fd);
290 if ((uipc_main.ch[ch_id].fd > 0) && uipc_main.ch[ch_id].cback)
294 BTIF_TRACE_EVENT("ADD FD %d TO ACTIVE SET", uipc_main.ch[ch_id].fd);
295 FD_SET(uipc_main.ch[ch_id].fd, &uipc_main.active_set);
296 uipc_main.max_fd = MAX(uipc_main.max_fd, uipc_main.ch[ch_id].fd);
299 if (uipc_main.ch[ch_id].fd < 0)
301 BTIF_TRACE_ERROR("FAILED TO ACCEPT CH %d (%s)", ch_id, strerror(errno));
305 if (uipc_main.ch[ch_id].cback)
306 uipc_main.ch[ch_id].cback(ch_id, UIPC_OPEN_EVT);
309 //BTIF_TRACE_EVENT("CHECK FD %d (ch %d)", uipc_main.ch[ch_id].fd, ch_id);
311 if (SAFE_FD_ISSET(uipc_main.ch[ch_id].fd, &uipc_main.read_set))
313 //BTIF_TRACE_EVENT("INCOMING DATA ON CH %d", ch_id);
315 if (uipc_main.ch[ch_id].cback)
316 uipc_main.ch[ch_id].cback(ch_id, UIPC_RX_DATA_READY_EVT);
338 static int uipc_setup_server_locked(tUIPC_CH_ID ch_id, char *name, tUIPC_RCV_CBACK *cback)
342 BTIF_TRACE_EVENT("SETUP CHANNEL SERVER %d", ch_id);
344 if (ch_id >= UIPC_CH_NUM)
362 uipc_main.ch[ch_id].srvfd = fd;
363 uipc_main.ch[ch_id].cback = cback;
364 uipc_main.ch[ch_id].read_poll_tmo_ms = DEFAULT_READ_POLL_TMO_MS;
374 static void uipc_flush_ch_locked(tUIPC_CH_ID ch_id)
381 pfd.fd = uipc_main.ch[ch_id].fd;
383 if (uipc_main.ch[ch_id].fd == UIPC_DISCONNECTED)
404 static void uipc_flush_locked(tUIPC_CH_ID ch_id)
406 if (ch_id >= UIPC_CH_NUM)
409 switch(ch_id)
422 static int uipc_close_ch_locked(tUIPC_CH_ID ch_id)
426 BTIF_TRACE_EVENT("CLOSE CHANNEL %d", ch_id);
428 if (ch_id >= UIPC_CH_NUM)
431 if (uipc_main.ch[ch_id].srvfd != UIPC_DISCONNECTED)
433 BTIF_TRACE_EVENT("CLOSE SERVER (FD %d)", uipc_main.ch[ch_id].srvfd);
434 close(uipc_main.ch[ch_id].srvfd);
435 FD_CLR(uipc_main.ch[ch_id].srvfd, &uipc_main.active_set);
436 uipc_main.ch[ch_id].srvfd = UIPC_DISCONNECTED;
440 if (uipc_main.ch[ch_id].fd != UIPC_DISCONNECTED)
442 BTIF_TRACE_EVENT("CLOSE CONNECTION (FD %d)", uipc_main.ch[ch_id].fd);
443 close(uipc_main.ch[ch_id].fd);
444 FD_CLR(uipc_main.ch[ch_id].fd, &uipc_main.active_set);
445 uipc_main.ch[ch_id].fd = UIPC_DISCONNECTED;
450 if (uipc_main.ch[ch_id].cback)
451 uipc_main.ch[ch_id].cback(ch_id, UIPC_CLOSE_EVT);
461 void uipc_close_locked(tUIPC_CH_ID ch_id)
463 if (uipc_main.ch[ch_id].srvfd == UIPC_DISCONNECTED)
465 BTIF_TRACE_EVENT("CHANNEL %d ALREADY CLOSED", ch_id);
470 uipc_main.ch[ch_id].task_evt_flags |= UIPC_TASK_FLAG_DISCONNECT_CHAN;
477 int ch_id;
514 for (ch_id = 0; ch_id < UIPC_CH_NUM; ch_id++)
516 if (ch_id != UIPC_CH_ID_AV_AUDIO)
517 uipc_check_fd_locked(ch_id);
592 UDRV_API BOOLEAN UIPC_Open(tUIPC_CH_ID ch_id, tUIPC_RCV_CBACK *p_cback)
594 BTIF_TRACE_DEBUG("UIPC_Open : ch_id %d, p_cback %x", ch_id, p_cback);
598 if (ch_id >= UIPC_CH_NUM)
604 if (uipc_main.ch[ch_id].srvfd != UIPC_DISCONNECTED)
606 BTIF_TRACE_EVENT("CHANNEL %d ALREADY OPEN", ch_id);
611 switch(ch_id)
614 uipc_setup_server_locked(ch_id, A2DP_CTRL_PATH, p_cback);
618 uipc_setup_server_locked(ch_id, A2DP_DATA_PATH, p_cback);
637 UDRV_API void UIPC_Close(tUIPC_CH_ID ch_id)
639 BTIF_TRACE_DEBUG("UIPC_Close : ch_id %d", ch_id);
642 if (ch_id != UIPC_CH_ID_ALL)
645 uipc_close_locked(ch_id);
666 UDRV_API BOOLEAN UIPC_SendBuf(tUIPC_CH_ID ch_id, BT_HDR *p_msg)
670 BTIF_TRACE_DEBUG("UIPC_SendBuf : ch_id %d NOT IMPLEMENTED", ch_id);
690 UDRV_API BOOLEAN UIPC_Send(tUIPC_CH_ID ch_id, UINT16 msg_evt, UINT8 *p_buf,
696 BTIF_TRACE_DEBUG("UIPC_Send : ch_id:%d %d bytes", ch_id, msglen);
700 if (write(uipc_main.ch[ch_id].fd, p_buf, msglen) < 0)
719 UDRV_API void UIPC_ReadBuf(tUIPC_CH_ID ch_id, BT_HDR *p_msg)
723 BTIF_TRACE_DEBUG("UIPC_ReadBuf : ch_id:%d NOT IMPLEMENTED", ch_id);
739 UDRV_API UINT32 UIPC_Read(tUIPC_CH_ID ch_id, UINT16 *p_msg_evt, UINT8 *p_buf, UINT32 len)
743 int fd = uipc_main.ch[ch_id].fd;
747 if (ch_id >= UIPC_CH_NUM)
749 BTIF_TRACE_ERROR("UIPC_Read : invalid ch id %d", ch_id);
755 BTIF_TRACE_ERROR("UIPC_Read : channel %d closed", ch_id);
759 //BTIF_TRACE_DEBUG("UIPC_Read : ch_id %d, len %d, fd %d, polltmo %d", ch_id, len,
760 // fd, uipc_main.ch[ch_id].read_poll_tmo_ms);
769 if (poll(&pfd, 1, uipc_main.ch[ch_id].read_poll_tmo_ms) == 0)
771 BTIF_TRACE_EVENT("poll timeout (%d ms)", uipc_main.ch[ch_id].read_poll_tmo_ms);
781 uipc_close_locked(ch_id);
794 uipc_close_locked(ch_id);
822 UDRV_API extern BOOLEAN UIPC_Ioctl(tUIPC_CH_ID ch_id, UINT32 request, void *param)
824 BTIF_TRACE_DEBUG("#### UIPC_Ioctl : ch_id %d, request %d ####", ch_id, request);
831 uipc_flush_locked(ch_id);
835 //BTIF_TRACE_EVENT("register callback ch %d srvfd %d, fd %d", ch_id, uipc_main.ch[ch_id].srvfd, uipc_main.ch[ch_id].fd);
836 uipc_main.ch[ch_id].cback = (tUIPC_RCV_CBACK*)param;
842 if (uipc_main.ch[ch_id].fd != UIPC_DISCONNECTED)
845 FD_CLR(uipc_main.ch[ch_id].fd, &uipc_main.active_set);
853 uipc_main.ch[ch_id].read_poll_tmo_ms = (intptr_t)param;
854 BTIF_TRACE_EVENT("UIPC_SET_READ_POLL_TMO : CH %d, TMO %d ms", ch_id, uipc_main.ch[ch_id].read_poll_tmo_ms );