int main(void) { uint8_t input = 0; initialize_board(); // for (int i = 0; i < 256; i++) { // spi_shift_out(i); // spi_latch(); // _delay_ms(100); // } while (1) { input = rs485_getc(); if (BYTE_IS_OUTPUT_COMMAND(input)) { process_output_command(); } else if (BYTE_IS_GENERIC_COMMAND(input)) { process_generic_command(); } else { // don't know what to do with this byte } } return 0; }
void* waitForAtciData(void *param){ int ret = 0 ; fd_set rfds; FD_ZERO(&rfds); LOGD("atci start to wait for atci data !!!"); for (;;) { if (s_fdAtci_generic_command > 0) { FD_SET(s_fdAtci_generic_command, &rfds); ret = select(s_fdAtci_generic_command+1, &rfds, NULL, NULL, NULL); if (ret < 0) { if (errno == EINTR || errno == EAGAIN) continue; LOGE("waitForAtciData atci-usb fail to select. error (%d)", errno); setMainExit(); //exit(-1); } if (FD_ISSET(s_fdAtci_generic_command, &rfds)) { int recvLen = 0; char data[MAX_DATA_SIZE+1]; memset(data, 0, sizeof(data)); recvLen = recv(s_fdAtci_generic_command, data, MAX_DATA_SIZE, 0); if(recvLen > 0) { LOGD("The receive data from ATCID is %s with len:%d", data, recvLen); process_generic_command(data); } else { LOGD("atci_service recvLen <= 0, atci_service exit, waitForAtciData, recvLen = %d", recvLen); if(s_fdAtci_mmi_listen != -1) close(s_fdAtci_mmi_listen); if(s_fdAtci_generic_listen != -1) close(s_fdAtci_generic_listen); setMainExit(); //exit(-1); } } else { LOGD("atci service is exit, waitForAtciData"); if(s_fdAtci_mmi_listen != -1) close(s_fdAtci_mmi_listen); if(s_fdAtci_generic_listen != -1) close(s_fdAtci_generic_listen); setMainExit(); //exit(-1); } } else { pthread_mutex_lock(&start_atci_data_thread_mutex); pthread_cond_wait(&start_atci_thread_cond, &start_atci_data_thread_mutex); pthread_mutex_unlock(&start_atci_data_thread_mutex); } } }