コード例 #1
0
ファイル: main_srp.c プロジェクト: haijunq/nanork-extension
void Task1() {
	uint16_t cnt;
	int8_t v;

	cnt = 0;
	while (1) {
		nrk_led_toggle(ORANGE_LED);
//		printf("Task1 cnt=%d\r\n", cnt);
//		nrk_kprintf(PSTR("Task1 accessing semaphore\r\n"));
//		printf("T1_next_period = %u \n", nrk_cur_task_TCB->next_period);
		v = nrk_sem_pend(sem1);
		if (v == NRK_ERROR)
			nrk_kprintf(PSTR("T1 error pend\r\n"));
//		nrk_kprintf(PSTR("Task1 holding semaphore\r\n"));
//		printf("In T1 sys_ceiling = %u \n", system_ceiling);
		printf("In T1 Q --- ");
		nrk_print_readyQ();
		printf("\n");
		// to something within the critical section
		nrk_wait_until_next_period();
		v = nrk_sem_post(sem1);
		if (v == NRK_ERROR)
			nrk_kprintf(PSTR("T1 error post\r\n"));
//		nrk_kprintf(PSTR("Task1 released semaphore\r\n"));
		nrk_wait_until_next_period();

		if (cnt == 3)
			break;
		cnt++;
	}
	nrk_stats_display_all();
}
コード例 #2
0
ファイル: main.c プロジェクト: ESE519/ISA100.11a
void Task1()
{
uint16_t cnt;
int8_t v;

printf( "My node's address is %d\r\n",NODE_ADDR );

  printf( "Task1 PID=%d\r\n",nrk_get_pid());
  cnt=0;
  while(1) {
	nrk_led_toggle(ORANGE_LED);
	printf( "Task1 cnt=%d\r\n",cnt );
	nrk_kprintf( PSTR("Task1 accessing semaphore\r\n"));
	v = nrk_sem_pend(my_semaphore);
	if(v==NRK_ERROR) nrk_kprintf( PSTR("T1 error pend\r\n"));
	nrk_kprintf( PSTR("Task1 holding semaphore\r\n"));
	// wait some time inside semaphore to show the effect
	nrk_wait_until_next_period();
	v = nrk_sem_post(my_semaphore);
	if(v==NRK_ERROR) nrk_kprintf( PSTR("T1 error post\r\n"));
	nrk_kprintf( PSTR("Task1 released semaphore\r\n"));
	nrk_wait_until_next_period();
	cnt++;
	}
}
コード例 #3
0
ファイル: main.c プロジェクト: mlab-upenn/mrk
void tx_task()
{
int8_t v,i;
uint8_t len,cnt;

  
printf( "Gateway Tx Task PID=%u\r\n",nrk_get_pid());


cnt=0;

  while(1) {
	// This is simply a place holder in case you want to add Host -> Client Communication
	v = slip_rx ( slip_rx_buf, TDMA_MAX_PKT_SIZE);
	if (v > 0) {
		   nrk_kprintf (PSTR ("Sending data: "));
		   for (i = 0; i < v; i++)
		   	printf ("%d ", slip_rx_buf[i]);
		    printf ("\r\n");
	 	   v=tdma_send(&tx_tdma_fd, &slip_rx_buf, v, TDMA_BLOCKING );	
	}

	nrk_led_toggle(BLUE_LED);
	}
}
コード例 #4
0
ファイル: main.c プロジェクト: jinxyz527/eece494
void rx_task ()
{
    uint8_t i,len;
    int8_t rssi, v;
    nrk_status_t ret;
    uint8_t *local_rx_buf;

//    printf( "rx_task: PID=%d\r\n",nrk_get_pid());

    bmac_rx_pkt_set_buffer(rx_buf,RF_MAX_PAYLOAD_SIZE);

    while(!bmac_started()) nrk_wait_until_next_period();

    while(1)
    {
        if( bmac_rx_pkt_ready()==0)
            bmac_wait_until_rx_pkt();  

        v = nrk_sem_pend(lock);
        if( startCnt == 0 )
            startCnt = 1;
        v = nrk_sem_post(lock);

        nrk_led_toggle(GREEN_LED); 
        local_rx_buf = bmac_rx_pkt_get(&len,&rssi);

        printf( "rx_task: rssi=%d data=", rssi);
        for( i=0; i<len; i++ ) {
            printf( "%c", local_rx_buf[i]);
        }
        nrk_kprintf( PSTR("\r\n") );

        bmac_rx_pkt_release();
    }
}
コード例 #5
0
ファイル: main.c プロジェクト: xiaokaisun90/Projects
void discover_task()
{
	uint8_t len;
	uint8_t connection_l;
	while (!bmac_started ())
    nrk_wait_until_next_period ();		

	if(log_g) printf("log:discover_task PID=%d\r\n",nrk_get_pid());


	while(1) {
			nrk_sem_pend(conn_sem);
			connection_l = connection_g;
			nrk_sem_post(conn_sem);
			

			if(connection_l == 0 && vertsk_active_g == 0 && version_g[MAC_ADDR] > 0) {
				nrk_led_toggle(BLUE_LED);	
				if(log_g) printf("log:Sending discover pkt\r\n");
				nrk_sem_pend(tx_sem);
				sprintf(tx_buf,"0:%d:S:%d",MAC_ADDR,version_g[MAC_ADDR]);
				bmac_tx_pkt(tx_buf, strlen(tx_buf));
				nrk_sem_post(tx_sem);
				memset(tx_buf,0,strlen(tx_buf));
			}
    	nrk_wait_until_next_period ();
	
	}

}
コード例 #6
0
ファイル: main.c プロジェクト: ESE519/ISA100.11a
//------------------------------------------------------------------------------
//      void TaskRcv (void)
//
//      DESCRIPTION:
//              Task that periodically checks to receive a packet
//------------------------------------------------------------------------------
void TaskRcv()
{
  uint8_t len;
  int8_t rssi;
  uint8_t *local_rx_buf;
  
	// widom init must be in a task
	wd_init (WD_CHANNEL);
      
  // This sets the next RX buffer.
  // This can be called at anytime before releasing the packet
  // if you wish to do a zero-copy buffer switch
  wd_rx_pkt_set_buffer (rx_buf, RF_MAX_PAYLOAD_SIZE);
    
	while(1) {
		nrk_led_toggle(GREEN_LED);
		
		if (wd_wait_until_rx_packet() == NRK_OK) {
      // Get the RX packet 
      local_rx_buf = wd_rx_pkt_get (&len, &rssi);
  		printf ("Rx Packet len=%u, prio=%u\r\n", len, local_rx_buf[1]);
  		//
  		// do something with packet here ...
  		//	
      //for (i = 0; i < len; i++)
      //  printf ("%c", rx_buf[i]);
      //printf ("]\r\n");
  
  		wd_rx_pkt_release();
  	}
 	
		nrk_wait_until_next_period();
	}
}
コード例 #7
0
ファイル: main.c プロジェクト: prabalsharma/NanoRK
// creates Task4 and uses semaphore1
void Task4()
{
  uint8_t counter;
  uint8_t waitCount=3;

  printf( "Task4 PID=%d\r\n",nrk_get_pid());
  counter=0;
   while(1) 
  {
        nrk_led_toggle(GREEN_LED);
        printf( "Task4 counter=%d\r\n",counter );
		if(0==waitCount)
		{
			nrk_kprintf( PSTR("Task4 accessing semaphore1\r\n"));
			nrk_sem_pend(semaphore1);
			nrk_kprintf( PSTR("Task4 holding semaphore1\r\n"));
		}
	   	 waitCount++;
	   if(3==waitCount)
	   {
			nrk_sem_post(semaphore1);
			nrk_kprintf( PSTR("Task4 released semaphore1\r\n"));
			waitCount=0;
		}
        nrk_wait_until_next_period();
        counter++;
    }

}
コード例 #8
0
ファイル: main.c プロジェクト: ESE519/ISA100.11a
void Task3 ()
{
  int8_t v;
  int8_t i;
  printf ("Task3 PID=%d\r\n", nrk_get_pid ());
  while (slip_started () != 1)
    nrk_wait_until_next_period ();

  while (1) {
    nrk_led_toggle (GREEN_LED);
    printf ("Task3\r\n");

    v = slip_rx (slip_rx_buf, MAX_SLIP_BUF);

    if (v > 0) {
      nrk_kprintf (PSTR ("Task3 got data: "));
      for (i = 0; i < v; i++)
        printf ("%c", slip_rx_buf[i]);
      printf ("\r\n");
    }
    else
      nrk_kprintf (PSTR ("Task3 data failed\r\n"));

    nrk_wait_until_next_period ();
  }
}
コード例 #9
0
ファイル: main.c プロジェクト: adamselevan/dicio
void Task3 ()
{
  int8_t v;
  int8_t i;
  printf ("Task3 PID=%d\r\n", nrk_get_pid ());
  slip_init (stdin, stdout, 0, 0);
  while (slip_started () != 1)
    nrk_wait_until_next_period ();

  while (1) {
    nrk_led_toggle (RED_LED);

    v = slip_rx (slip_rx_buf, MAX_SLIP_BUF);

    printf ("%d\r\n", slip_rx_buf[0]);
  /*  if (v > 0) {
      nrk_kprintf (PSTR ("Task3 got data "));
      printf( "%d bytes: ",v );
      for (i = 0; i < v; i++)
        printf ("%d ", slip_rx_buf[i]);
      printf ("\r\n");
    }
    else
      nrk_kprintf (PSTR ("Task3 data failed\r\n"));
*/
    //nrk_wait_until_next_period ();
  }
}
コード例 #10
0
ファイル: main_srp.c プロジェクト: haijunq/nanork-extension
void Task2() {
	uint8_t cnt;
	int8_t v;

	cnt = 0;
	while (1) {
		nrk_led_toggle(BLUE_LED);
//		printf("Task2 cnt=%d\r\n", cnt);
//		nrk_kprintf(PSTR("Task2 accessing semaphore\r\n"));
//		printf("T2_next_period = %u \n", nrk_cur_task_TCB->next_period);

		v = nrk_sem_pend(sem1);

		if (v == NRK_ERROR)
			nrk_kprintf(PSTR("T2 error pend\r\n"));
//		nrk_kprintf(PSTR("Task2 holding semaphore\r\n"));
//		printf("In T2 sys_ceiling = %u \n", system_ceiling);
		printf("In T2 Q --- ");
		nrk_print_readyQ();
		printf("\n");
		// to something within the critical section
		nrk_wait_until_next_period();
		v = nrk_sem_post(sem1);
		if (v == NRK_ERROR)
			nrk_kprintf(PSTR("T2 error post\r\n"));
//		nrk_kprintf(PSTR("Task2 released semaphore\r\n"));
		nrk_wait_until_next_period();

		cnt++;
	}

}
コード例 #11
0
ファイル: main.c プロジェクト: ESE519/ISA100.11a
//------------------------------------------------------------------------------
//      void TaskSnd (void)
//
//      DESCRIPTION:
//              Task that periodically sends a packet
//------------------------------------------------------------------------------
void TaskSnd()
{
  uint8_t ret;
  
  // Wait until the rx_task starts up the protocol
  while (!wd_started ())
    nrk_wait_until_next_period ();
    
  
	while(1) {
		nrk_led_toggle(BLUE_LED);

		// put just two bytes of payload in the packet...
		tx_buf[0]=0xCB;
		tx_buf[1]=MSG_PRIO; // put MSG_PRIO in the payload also

    // For blocking transmits, just use the following function call.
    // wd_tx_packet(tx_buf, 2, MSG_PRIO); 

    // This function transmits packets in a non-blocking manner  
    ret = wd_tx_packet_enqueue (tx_buf, 2, MSG_PRIO); 
    nrk_kprintf (PSTR ("Tx packet enqueued\r\n"));
    // This function waits on the tx_done_signal   
    //ret = wd_wait_until_tx_packet();

    // Just check to be sure signal is okay
    if(ret != NRK_OK ) 
    	nrk_kprintf (PSTR ("TX done error!\r\n"));
	
		nrk_wait_until_next_period();
	}	
}
コード例 #12
0
ファイル: main.c プロジェクト: ESE519/ISA100.11a
void my_timer_callback()
{
	nrk_led_toggle(ORANGE_LED);
	nrk_gpio_toggle(NRK_DEBUG_0);
	// Normally you should not call long functions like printf
	// inside a interrupt callback
	nrk_kprintf( PSTR("*** Timer interrupt!\r\n"));
}
コード例 #13
0
ファイル: receiverNode.cpp プロジェクト: ESE519/EVM-2013
void rx_task ()
{ 
    uint8_t rssi,len,*local_rx_buf,mole, from, received_round;;
    int i,r; 
    bmac_set_cca_thresh(DEFAULT_BMAC_CCA);
    bmac_rx_pkt_set_buffer (rx_buf,102);
    //cleaning up the target sector in the flash
    iap.erase(TARGET_SECTOR,TARGET_SECTOR);
    while(!bmac_started());
    printf("Receiver node Bmac initialised\n");
  
        while(1) {
            nrk_wait_until_next_period();
            
					  if( !bmac_rx_pkt_ready())
                continue;
            printf("received packet\n\r");
            nrk_led_toggle(ORANGE_LED);
            local_rx_buf = (uint8_t *)bmac_rx_pkt_get (&len, &rssi);
            
            
            for(i=0;i<2;i++)
							printf("%d", local_rx_buf[i]);
                             
            printf("\r\n");
						for(i = 2; i < len; i++)
							printf("0x%X ", local_rx_buf[i]);
                            
                      
           // getting function code
            for(i = 0; i < 200; i++){
							code[i] = local_rx_buf[i+2];
            }
            //getting function size
            functionSize=local_rx_buf[1];
            iap.prepare(TARGET_SECTOR, TARGET_SECTOR);
                       
            //alloting space and writing the cvode in the flash
             if(functionSize % 256 ==0)
               r  = iap.write( code, sector_start_adress[TARGET_SECTOR], 256);
             else
						   r  = iap.write( code, sector_start_adress[TARGET_SECTOR], 256);
           
						 printf("size: %d\n", functionSize + functionSize % 256);
						 printf( "copied: SRAM(0x%08X)->Flash(0x%08X) for %d bytes. (result=0x%08X)\r\n", code, sector_start_adress[ TARGET_SECTOR ], 1024, r );
					 startAddress+=functionSize;//starting Address for next functtion to be added
           functionRecieved = 0;
           bmac_rx_pkt_release ();   
						
					 copied_function=(function) (0xE000 | 1);    
				 //calling the copi8ed function
						functionRecieved=1;
          
        } 
				 // pointing the function pointer to the copied code in the flash
         
}
コード例 #14
0
ファイル: main.c プロジェクト: adamselevan/dicio
//------------------------------------------------------------------------------
//      void main (void)
//
//      DESCRIPTION:
//              Startup routine and main loop
//------------------------------------------------------------------------------
int main (void)
{
    uint8_t i,length;
    uint32_t cnt;

    nrk_setup_ports(); 
    nrk_setup_uart (UART_BAUDRATE_115K2);
 
    printf( "Basic TX...\r\n" ); 
    nrk_led_set(0); 
    nrk_led_set(1); 
    nrk_led_clr(2); 
    nrk_led_clr(3); 
/*
	    while(1) {
		   
				for(i=0; i<40; i++ )
					halWait(10000);
		    nrk_led_toggle(1);

	    }

*/

    rfRxInfo.pPayload = rx_buf;
    rfRxInfo.max_length = RF_MAX_PAYLOAD_SIZE;
		nrk_int_enable();
    rf_init (&rfRxInfo, 26, 0x2420, 0x1214);
    cnt=0;
    while(1){
	  		DPDS1 |= 0x3;
			DDRG |= 0x1;
			PORTG |= 0x1;
			DDRE|=0xE0;
			PORTE|=0xE0;
    		rfTxInfo.pPayload=tx_buf;
    		sprintf( tx_buf, "%lu", cnt); 
    		rfTxInfo.length= strlen(tx_buf) + 1;
				rfTxInfo.destAddr = 0x1215;
				rfTxInfo.cca = 0;
				rfTxInfo.ackRequest = 0;
				
				printf( "Sending\r\n" );
	//			nrk_gpio_set(NRK_DEBUG_0);
				if(rf_tx_packet(&rfTxInfo) != 1)
					printf("--- RF_TX ERROR ---\r\n");
	//			nrk_gpio_clr(NRK_DEBUG_0);
				cnt++;
		
				for(i=0; i<10; i++ )
					halWait(10000);
				nrk_led_toggle(RED_LED);
		}

}
コード例 #15
0
ファイル: main.c プロジェクト: adamselevan/dicio
void Task1()
{
nrk_time_t t;
uint16_t cnt;
cnt=0;
nrk_kprintf( PSTR("Nano-RK Version ") );
printf( "%d\r\n",NRK_VERSION );

printf( "My node's address is %u\r\n",NODE_ADDR );
  
printf( "Task1 PID=%u\r\n",nrk_get_pid());

  while(1) {
	nrk_led_toggle(ORANGE_LED);
	//nrk_gpio_toggle(NRK_DEBUG_0);
	printf( "Task1 cnt=%u\r\n",cnt );
	nrk_wait_until_next_period();
        // Uncomment this line to cause a stack overflow
	// if(cnt>20) kill_stack(10);

	// At time 50, the OS will halt and print statistics
	// This requires the NRK_STATS_TRACKER #define in nrk_cfg.h
	 if(cnt==50)  {
		nrk_stats_display_all();
		// This will induce a kernel panic on purpose	
		nrk_halt();
		}

        // This is an example of how to access the task execution data
	if( cnt==10 ) {
	nrk_stats_get(nrk_get_pid(), &my_stats);
	nrk_kprintf( PSTR( "\r\n   Total CPU: "));
	t=_nrk_ticks_to_time(my_stats.total_ticks);
	printf( "%lu secs %lu ms", t.secs, t.nano_secs/NANOS_PER_MS );
	nrk_kprintf( PSTR( "\r\n   Time [Min,Last,Max]: "));
	t=_nrk_ticks_to_time(my_stats.min_exec_ticks);
	printf( "%lu secs %lu ms, ", t.secs, t.nano_secs/NANOS_PER_MS );
	t=_nrk_ticks_to_time(my_stats.last_exec_ticks);
	printf( "%lu secs %lu ms, ", t.secs, t.nano_secs/NANOS_PER_MS );
	t=_nrk_ticks_to_time(my_stats.max_exec_ticks);
	printf( "%lu secs %lu ms", t.secs, t.nano_secs/NANOS_PER_MS );
	nrk_kprintf( PSTR( "\r\n   Swap-ins: "));
	printf( "%lu",my_stats.swapped_in );
	nrk_kprintf( PSTR( "\r\n   Preemptions: "));
	printf( "%lu",my_stats.preempted);
	nrk_kprintf( PSTR( "\r\n   Kernel Violations: "));
	printf( "%u",my_stats.violations);
	nrk_kprintf( PSTR( "\r\n   Overflow Error Status: "));
	printf( "%u",my_stats.overflow);
	nrk_kprintf( PSTR("\r\n") );
	}

	cnt++;
	}
}
コード例 #16
0
ファイル: main.c プロジェクト: adamselevan/dicio
void EncryptionTask()
{

uint8_t i, data[32], len;

  while(1) {
	
   nrk_led_toggle(ORANGE_LED);
   
   /* 16-byte AES key */
   uint8_t key[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};  
   /* 32-byte string is used as example plaintext data */
   sprintf(data, "This string is used as an input");
   len = 32;

   /* Set AES encryption key
   ** (must be 16 bytes) */
   aes_setkey(key);
   
   printf("key hex (16B):   ");
   for(i=0; i<16; i++)
      printf("%x ", key[i]);
   printf("\r\n");   
   printf("plaintext (%dB): \"%s\"\r\n", len, data);
   printf("plaintext hex:   ");
   for(i=0; i<len; i++)
      printf("%x ", data[i]);
   printf("\r\n");
  
   /* Encrypt data (len must be
   ** a multiple of 16 bytes) */
   aes_encrypt(data, len);
   
   printf("\t\t\t\t...encrypt...\r\n");
   printf("cyphertext hex:  ");
   for(i=0; i<len; i++)
      printf("%x ", data[i]);
   printf("\r\n");
   
   /* Decrypt data (len must be
   ** a multiple of 16 bytes) */
   aes_decrypt(data, len);
   
   printf("\t\t\t\t...decrypt...\r\n");
   printf("plaintext hex:   ");
   for(i=0; i<len; i++)
      printf("%x ", data[i]);
   printf("\r\n\r\n\r\n");


   nrk_wait_until_next_period();

	}
}
コード例 #17
0
ファイル: main.c プロジェクト: ESE519/ISA100.11a
void tx_task()
{
  uint8_t cnt;
  printf( "tx_task PID=%d\r\n",nrk_get_pid());
  cnt=0;
  while(1) {
	nrk_led_toggle(BLUE_LED);
//	printf( "Task2 cnt=%d\r\n",cnt );
	nrk_wait_until_next_period();
	cnt++;
	}
}
コード例 #18
0
ファイル: main.c プロジェクト: vanjoe/eece494
void Task3()
{
uint16_t cnt;
//printf( "Task3 PID=%u\r\n",nrk_get_pid());
  cnt=0;
  while(1) {
    nrk_led_toggle(GREEN_LED);
    //printf( "Task3 cnt=%u\r\n",cnt );
    nrk_wait_until_next_period();
    cnt++;
  }
}
コード例 #19
0
ファイル: main.c プロジェクト: prashar/nanork
void Task3() {
	uint16_t cnt;
	printf("Task3 PID=%u\r\n", nrk_get_pid());
	cnt = 0;
	while (1) {
		nrk_led_toggle(BLUE_LED);
		nrk_gpio_toggle(NRK_DEBUG_2);
		printf("Task3 cnt=%u\r\n", cnt);
		nrk_wait_until_next_period();
		cnt++;
	}
}
コード例 #20
0
ファイル: main.c プロジェクト: bwasserm/glossbee
void Task4()
{
uint16_t cnt;

  printf( "Task4 PID=%u\r\n",nrk_get_pid());
  cnt=0;
  while(1) {
	nrk_led_toggle(RED_LED);
	printf( "Task4 cnt=%u\r\n",cnt );
	nrk_wait_until_next_period();
	cnt++;
	}
}
コード例 #21
0
ファイル: main_srp.c プロジェクト: haijunq/nanork-extension
void Task4() {
	uint8_t cnt;
	cnt = 0;
	while (1) {
		nrk_led_toggle(GREEN_LED);
		printf("In T4 sys_ceiling = %u \n", system_ceiling);
		printf("In T4 Q --- ");
		nrk_print_readyQ();
		printf("\n");
		nrk_wait_until_next_period();
		cnt++;
	}
}
コード例 #22
0
ファイル: main.c プロジェクト: prashar/nanork
void Task2() {
	int16_t cnt;
	printf("Task2 PID=%u\r\n", nrk_get_pid());
	cnt = 0;
	while (1) {
		nrk_led_toggle(GREEN_LED);
		nrk_gpio_toggle(NRK_DEBUG_1);
		printf("Running: Task2 , signed cnt=%d\r\n", cnt);
		nrk_wait_until_next_period();
		//nrk_stats_display_pid(nrk_get_pid());
		cnt--;
	}
}
コード例 #23
0
ファイル: main.c プロジェクト: vanjoe/eece494
void Task2()
{
  int16_t cnt;
  //printf( "Task2 PID=%u\r\n",nrk_get_pid());
  cnt=0;
  while(1) {
    nrk_led_toggle(BLUE_LED);
    //printf( "Task2 signed cnt=%d\r\n",cnt );
    //nrk_stats_display_pid(nrk_get_pid());
    nrk_wait_until_next_period();
    cnt--;
  }
}
コード例 #24
0
ファイル: main.c プロジェクト: adamselevan/dicio
void Task3 ()
{
  int8_t v;
 
  uint8_t pckts=0;
  printf ("radio stuff Task3 PID=%d\r\n", nrk_get_pid ());


  while (slip_started () != 1)
    nrk_wait_until_next_period ();

  while (1) {

    v = slip_rx (slip_rx_buf, MAX_SLIP_BUF);
		
		printf("nanork@ bytesread %d\n",v);
		//for (i=0;i<v;i++) printf("<%d>",slip_rx_buf[i]);
		//printf("\n");

    if (v > HDR_SIZE) {

      ack_buf[0] = 'Z';
			ack_buf[1] = slip_rx_buf[1];
			ack_buf[2] = slip_rx_buf[2];
    	while(uart_tx_busy==1) nrk_wait_until_next_period();
      uart_tx_busy=1;
      slip_tx (ack_buf, 3);
      uart_tx_busy=0;
      
   

      rfTxInfo.pPayload = slip_rx_buf;
      rfTxInfo.length= v;
      rfTxInfo.destAddr = 0xFFFF;
      rfTxInfo.cca = 0;
      rfTxInfo.ackRequest = 0;

    	nrk_led_toggle (RED_LED);
      pckts++;
      PORTG=0x1;
      
      if(rf_tx_packet(&rfTxInfo) != 1) {
          printf("--- RF_TX ERROR ---\r\n");
          nrk_spin_wait_us(10000);
        } 

     
  	}

  }
}
コード例 #25
0
ファイル: main.c プロジェクト: prabalsharma/NanoRK
// creates Task2
void Task2()
{
  int16_t counter;
  printf( "Task2 PID=%u\r\n",nrk_get_pid());
  counter=0;
  while(1) 
  {
    nrk_led_toggle(BLUE_LED);
    printf( "Task2 signed counter=%d\r\n",counter );
    nrk_stats_display_pid(nrk_get_pid());
    nrk_wait_until_next_period();
    counter--;
  }
}
コード例 #26
0
ファイル: main.c プロジェクト: adamselevan/dicio
void Task1()
{
uint16_t cnt;
int8_t fd;
nrk_kprintf( PSTR("Nano-RK Version ") );
printf( "%d\r\n",NRK_VERSION );

//while(1) nrk_wait_until_next_period();


nrk_gpio_direction(NRK_MMC_9,NRK_PIN_INPUT);
nrk_gpio_direction(NRK_MMC_10,NRK_PIN_INPUT);
nrk_gpio_direction(NRK_MMC_11,NRK_PIN_INPUT);

bpm_index=0;

nrk_gpio_pullups(1);

nrk_ext_int_configure(NRK_PC_INT_5, NULL, &button_press_int);
nrk_ext_int_configure(NRK_PC_INT_6, NULL, &button_press_int);
nrk_ext_int_configure(NRK_PC_INT_7, NULL, &button_press_int);
nrk_ext_int_enable(NRK_PC_INT_5);
nrk_ext_int_enable(NRK_PC_INT_6);
nrk_ext_int_enable(NRK_PC_INT_7);

nrk_ext_int_configure(NRK_EXT_INT_0, NRK_RISING_EDGE, &heart_rate_int);
nrk_ext_int_enable(NRK_EXT_INT_0);

cnt=0;
printf( "My node's address is %u\r\n",NODE_ADDR );
  
fd=nrk_open(FIREFLY_SENSOR_BASIC,READ);
        if(fd==NRK_ERROR) nrk_kprintf(PSTR("Failed to open sensor driver\r\n"));

printf( "Task1 PID=%u\r\n",nrk_get_pid());

  while(1) {
	//printf( "Task1 cnt=%u\r\n",cnt );
	nrk_wait_until_next_period();
	printf( "9=%d ",nrk_gpio_get(NRK_MMC_9));
	printf( "10=%d ",nrk_gpio_get(NRK_MMC_10));
	printf( "11=%d ",nrk_gpio_get(NRK_MMC_11));
	printf( "%d %d\r\n",cnt,hrm_get_value() );
	nrk_led_toggle(GREEN_LED);
        // Uncomment this line to cause a stack overflow
	cnt++;
	}
}
コード例 #27
0
ファイル: main.c プロジェクト: adamselevan/dicio
int main() {
	uint8_t led = 0;
	nrk_setup_ports();

	nrk_led_clr(ORANGE_LED);
	nrk_led_clr(BLUE_LED);
	nrk_led_clr(GREEN_LED);
	nrk_led_clr(RED_LED);

	while (1) {
		nrk_led_toggle(ORANGE_LED);
		nrk_spin_wait_us(PERIOD);
	}

	return 0;
}
コード例 #28
0
ファイル: main.c プロジェクト: ESE519/ISA100.11a
void Task1()
{
uint16_t cnt;
int8_t i,fd,val;
uint16_t buf;

  printf( "My node's address is %d\r\n",NODE_ADDR );

  printf( "Task1 PID=%d\r\n",nrk_get_pid());

  
  cnt=0;
  while(1) {
  	// Open ADC device as read 
  	fd=nrk_open(FIREFLY_SENSOR_BASIC,READ);
  	if(fd==NRK_ERROR) nrk_kprintf(PSTR("Failed to open sensor driver\r\n"));
	nrk_led_toggle(BLUE_LED);

	// Example of setting a sensor 
	val=nrk_set_status(fd,SENSOR_SELECT,BAT);
	// Read battery first while other sensors warm up
	val=nrk_read(fd,&buf,2);
	printf( "Task bat=%d",buf);
		val=nrk_set_status(fd,SENSOR_SELECT,LIGHT);
	val=nrk_read(fd,&buf,2);
	printf( " light=%d",buf);
	val=nrk_set_status(fd,SENSOR_SELECT,TEMP);
	val=nrk_read(fd,&buf,2);
	printf( " temp=%d",buf);
	val=nrk_set_status(fd,SENSOR_SELECT,ACC_X);
	val=nrk_read(fd,&buf,2);
	printf( " acc_x=%d",buf);
	val=nrk_set_status(fd,SENSOR_SELECT,ACC_Y);
	val=nrk_read(fd,&buf,2);
	printf( " acc_y=%d",buf);
	val=nrk_set_status(fd,SENSOR_SELECT,ACC_Z);
	val=nrk_read(fd,&buf,2);
	printf( " acc_z=%d",buf);
  	val=nrk_set_status(fd,SENSOR_SELECT,AUDIO_P2P);
	nrk_spin_wait_us(60000);
	val=nrk_read(fd,&buf,2);
	printf( " audio=%d\r\n",buf);
	nrk_close(fd);
	nrk_wait_until_next_period();
	cnt++;
	}
}
コード例 #29
0
ファイル: main_srp.c プロジェクト: haijunq/nanork-extension
void Task3() {
	uint8_t cnt;
	cnt = 0;
	while (1) {
		nrk_led_toggle(GREEN_LED);
//		nrk_sem_pend(sem1);
//		printf("In T3 sys_ceiling = %u \n", system_ceiling);
		printf("In T3 Q --- ");
		nrk_print_readyQ();
		printf("\n");
		nrk_wait_until_next_period();
//		nrk_sem_post(sem1);
		nrk_wait_until_next_period();
		cnt++;
	}

}
コード例 #30
0
ファイル: main.c プロジェクト: adamselevan/dicio
void Task1()
{
nrk_time_t t;
uint16_t cnt;
cnt=0;
nrk_kprintf( PSTR("Nano-RK Version ") );
printf( "%d\r\n",NRK_VERSION );


setup_uart1(UART_BAUDRATE_19K2);
DDRE=0x2;
printf( "My node's address is %u\r\n",NODE_ADDR );
  
printf( "Task1 PID=%u\r\n",nrk_get_pid());
t.secs=5;
t.nano_secs=0;

// setup a software watch dog timer
nrk_sw_wdt_init(0, &t, NULL);
nrk_sw_wdt_start(0);


	putc1('~'); putc1('A'); putc1(' '); putc1('8');
	nrk_wait_until_next_period();
	putc1('~'); putc1('A'); putc1(' '); putc1('8');
  while(1) {
	// Update watchdog timer
	nrk_sw_wdt_update(0);
	nrk_led_toggle(ORANGE_LED);
	nrk_gpio_toggle(NRK_DEBUG_0);
	printf( "Task1 cnt=%u\r\n",cnt );
	nrk_wait_until_next_period();
        // Uncomment this line to cause a stack overflow
	// if(cnt>20) kill_stack(10);

	// At time 50, the OS will halt and print statistics
	// This requires the NRK_STATS_TRACKER #define in nrk_cfg.h
	// if(cnt==50)  {
	//	nrk_stats_display_all();
	//	nrk_halt();
	//	}


	cnt++;
	}
}