void main(void)
{
	////////
	//INRQ INIT
	INTCR_IRQEN = 1;	//enables IRQ interrupts
	INTCR_IRQE  = 1;    //IRQ interrupts are edge-triggered
	////////
	
	////////
	//KEYBOARD SETUP
	DDRT    = 0x70;     //enable PortT, 7 input, 6-4 output, 3-0 input
	PERT    = 0x0F;     //enable PortT, bits 3-0 for pull device
	PPST    = 0x00;     //set    PortT, bits 3-0 for pull-UP resistors
	PTT     = 0x00;     //initialize all output pins to low
	//PortE, bits 1-0 are always set to input
	////////
	
	////////
	//INPUT CAPTURE/OUTPUT COMPARE REGISTER INITIALIZATION
	TSCR1_TEN = 1;      //enable TCNT (timer counter)
	TSCR2     = (0xF8 & TSCR2) | TIMER_PRESCALE; //set prescaler to TCNT/(2^6)

	TIOS_IOS7 = 0;      //set TC7 to input capture
	TFLG1_C7F = 1;      //reset TC7 interrupt flags
	TIOS_IOS0 = 0;      //set TC0 to output compare
	TFLG1_C0F = 1;      //reset TC0 interrupt flags

	TCTL3_EDG7B = 0;	//capture rising edges
	TCTL3_EDG7A = 1; 
	////////

	////////
	//LED DISPLAY INITIALIZATION
	DDRAD = 0xFF;		//enable PortAD, 7-0 output
	PTAD  = 0x00;
	////////

	///////
	//GLOBAL VARIABLE INITIALIZATION
	keyboard_state = KEYBOARD_READY;
	measurement_state = MEASUREMENT_WAITING;
	while(1)
	{
		if( keyboard_state == KEYBOARD_PRESSED )
		{
			break;
		}
	}



	////////
	//DATA ACQUISIION
	//100  Hz
	init_pwm(4,5,250);
	acquire_data();
	while(1)
	{
		if( keyboard_state == KEYBOARD_PRESSED )
		{
			break;
		}
	}


	//500  Hz
	init_pwm(4,1,250);
	acquire_data();
	while(1)
	{
		if( keyboard_state == KEYBOARD_PRESSED )
		{
			break;
		}
	}

	//1000 Hz
	init_pwm(3,1,250);
	acquire_data();
	while(1)
	{
		if( keyboard_state == KEYBOARD_PRESSED )
		{
			break;
		}
	}


	//2000 Hz
	init_pwm(2,1,250);
	acquire_data();
	while(1)
	{
		if( keyboard_state == KEYBOARD_PRESSED )
		{
			break;
		}
	}
	////////
	return 0;	
}
int main(void)
{
  int j, jj;
  int sleep_sec=2;
  char bufD[128];
  int ind, Mcount;
  int M=50;
  int plan;

  pg_id = cpgopen("/XSERVE");
  cpgpap(6.00, 0.8);

  timedata = fftw_malloc(sizeof(double) * (N+1));
  freqdata = fftw_malloc(sizeof(fftw_complex) * (N+1));
  read_count=N*M;
  mem_size=read_count * 2;
  ai_buf = (I16*)malloc(mem_size);
 
  if ((fp=fopen("SatPosData","w"))==NULL)
    {
      printf("Cannot open file. \n");
      exit(1);
    }

  for (j=1; j<=max_scans; j++)
    {
      printf("\nPause %d seconds ...",sleep_sec);
      sleep(sleep_sec);
      printf("\n\nAcquisition %d\n",j);
      fprintf(fp,"\nAcquisition: %d\n",j);
      strcpy(bufD, send_command0("Apollo","GET_TIME$"));
      printf("Universal Time: %s",bufD);
      fprintf(fp, "UT: %s",bufD);
      printf("Satellites above local horizon:\n");
      getSatInfo0();
      getSatInfo1();
      acquire_data();
      transfer_and_scale((U16*)ai_buf, channel+1);

           for (k=0; k<(N/2)+1; k++) accumFreqData[k]=0;      
      printf("Integrating ... %i %i-blocks",M,N);
      for (Mcount=1; Mcount<=M; Mcount++)
	{
	  for (ind=0; ind<N; ind++)
	    {
	      timedata[ind]=voltarray[ind+(N*(Mcount-1))];
	    }
	  //	      printf("%i ",Mcount);
	  plan=(j==1)&(Mcount==1);
	  if (plan)
	    {
	      p=fftw_plan_dft_r2c_1d(N, timedata, freqdata, FFTW_FORWARD);
	    }

	  fftw_execute(p);


	  for (k=0; k<(N/2)+1; k++)
	    {
	      accumFreqData[k]+=(sqrt(freqdata[k][0]*freqdata[k][0]+freqdata[k][1]*freqdata[k][1])/(M*256));	  
	    } 

	}
      fprintf(fp, "Bin Voltages \n");
      for (jj=0; jj<=240; jj+=10)
	{
	  for (k=jj; k<(jj+10); k++) fprintf(fp, "%f ", accumFreqData[k]);
	  fprintf(fp, "\n");
	}

      //      plot_channel_data();
           plot_freq_data();
      
    }
  int fclose(FILE *fp);
  postfft();
  free( ai_buf );
  printf("\n\nEnd of program. "); 
  //getch(); 
  putchar('\n');
  return 0;
}
Esempio n. 3
0
void nullsrv()
{


    SOCKET   stcpactive = INVALID_SOCKET;
    struct   sockaddr_in sin1;
    struct   timeval timeout;           // Timeout struct for select
    int      size;
    int      cnt;
    char     *pBuf;
    HANDLE   hBuffer;

    //gpioEnableGlobalInterrupt();
    // Allocate the file environment for this task
    fdOpenSession(TaskSelf());


    TaskSleep(15000);
    platform_write("Raw Eth Task Started ... \n");
    // Create the main TCP listen socket
    platform_write("creating main TCP listen socket\n");

    int k=0;
        int n=0;
       IMG_STORE_REQST_TYP a;


            int *data;
            UInt32 time1,time2;
           for(;;)
           {
        	   	   //time1=Clock_getTicks();
        	   	   a.fps=acquire_data();
        	   	   a.number=min((int)a.fps*sizeof(int),PULSE_SAMPLE*sizeof(int));
        	   	   //time2=Clock_getTicks();
        	   	   ///platform_write("time taken for acquire data is %lu \n",(unsigned long)(time2-time1));
        	   	   //time1=Clock_getTicks();
                   for(k=0;k<2;k++)
                   {
                    if(k==0)
                    data=&data_bufferA[0];
                    else
                    data=&data_bufferB[0];
                   //WWdis_data();
                       stcp = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
                       if( stcp == INVALID_SOCKET )
                       {
                           int ret=fdError();
                           goto leave;

                       }


        timeout.tv_sec  = 30;
        timeout.tv_usec = 0;
        setsockopt( stcp, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof( timeout ) );
        setsockopt( stcp, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof( timeout ) );
        //timeout.tv_sec  = 3;
        //int opt = 1;
        //setsockopt( stcp, SOL_SOCKET, SO_BLOCKING , &opt, sizeof( opt ) );

        platform_write("created main TCP client socket\n");
        // Set Port = 1001, leaving IP address = Any
        bzero( &sin1, sizeof(struct sockaddr_in) );
        sin1.sin_family = AF_INET;
        sin1.sin_addr.s_addr =inet_addr(PCStaticIP);
        sin1.sin_port   = htons(7000);
        sin1.sin_len    = sizeof( sin1 );




        platform_write("LLL %d \n",(sin1.sin_addr.s_addr));
        //fcntl(stcp, F_SETFL, O_NONBLOCK);





              //while(1)

              if( connect(stcp, (struct sockaddr *) &sin1, sizeof(sin1)) < 0)
              {
            	  if (fdError() == EINPROGRESS)
            	  {
            		  	  	  	 fd_set wrsd;
            		             struct timeval tv;

            		             FD_ZERO(&wrsd);
            		             FD_SET(stcp, &wrsd);
            		             tv.tv_sec = 2;
            		             tv.tv_usec = 0;
            		             int ret = fdSelect((int)stcp, 0, &wrsd, 0, &tv );
            		             if(ret>0)
            		             {
            		            	 int err, lenErr;
            		            	  lenErr = sizeof(err);
            		            	  ret = getsockopt(stcp, SOL_SOCKET, SO_ERROR, &err, &lenErr);
            		            	  if(ret==0 && err==0)
            		            	  {
            		            		  platform_write("connection completed");
            		            		  break;
            		            	  }
            		            	  else
            		            	  {
            		            		  platform_write("Attempting to connect again");
            		            		  continue;
            		            	  }
            		             }

            	  }

              }

          platform_write("completed connect \n");
         a.hydrophone=k;
         n=0;
            n = send(stcp,&a,sizeof(a),0);
              if (n < 0)
              {
                  perror("ERROR writing to socket");
                  break;
              }


              platform_write("writing hydrophone %d,bytes %d\n",k,a.number);

                n=0;
                int c=0;
                //platform_write("writing %s  \n",data);
                do
                {
                n = send(stcp,data,a.number-c,0);
                //platform_write("writing %d bytes \n",n);
                  if (n < 0)
                  {
                      perror("ERROR writing to socket");
                      break;
                  }
                  c=c+n;
                  data=data+n;
                }while(c<a.number);
                if (n < 0)
                	break;
                //free(orig);
                int status;
                HANDLE hbuffer;
                n = recv(stcp, &status, sizeof(status),0);

                if(status==0)
                {
                    platform_write("Client request success\n");
                }
                else
                {
                    platform_write("Client request error");
                    continue;
                }
                if( stcp != INVALID_SOCKET )
                fdClose(stcp);


             }
                   if( stcp != INVALID_SOCKET )
                   {

						      shutdown(stcp,0);
						      fdClose(stcp);
                   }
                   //time2=Clock_getTicks();
                   platform_write("time taken for  data transfer is  %lu \n",(unsigned long)(time2-time1));
               //TaskSleep(5);fe
    }

leave:

    TaskSleep(5000);
    // We only get here on an error - close the sockets
  //  if( stcp != INVALID_SOCKET )
    //    fdClose( stcp );

    platform_write("NullSrv Fatal Error\n");

//    NetworkClose((HANDLE)TaskSelf());
    // This task is killed by the system - here, we block
    //TaskBlock( TaskSelf() );
}