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... */
}
Exemple #2
0
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);
			}

	}
	
	
}
Exemple #3
0
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
		}

	}
	
	
}