示例#1
0
文件: main.c 项目: Zubeen/ESE519
//Dequeue oldest & transmit
void  fetchTxBuffer()
{
	int8_t length;
	if(entry[front]==1)
	{
		length=strlen(&txQueue[front][PKT_DATA_START])+PKT_DATA_START+1;
		//printf("transmitting from queue   \n\r");
		/*
		for(int i=PKT_DATA_START; i<length; i++ )
		{
			printf("%c",txQueue[front][i] );
		}
		printf("\n\r");*/
				
		rtl_tx_pkt( &txQueue[front], length, MY_TX_SLOT);
		entry[front]=0;
		*txQueue[front] = "";
		//printf("now the que is%s",txQueue[front]);
		front++;
		//rtl_wait_until_rx_or_tx();
	}
	else
	{
	//NOTHING TO TRANSMIT, BUT GATEWAY HAS TO TRANSMIT SOMETHING
	rtl_tx_pkt("type=0", strlen("type=0")+PKT_DATA_START+1, MY_TX_SLOT);
	}
	
	//wrap around
	if(front==MAX_QUEUE_SIZE)
	{
		front=0;
	}
}
示例#2
0
文件: main.cpp 项目: ESE519/SenseX
void Task1()
{
  uint8_t j, i;
  char *local_rx_buf;
  uint8_t cnt,cont;
  int8_t rssi;
  uint8_t length,slot;
  uint16_t counter;
  volatile nrk_time_t t;
	uint16_t tx_count, rx_count;
  printf( "Task1 PID=%d, MOBILE\r\n",nrk_get_pid());
  counter=0;
  cnt=0;
  cont=0;
	uint8_t val,fd,fd2,buf[2],buf2[2];
	uint16_t adc_int,adc_int2,light,temp;
  uint8_t k,l,m,n;	
  //rtl_init (RTL_COORDINATOR);
  rtl_init (RTL_MOBILE);
	rtl_set_schedule( RTL_TX, MY_TX_SLOT, 1 );
	rtl_set_schedule( RTL_RX, MY_RX_SLOT1, 1);
	//rtl_set_schedule( RTL_RX, MY_RX_SLOT2, 1);
//  rtl_set_contention(8,1);
  rtl_start();
  
  rtl_rx_pkt_set_buffer(rx_buf, RF_MAX_PAYLOAD_SIZE);
  nrk_kprintf( PSTR("start done\r\n") );
  while(!rtl_ready())  nrk_wait_until_next_period(); 
	tx_count = 0;
	rx_count = 0;
  while(1) {	
		if (tx_count >= 250) {
			printf("Transmissions: %d \r\n", tx_count);
			printf("Receptions: %d \r\n", rx_count);
		}
		if (tx_count < 250) {
			
		/*fd = nrk_open(FIREFLY_SENSOR_BASIC,READ);
		wait_ms(1);
		val = nrk_set_status(fd,SENSOR_SELECT,LIGHT);
		val = nrk_set_status(fd2,SENSOR_SELECT,TEMP);
		val = nrk_read(fd , &buf[0] , 2);
		val = nrk_read(fd2 , &buf2[0] , 2);
		adc_int = buf[0] + (buf[1]<<8);
		adc_int2 = buf2[0] + (buf2[1]<<8);
		light = adc_int;
		temp = adc_int2;
		k = light & 0xFF;
		l = (light >> 8) & 0xFF;
		m = temp & 0xFF;
		n = (temp >> 8) & 0xFF;*/
	  if( rtl_rx_pkt_check()!=0 )
     {
       nrk_led_set(BLUE_LED);
		   local_rx_buf=rtl_rx_pkt_get(&length, &rssi, &slot);
       printf( "Got Packet on slot %d %d: ",slot,length );
			 rx_count++;
      for(i=PKT_DATA_START; i<length; i++ )
       {
				printf( "%c",local_rx_buf[i] );
       }
       printf("\r\n");
			 rtl_rx_pkt_release();
       nrk_led_clr(BLUE_LED);
			} 
	  if( rtl_tx_pkt_check(MY_TX_SLOT)!=0 )
	  {
			printf( "Pending on slot %d\r\n",MY_TX_SLOT );
		}
	  else {
		nrk_led_set(RED_LED);
    cnt++;
    sprintf( &tx_buf[PKT_DATA_START], "Mobile1 %d", cnt);
		//printf(" %d %d %d %d \r\n",k,l,m,n);
		/*tx_buf[PKT_DATA_START] = k;
		tx_buf[PKT_DATA_START+1] = ' ';
		tx_buf[PKT_DATA_START+2] = l;
		tx_buf[PKT_DATA_START+3] = ' ';
		tx_buf[PKT_DATA_START+4] = m;
		tx_buf[PKT_DATA_START+5] = ' ';
		tx_buf[PKT_DATA_START+6] = n;*/
		length=strlen(&tx_buf[PKT_DATA_START])+PKT_DATA_START;
		rtl_tx_pkt( tx_buf, length, MY_TX_SLOT );
		printf( "Sending Packet on slot %d\r\n",MY_TX_SLOT);
		tx_count++;
		nrk_led_clr(RED_LED);
	  }	  
	  //nrk_wait_until_next_period(); 
	  rtl_wait_until_rx_or_tx();
  	}
	}
		
}
示例#3
0
文件: main.c 项目: ESE519/ISA100.11a
void Task1()
{
  uint8_t j, i;
  uint8_t *local_rx_buf;
  uint8_t length,slot;
  int8_t rssi;
  uint8_t cnt;
  uint16_t counter;
  volatile nrk_time_t t;
  printf( "Task1 PID=%d\r\n",nrk_get_pid());
  counter=0;
  cnt=0;
 

//  nrk_led_set(0);
  rtl_init (RTL_MOBILE);
  rtl_set_schedule( RTL_RX, MY_RX_SLOT, 1 );
  //rtl_set_schedule( RTL_RX, 12, 1 );
  rtl_set_schedule( RTL_TX, MY_TX_SLOT, 1 );
//  rtl_set_contention( 8, 1 );
  rtl_start();
  
  rtl_rx_pkt_set_buffer(rx_buf, RF_MAX_PAYLOAD_SIZE);
 
  while(!rtl_ready())  nrk_wait_until_next_period(); 
  nrk_led_clr(0);
  
  while(1) {

          if( rtl_rx_pkt_check()!=0 )
               {
                   nrk_led_set(BLUE_LED);
                   local_rx_buf=rtl_rx_pkt_get(&length, &rssi, &slot);
                   printf( "Got Packet on slot %d %d: ",slot,length );
                   for(i=PKT_DATA_START; i<length; i++ )
                   {
                        printf( "%c",local_rx_buf[i] );
                   }
                   nrk_kprintf( PSTR("\r\n") );
                   rtl_rx_pkt_release();
                   nrk_led_clr(BLUE_LED);
               }

          if( rtl_tx_pkt_check(MY_TX_SLOT)!=0 )
               {
                  printf( "Pending on slot %d\r\n",MY_TX_SLOT );
               }
          else {
                nrk_led_set(GREEN_LED);
                cnt++;
                sprintf( &tx_buf[PKT_DATA_START], "Hello World %d", cnt );
                length=strlen(&tx_buf[PKT_DATA_START])+PKT_DATA_START;
                rtl_tx_pkt( tx_buf, length, MY_TX_SLOT );
                printf( "Sending Packet on slot %d\r\n",MY_TX_SLOT );
                nrk_led_clr(GREEN_LED);
               }

          rtl_wait_until_rx_or_tx();


        }


}
示例#4
0
文件: main.c 项目: ESE519/ISA100.11a
void Task1()
{
  uint8_t j, i;
  uint8_t *local_rx_buf;
  uint8_t cnt;
  int8_t rssi;
  uint8_t length,slot;
  uint16_t counter;
  volatile nrk_time_t t;
  printf( "Task1 PID=%d\r\n",nrk_get_pid());
  counter=0;
  cnt=0;

#ifdef COORDINATOR
  nrk_kprintf( PSTR( "Coordinator\r\n")); 
  rtl_init (RTL_COORDINATOR);
  nrk_led_set(RED_LED);  
#else
  nrk_kprintf( PSTR( "Mobile\r\n")); 
  rtl_init (RTL_MOBILE);
#endif

  printf( "Node %d ",NODE_ID );
  printf( "TX %d ",MY_TX_SLOT);
  printf( "RX %d\r\n",MY_RX_SLOT);

  rtl_set_schedule( RTL_TX, MY_TX_SLOT, 1 ); 
  rtl_set_schedule( RTL_RX, MY_RX_SLOT, 1 ); 
  
  rtl_start();
  
  rtl_rx_pkt_set_buffer(rx_buf, RF_MAX_PAYLOAD_SIZE);
  nrk_kprintf( PSTR("start done\r\n") );
  while(!rtl_ready())  nrk_wait_until_next_period(); 
  while(1) {
	

#if NODE_ID==1 
          
		if( rtl_tx_pkt_check(MY_TX_SLOT)!=0 )
	       		{
		  		printf( "Pending on slot %d\r\n",MY_TX_SLOT );
	       		}
	  	else 	{
	       			nrk_led_set(2);
                		cnt++;
                		sprintf( &tx_buf[PKT_DATA_START], "Hello World %d", cnt );
                		length=strlen(&tx_buf[PKT_DATA_START])+PKT_DATA_START+1;
                		rtl_tx_pkt( tx_buf, length, MY_TX_SLOT );
                		printf( "Sending Packet on slot %d\r\n",MY_TX_SLOT );
                		nrk_led_clr(2);

			}
	
#else 
	  if( rtl_rx_pkt_check()!=0 )
               {
                   nrk_led_set(1);
		   local_rx_buf=rtl_rx_pkt_get(&length, &rssi, &slot);
                   printf( "Got Packet on slot %d %d: ",slot,length );
                   for(i=PKT_DATA_START; i<length; i++ )
                   {
			// copy the rx buffer to the tx buffer
			// tx_buf[i]=local_rx_buf[i];
                        printf( "%c",local_rx_buf[i] );
                   }
                   nrk_kprintf( PSTR("\r\n") );
               
		if( rtl_tx_pkt_check(MY_TX_SLOT)!=0 )
	       		{
		  	printf( "Pending on slot %d\r\n",MY_TX_SLOT );
	       		}
	  	else 	{
			nrk_led_set(2);
			sprintf( &tx_buf[PKT_DATA_START], "%s %d",&local_rx_buf[PKT_DATA_START], NODE_ID );
                	length=strlen(&tx_buf[PKT_DATA_START])+PKT_DATA_START+1;
			rtl_tx_pkt( tx_buf, length, MY_TX_SLOT );
			printf( "Sending [%d] %s\r\n",length, &tx_buf[PKT_DATA_START] );
			//printf( "Sending Packet on slot %d\r\n",MY_TX_SLOT );
			nrk_led_clr(2);
	       		}
                   rtl_rx_pkt_release();
                   nrk_led_clr(1);
		}
#endif 
	  	
	 
	  rtl_wait_until_rx_or_tx();

	  
  	}
}