void dsp_idle_loop (void){ int i; extern unsigned short FreqDiv; extern unsigned short ADCRange; extern unsigned short QEP_ON; /* configure GPIO all in for startup safety -- this is ans should be default power-up, just to make sure again */ i = 0x0000; WR_GPIO (GPIO_Dir_0, &i, 1); for(;;){ /* forever !!! */ /* Sate Machines heartbeat... */ if (state.BLK_count >= state.BLK_Ncount){ state.BLK_count=0L; ++state.DSP_time; if (++state.DSP_tens == 10){ state.mode ^= MD_BLK; state.DSP_tens = 0; } } /* state change request? */ if (state.set_mode){ state.mode |= state.set_mode; state.set_mode = 0; } if (state.clr_mode){ state.mode &= ~state.clr_mode; state.clr_mode = 0; } /* PID-feedback on/off only via flag MD_PID -- nothing to do here */ if (feedback_mixer.exec){ asm_calc_mix_log (); feedback_mixer.exec = 0; } for (i=0; i<4; ++i) if (feedback_mixer.setpoint[i] != mix_setpoint_old[i]){ feedback_mixer.x = feedback_mixer.setpoint[i]; asm_calc_mix_log (); feedback_mixer.setpoint_log[i] = feedback_mixer.lnx; mix_setpoint_old[i] = feedback_mixer.setpoint[i]; WATCH16(i,feedback_mixer.setpoint_log[i]); } /* Start Offset Moveto ? */ if (move.start && !autoapp.pflg) init_offset_move (); /* Start/Stop/Pause/Resume Area Scan ? */ if (scan.start && !autoapp.pflg) init_area_scan (); switch (scan.stop){ case 0: break; case 1: scan.stop = 0; scan.pflg = 0; break; // Stop/Cancel/Abort scan case 2: scan.stop = 0; scan.pflg = 2; break; // Pause Scan case 4: if (scan.pflg == 2) { scan.stop = 0; scan.pflg = 1; } break; // Resume Scan from Pause, else ignore default: break; } /* Start Probe ? */ if (probe.start && !probe.pflg && !autoapp.pflg){ init_probe_fifo (); // reset probe fifo! init_probe (); } if (probe.stop) stop_probe (); /* Start Autoapproach/run Mover ? */ if (autoapp.start && !probe.pflg && !scan.pflg) init_autoapp (); if (autoapp.stop) stop_autoapp (); /* Start CoolRunner IO pulse ? */ if (CR_out_pulse.start) init_CR_out_pulse (); if (CR_out_pulse.stop) stop_CR_out_pulse (); /* Do CoolRunner generic IO ? */ if (CR_generic_io.start){ switch (CR_generic_io.start){ case 1: WR_GPIO (GPIO_Data_0, &CR_generic_io.gpio_data_out, 1); break; // write port case 2: WR_GPIO (GPIO_Data_0, &CR_generic_io.gpio_data_in, 0); break; // read port case 3: WR_GPIO (GPIO_Dir_0, &CR_generic_io.gpio_direction_bits, 1); break; // reconfigure port default: break; } CR_generic_io.start=0; } #ifdef AIC_STOPMODE_ENABLE if (state.mode & MD_AIC_STOP){ if (!AIC_stop_mode){ AIC_stop_mode = 1; sleepcount = 0; /* Stop Analog810 -- Out/In may be undefined while stopped */ stop_Analog810 (); } if (++sleepcount > 50){ sleepcount = 0; dataprocess(); } } else { if (AIC_stop_mode){ AIC_stop_mode = 0; /* ReInit and Start Analog810 */ FreqDiv = a810_config.freq_div; // default: =10 75kHz *** 5 ... 65536 150kHz at N=5 Fs = Clk_in/(N * 200), Clk_in=150MHz ADCRange = a810_config.adc_range; // default: =0 0: +/-10V, 1:+/-5V QEP_ON = a810_config.qep_on; // default: =1 (on) manage QEP counters start_Analog810 (); } } #endif } /* repeat idle loop forever... */ }
void main(int argc,char *argv[]) { int port = 1235; fd_set read_fds,master_fds; int fdmax; int ssocket; struct sockaddr_in remoteaddr; //zeroing fds FD_ZERO(&read_fds); FD_ZERO(&master_fds); //getting socket ssocket = gettcpsock(); fdmax = ssocket; //declaring server address struct sockaddr_in serveraddr; memset(&serveraddr,0,sizeof(serveraddr)); serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1"); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(port); //binding the peer to address bindsock(ssocket,serveraddr); //adding listener FD_SET(ssocket,&master_fds); //setting rtt and window size int window,rtt; printf("enter window size: "); scanf("%d",&window); printf("enter rtt: "); scanf("%d",&rtt); char str[30]; printf("enter the file to be sent: "); scanf("%s",str); //open the file FILE *p; p = fopen(str,"r+"); //packets and ackbuffer struct pack *datato; datato = malloc(100*sizeof(struct pack)); struct pack *datafrom; datafrom = malloc(100*sizeof(struct pack)); //make packets invalid makeinvalid(datato); makeinvalid(datafrom); //makepackets makepackets(datato,p); //print(datato); int sendbase = -1; int nextseq = 0; //litsening to port startlisten(ssocket,10); int res; int i; int sendsocket=-1; struct timeval tout; tout.tv_sec = 1; tout.tv_usec = 0; int z = 0; while(1) { read_fds = master_fds; //printf("was here\n"); for(z=0;z<window*3;z++) { if (select(fdmax+1, &read_fds, NULL, NULL, &tout) == -1) errorrep("select"); //printf("after select\n"); for(i=0; i <= fdmax; i++) { //printf("checking socket %d\n",i); if(FD_ISSET(i,&read_fds)) { //printf("%d socket is set\n",i); if(i == ssocket) { //printf("incomming connection\n"); struct sockaddr_in remote; int addrlen = sizeof(remote); int newfd = accept(ssocket,(struct sockaddr *)&remote,&addrlen); sendsocket = newfd; if(newfd < 0) errorrep("accept"); else { FD_SET(newfd,&master_fds); if(newfd > fdmax) fdmax = newfd; printf("selectserver: new connection on socket %d\n",newfd); } } else { //printf("incomming packet\n"); struct pack incomming; res = recv(i,&incomming,sizeof(incomming),0); if(res == 0) { printf("connection closed by socket: %d\n",i); FD_CLR(i,&master_fds); } if(res < 0) errorrep("reciving packet failed:"); if(incomming.sno == -1) ackprocess(&incomming,datato,&sendbase); if(incomming.ackno == -1) { dataprocess(&incomming,datafrom); struct pack ackpacket; ackpacket.sno = -1; ackpacket.ackno = incomming.sno; printf("sending acknoledgement: %d",ackpacket.ackno); send(sendsocket,&ackpacket,sizeof(ackpacket),0); } } } } } if(sendsocket != -1) { sendpacket(datato,&window,&sendbase,&nextseq,sendsocket); int ti = time(NULL); while((time(NULL)) < ti+rtt) { int a=0; a++; //does nothing } //print(datafrom); } } }
void main(int argc,char *argv[]) { int port = 1235; fd_set read_fds,master_fds; int fdmax; int ssocket; struct sockaddr_in remoteaddr; //zeroing fds FD_ZERO(&read_fds); FD_ZERO(&master_fds); //getting socket ssocket = gettcpsock(); fdmax = ssocket; //declaring server address struct sockaddr_in serveraddr; memset(&serveraddr,0,sizeof(serveraddr)); serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1"); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(port); //adding listener FD_SET(ssocket,&read_fds); //setting rtt and window size int window,rtt; printf("enter window size: "); scanf("%d",&window); printf("enter rtt: "); scanf("%d",&rtt); char str[30]; printf("enter the file to be sent: "); scanf("%s",str); //open the file FILE *p; p = fopen(str,"r+"); //connecting to the server int cstatus = -1; while(cstatus < 0) { printf("here\n"); cstatus = connect(ssocket,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); } if(cstatus >= 0) printf("connected to server\n"); //packets and ackbuffer struct pack *datato; datato = malloc(100*sizeof(struct pack)); struct pack *datafrom; datafrom = malloc(100*sizeof(struct pack)); //make packets invalid makeinvalid(datato); makeinvalid(datafrom); //makepackets makepackets(datato,p); int sendbase = -1; int nextseq = 0; int res; int i; int sendsocket; while(1) { read_fds = master_fds; if (select(fdmax+1, &read_fds, NULL, NULL, NULL) == -1) { perror("select"); exit(4); } for(i=0; i<=fdmax; i++) { if(FD_ISSET(i,&read_fds)) { struct pack incomming; res = recv(i,&incomming,sizeof(incomming),0); if(res == 0) printf("connection closed by socket: %d\n",i); if(res < 0) errorrep("reciving packet failed:"); if(incomming.sno == -1) ackprocess(&incomming,datato,&sendbase); if(incomming.ackno == -1) { dataprocess(&incomming,datafrom); struct pack ackpacket; ackpacket.sno = -1; ackpacket.ackno = incomming.sno; send(i,&ackpacket,sizeof(ackpacket),0); } } } sendpacket(datato,&window,&sendbase,&nextseq,sendsocket); int ti = time(NULL); while((time(NULL)) > ti+rtt) { int a=0; a++; //does nothing } } }