static void *bt_tx_monitor(void *ptr) { UCHAR ucTxBuf[512]; int iPktLen; DBG("Thread %lu starts\n", txThread); while (1){ memset(ucTxBuf, 0, sizeof(ucTxBuf)); iPktLen = 0; // Receive HCI packet from PC if(RELAYER_read(serial_fd, ucTxBuf, sizeof(ucTxBuf), &iPktLen)) { DBG("Receive packet from PC\n"); // Send the packet to BT Controller if(EM_BT_write(ucTxBuf, iPktLen)){ sched_yield(); continue; } else{ ERR("Send packet to BT Controller failed\n"); pthread_kill(rxThread, SIGRTMIN); break; } } else{ if (iPktLen == 0){ continue; } else{ ERR("Receive packet from PC failed\n"); pthread_kill(rxThread, SIGRTMIN); break; } } } return 0; }
void *bt_tx_monitor(void *ptr) { UCHAR ucTxBuf[512]; int iPktLen, i; while (!fExit){ memset(ucTxBuf, 0, sizeof(ucTxBuf)); iPktLen = 0; // Receive HCI packet from PC if(RELAYER_read(uart_fd, ucTxBuf, sizeof(ucTxBuf), &iPktLen)){ // Dump Tx packet DBG("Receive packet from PC:\n"); for (i = 0; i < iPktLen; i++) { DBG("%02x\n", ucTxBuf[i]); } // Send the packet to BT chip if(EM_BT_write(ucTxBuf, iPktLen)){ sched_yield(); continue; } else{ ERR("Send packet to BT chip failed\n"); fExit = TRUE; } } else{ if (iPktLen == 0) continue; else fExit = TRUE; } } return 0; }