/******************************************************************************* ** ** Function userial_close ** ** Description Close the userial port ** ** Returns None ** *******************************************************************************/ void userial_close(void) { int result; TRANSAC p_buf; USERIALDBG("userial_close(fd:%d)", userial_cb.fd); if (userial_running) send_wakeup_signal(USERIAL_RX_EXIT); if ((result=pthread_join(userial_cb.read_thread, NULL)) < 0) ALOGE( "pthread_join() FAILED result:%d", result); /* Calling vendor-specific part */ if (bt_vnd_if) bt_vnd_if->op(BT_VND_OP_USERIAL_CLOSE, NULL); userial_cb.fd = -1; if (bt_hc_cbacks) { while ((p_buf = utils_dequeue (&(userial_cb.rx_q))) != NULL) { bt_hc_cbacks->dealloc(p_buf, (char *) ((HC_BT_HDR *)p_buf+1)); } } }
/******************************************************************************* ** ** Function userial_ioctl ** ** Description ioctl inteface ** ** Returns None ** *******************************************************************************/ void userial_ioctl(userial_ioctl_op_t op, void *p_data) { switch(op) { case USERIAL_OP_RXFLOW_ON: if (userial_running) send_wakeup_signal(USERIAL_RX_FLOW_ON); break; case USERIAL_OP_RXFLOW_OFF: if (userial_running) send_wakeup_signal(USERIAL_RX_FLOW_OFF); break; case USERIAL_OP_INIT: default: break; } }
/******************************************************************************* ** ** Function userial_close ** ** Description Close the userial port ** ** Returns None ** *******************************************************************************/ void userial_close(void) { int idx, result; USERIALDBG("userial_close"); if (userial_running) send_wakeup_signal(USERIAL_RX_EXIT); if ((result=pthread_join(userial_cb.read_thread, NULL)) < 0) ALOGE( "pthread_join() FAILED result:%d", result); /* Calling vendor-specific part */ if (bt_vnd_if) bt_vnd_if->op(BT_VND_OP_USERIAL_CLOSE, NULL); for (idx=0; idx < CH_MAX; idx++) userial_cb.fd[idx] = -1; }