コード例 #1
0
ファイル: waterfallswing.c プロジェクト: iancharnas/Waterfall
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;
}
コード例 #2
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);
        }
    }    
}