Пример #1
0
void rx_task ()
{
    nrk_time_t t;
    uint16_t cnt;
    int8_t v;
    uint8_t len, i;
    uint8_t chan;


    cnt = 0;
    nrk_kprintf (PSTR ("Nano-RK Version "));
    printf ("%d\r\n", NRK_VERSION);


    nrk_kprintf( PSTR( "RX Task PID=" ));
    printf ("%u\r\n", nrk_get_pid ());
    t.secs = 5;
    t.nano_secs = 0;

    while (cal_done==0)
        nrk_wait_until_next_period ();


    chan = RADIO_CHANNEL;
    if (SET_MAC == 0x00) {

        v = read_eeprom_mac_address (&mac_address);
        if (v == NRK_OK) {
            v = read_eeprom_channel (&chan);
            v = read_eeprom_aes_key(aes_key);
        }
        else {
            while (1) {
                nrk_kprintf (PSTR
                             ("* ERROR reading MAC address, run eeprom-set utility\r\n"));
                nrk_wait_until_next_period ();
            }
        }
    }
    else
        mac_address = SET_MAC;

    printf ("MAC ADDR: %x\r\n", mac_address & 0xffff);
    printf ("chan = %d\r\n", chan);
    len=0;
    for(i=0; i<16; i++ ) {
        len+=aes_key[i];
    }
    printf ("AES checksum = %d\r\n", len);



    tdma_init (TDMA_CLIENT, chan, (mac_address));

    tdma_aes_setkey(aes_key);
    tdma_aes_enable();

    while (!tdma_started ())
        nrk_wait_until_next_period ();

    v = tdma_tx_slot_add (mac_address&0xff);

    if (v != NRK_OK)
        nrk_kprintf (PSTR ("Could not add slot!\r\n"));

    // setup a software watch dog timer
    t.secs=30;
    t.nano_secs=0;
    nrk_sw_wdt_init(0, &t, NULL);
    nrk_sw_wdt_start(0);
    while (1) {
        // Update watchdog timer
        nrk_sw_wdt_update(0);
        v = tdma_recv (&rx_tdma_fd, &rx_buf, &len, TDMA_BLOCKING);
        if (v == NRK_OK) {
            // printf ("src: %u\r\nrssi: %d\r\n", rx_tdma_fd.src, rx_tdma_fd.rssi);
            // printf ("slot: %u\r\n", rx_tdma_fd.slot);
            // printf ("cycle len: %u\r\n", rx_tdma_fd.cycle_size);
            v=buf_to_pkt(&rx_buf, &rx_pkt);
            if(v==NRK_OK)
            {
                if(((rx_pkt.dst_mac&0xff) == (mac_address&0xff)) || ((rx_pkt.dst_mac&0xff)==0xff))
                {
                    if(rx_pkt.type==PING)
                    {
                        send_ack=1;
                        nrk_led_clr(0);
                        nrk_led_clr(1);
                        if(rx_pkt.payload[0]==PING_1)
                        {
                            nrk_led_set(0);
                            nrk_wait_until_next_period();
                            nrk_wait_until_next_period();
                            nrk_wait_until_next_period();
                            nrk_led_clr(0);
                        }
                        if(rx_pkt.payload[0]==PING_2)
                        {
                            nrk_led_set(1);
                            nrk_wait_until_next_period();
                            nrk_wait_until_next_period();
                            nrk_wait_until_next_period();
                            nrk_led_clr(1);
                        }
                        if(rx_pkt.payload[0]==PING_PERSIST)
                        {
                            nrk_led_set(0);
                        }


                    }

                    if(rx_pkt.type==APP)
                    {
                        // payload 1: Key
                        if(rx_pkt.payload[1]==2)
                        {
                            send_ack=1;
                            // payload 2: Outlet Number
                            // payload 3: On/Off
                            if(rx_pkt.payload[3]==0) {
                                power_socket_disable(rx_pkt.payload[2]);
                                plug_led_green_clr();
                                //printf( "Disable %d\r\n", rx_pkt.payload[2] );
                            }
                            if(rx_pkt.payload[3]==1) {
                                power_socket_enable(rx_pkt.payload[2]);
                                //printf( "Enable %d\r\n", rx_pkt.payload[2] );
                                plug_led_green_set();
                            }
                        }

                        // payload 1: Key
                        if(rx_pkt.payload[1]==3)
                        {
                            send_ack=1;
                            true_power_thresh=((uint32_t)rx_pkt.payload[3])<<16 | ((uint32_t)rx_pkt.payload[4])<<8 | (uint32_t)rx_pkt.payload[5];
                            set_power_thresh(true_power_thresh);
                        }




                    }

                }

            }
            /*      printf ("len: %u\r\npayload: ", len);
            for (i = 0; i < len; i++)
              printf ("%d ", rx_buf[i]);
            printf ("\r\n");

            if(rx_buf[0]==(mac_address&0xff))
            {
            if(rx_buf[2]==0) {
            	power_socket_disable(rx_buf[1]);
            	printf( "Disable %d\r\n", rx_buf[1] );
            }
            if(rx_buf[2]==1) {
            	power_socket_enable(rx_buf[1]);
            	printf( "Enable %d\r\n", rx_buf[1] );
            }
                 }
                 */

        }

        tdma_rx_pkt_release();
        //  nrk_wait_until_next_period();
    }

}
Пример #2
0
void rx_task ()
{
    nrk_time_t t;
    uint16_t cnt;
    int8_t v,fd;
    uint8_t len, i;
    uint8_t chan;


    cnt = 0;
    nrk_kprintf (PSTR ("Nano-RK Version "));
    printf ("%d\r\n", NRK_VERSION);


    printf ("RX Task PID=%u\r\n", nrk_get_pid ());
    t.secs = 5;
    t.nano_secs = 0;

    chan = CHAN;
    if (SET_MAC == 0x00) {

        v = read_eeprom_mac_address (&mac_address);
        if (v == NRK_OK) {
            v = read_eeprom_channel (&chan);
        }
        else {
            while (1) {
                nrk_kprintf (PSTR
                             ("* ERROR reading MAC address, run eeprom-set utility\r\n"));
                nrk_wait_until_next_period ();
            }
        }
    }
    else
        mac_address = SET_MAC;

    printf ("MAC ADDR: %x\r\n", mac_address & 0xffff);
    printf ("chan = %d\r\n", chan);



    tdma_init (TDMA_CLIENT, chan, mac_address);


    while (!tdma_started ())
        nrk_wait_until_next_period ();

    // Set TDMA slot to lower byte of MAC address
    v = tdma_tx_slot_add (mac_address & 0xff);

    if (v != NRK_OK)
        nrk_kprintf (PSTR ("Could not add slot!\r\n"));

    while (1) {
        // Update watchdog timer
        // nrk_sw_wdt_update(0);
        v = tdma_recv (&rx_tdma_fd, &rx_buf, &len, TDMA_BLOCKING);
        if (v == NRK_OK) {
            // printf ("src: %u\r\nrssi: %d\r\n", rx_tdma_fd.src, rx_tdma_fd.rssi);
            // printf ("slot: %u\r\n", rx_tdma_fd.slot);
            // printf ("cycle len: %u\r\n", rx_tdma_fd.cycle_size);
            v=buf_to_pkt(&rx_buf, &rx_pkt);
            tdma_rx_pkt_release();
            /*if((rx_pkt.dst_mac&0xff) == (mac_address&0xff))
            {
            printf ("len: %u\r\npayload: ", len);
            for (i = 0; i < len; i++)
              printf ("%d ", rx_buf[i]);
            printf ("\r\n");




            }*/


        }

        //  nrk_wait_until_next_period();
    }

}
Пример #3
0
int main (int argc, char *argv[])
{
  char buffer[128];
  int v, cnt, i, size, socket, state;
  uint32_t target_mac;
  FF_POWER_PKT my_pwr_pkt;
  FF_ENV_PKT my_env_pkt;
  PKT_T my_pkt;
  time_t ts;

  if (argc < 3) {
    printf ("Usage: server port [-v]\n");
    exit (1);
  }

  state = 0;
  verbose=0;
	if(argc==4)
	{
		if(strcmp(argv[3],"-v")==0) { printf( "Verbose on" ); verbose=1; }
	}


  v = slipstream_open (argv[1], atoi (argv[2]), BLOCKING);

  v = send_ping ();

  cnt = 0;
  while (1) {

    v = slipstream_receive (buffer);
    if (v > 0) {
      v = buf_to_pkt (buffer, &my_pkt);
      if (v == 1) {
//        printf ("TYPE: %d\n", my_pkt.type);
//        printf ("SRC MAC: %d\n", my_pkt.src_mac);
//        printf ("DST MAC: %d\n", my_pkt.dst_mac);
//        printf ("PAYLOAD LEN: %d\n", my_pkt.payload_len);
//        printf ("PAYLOAD: [");
//        for (i = 0; i < my_pkt.payload_len; i++)
//          printf ("%d ", my_pkt.payload[i]);
//        printf ("]\n");
      
 	if(my_pkt.type==APP)
 	{
	ts=time(NULL);
	switch(my_pkt.payload[1])
		{	
		case 1:
       			power_unpack (my_pkt.payload, &my_pwr_pkt);
						if(verbose)
			printf( "(time,mac,total_secs,freq,v-rms,i-rms,t-pwr,energy,i-rms2,t-pwr2,energy2): %u,%x,%d,",ts,my_pkt.src_mac,my_pwr_pkt.total_secs );
				else
			printf( "P,%u,%x,%d,",ts,my_pkt.src_mac,my_pwr_pkt.total_secs );

				printf( "%u,%u,%u,%u,%lu",my_pwr_pkt.freq, my_pwr_pkt.rms_voltage,my_pwr_pkt.rms_current, my_pwr_pkt.true_power,my_pwr_pkt.long_energy);
				printf( ",%u,%u,%lu",my_pwr_pkt.rms_current1, my_pwr_pkt.true_power1,my_pwr_pkt.long_energy1);
				printf( ",%u,%u",my_pwr_pkt.v_p2p_low, my_pwr_pkt.v_p2p_high);
				printf( ",%u,%u",my_pwr_pkt.c_p2p_low, my_pwr_pkt.c_p2p_high);
				printf( ",%u,%u",my_pwr_pkt.c_p2p_low2, my_pwr_pkt.c_p2p_high2);
				printf( ",%u,%u,%u",my_pwr_pkt.v_center, my_pwr_pkt.c_center, my_pwr_pkt.c2_center);
			//        printf ("%d,%d)",
			//                ((float) my_pwr_pkt.true_power) / POWER_SCALER,
			//                my_pwr_pkt.true_power);
        		printf( "\n" );
		break;
		case 3:
			env_unpack(my_pkt.payload, &my_env_pkt );
			if(verbose)
			printf( "(time,mac,bat,light,temp,acc_x,acc_y,acc_z,audio_p2p,digital-temp,humidity,pressure,motion,gpio_state): %u,%x,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u",ts,my_pkt.src_mac, my_env_pkt.bat, my_env_pkt.light, my_env_pkt.temp, my_env_pkt.acc_x, my_env_pkt.acc_y, my_env_pkt.acc_z, my_env_pkt.audio_p2p, my_env_pkt.digital_temp,my_env_pkt.humidity, my_env_pkt.pressure,my_env_pkt.motion,my_env_pkt.gpio_state );
			else
			printf( "S,%u,%x,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u",ts,my_pkt.src_mac, my_env_pkt.bat, my_env_pkt.light, my_env_pkt.temp, my_env_pkt.acc_x, my_env_pkt.acc_y, my_env_pkt.acc_z, my_env_pkt.audio_p2p,my_env_pkt.digital_temp,my_env_pkt.humidity, my_env_pkt.pressure, my_env_pkt.motion, my_env_pkt.gpio_state );

			printf( "\n" );	
		break;
		case 4:
			printf("(time,mac,state): %u,%u,%u\n",ts,my_pkt.src_mac,my_pkt.payload[2] );
		break;
		default:
		if(verbose)
		printf( "unkown pkt type (%d): ",my_pkt.payload[1] );
		else
		printf( "U,%d,",my_pkt.payload[1] );

		for(i=2; i<my_pkt.payload_len; i++ )
			printf( ",%d",my_pkt.payload[i] );
			printf( "\n" );	
		}
      	}
      }

    }
    else
      printf ("Error reading packet\n");
    // Count to 5 and then send an actuate packet 
  /*  cnt++;
    if (cnt > 5) {
	    target_mac=0x04;
	    socket=0;
	    state=1;
      printf ("Sending an actuate command [mac=0x%x socket %d, state %d]\n",target_mac,socket,state);
      // Enable outlet 0 on node 0x01
      outlet_actuate (target_mac, socket, state);
      cnt = 0;
    }*/
  }



}
Пример #4
0
void rx_task ()
{
    nrk_time_t t;
    uint16_t cnt;
    int8_t v;
    uint8_t len, i;
    uint8_t chan;


    cnt = 0;
    nrk_kprintf (PSTR ("Nano-RK Version "));
    printf ("%d\r\n", NRK_VERSION);


    printf ("RX Task PID=%u\r\n", nrk_get_pid ());
    t.secs = 5;
    t.nano_secs = 0;

    chan = CHAN;
    if (SET_MAC == 0x00) {

        v = read_eeprom_mac_address (&mac_address);
        if (v == NRK_OK) {
            v = read_eeprom_channel (&chan);
            v=read_eeprom_aes_key(aes_key);
        }
        else {
            while (1) {
                nrk_kprintf (PSTR
                             ("* ERROR reading MAC address, run eeprom-set utility\r\n"));
                nrk_wait_until_next_period ();
            }
        }
    }
    else
        mac_address = SET_MAC;

    printf ("MAC ADDR: %x\r\n", mac_address & 0xffff);
    printf ("chan = %d\r\n", chan);
    len=0;
    for(i=0; i<16; i++ ) {
        len+=aes_key[i];
    }
    printf ("AES checksum = %d\r\n", len);



    tdma_init (TDMA_CLIENT, chan, mac_address);

    tdma_aes_setkey(aes_key);
    tdma_aes_enable();


    while (!tdma_started ())
        nrk_wait_until_next_period ();

    // Mask off lower byte of MAC address for TDMA slot
    // FIXME: This should eventually be lower 2 bytes for larger TDMA cycles
    v = tdma_tx_slot_add (mac_address&0xFF);

    if (v != NRK_OK)
        nrk_kprintf (PSTR ("Could not add slot!\r\n"));

    while (1) {
        // Update watchdog timer
        // nrk_sw_wdt_update(0);
        v = tdma_recv (&rx_tdma_fd, &rx_buf, &len, TDMA_BLOCKING);
        if (v == NRK_OK) {
            // printf ("src: %u\r\nrssi: %d\r\n", rx_tdma_fd.src, rx_tdma_fd.rssi);
            // printf ("slot: %u\r\n", rx_tdma_fd.slot);
            // printf ("cycle len: %u\r\n", rx_tdma_fd.cycle_size);
            v=buf_to_pkt(&rx_buf, &rx_pkt);

            /*
                  printf ("raw len: %u\r\nraw buf: ", len);
                  for (i = 0; i < len; i++)
                    printf ("%d ", rx_buf[i]);
                  printf ("\r\n");
            */
            if(rx_pkt.type==PING && (((rx_pkt.dst_mac&0xff) == (mac_address&0xff)) || ((rx_pkt.dst_mac&0xff)==0xff)))
            {
                send_ack=1;
                nrk_led_clr(0);
                nrk_led_clr(1);
                if(rx_pkt.payload[0]==PING_1)
                {
                    nrk_led_set(0);
                    nrk_wait_until_next_period();
                    nrk_wait_until_next_period();
                    nrk_wait_until_next_period();
                    nrk_led_clr(0);
                }
                if(rx_pkt.payload[0]==PING_2)
                {
                    nrk_led_set(1);
                    nrk_wait_until_next_period();
                    nrk_wait_until_next_period();
                    nrk_wait_until_next_period();
                    nrk_led_clr(1);
                }
                if(rx_pkt.payload[0]==PING_PERSIST)
                {
                    nrk_led_set(0);
                }


            }
            if(rx_pkt.type==NW_CONFIG && (((rx_pkt.dst_mac&0xff) == (mac_address&0xff)) || (rx_pkt.dst_mac==0xff)))
            {

                /*      printf ("payload len: %u\r\npayload: ", rx_pkt.payload_len);
                      for (i = 0; i < rx_pkt.payload_len; i++)
                        printf ("%d ", rx_pkt.payload[i]);
                      printf ("\r\n");
                */
                // Sleep control packet
                if(rx_pkt.payload[1]==NW_CONFIG_SLEEP)
                {
                    // sleep mode off
                    if(rx_pkt.payload[2]==0 )
                    {
                        // Enter Deep Sleep
                        deep_sleep_button();

                    }
                    if(rx_pkt.payload[2]==2 )
                    {
                        // Enter snooze mode
                        tdma_disable();
                        nrk_wait_until_next_period();
                        tdma_snooze();
                        tdma_enable();

                    }


                }

            }

        }

        //  nrk_wait_until_next_period();
    }

}
Пример #5
0
int main (int argc, char *argv[])
{
  char buffer[128];
  int v, cnt, i, size, socket, state;
  uint32_t target_mac;
  FF_POWER_PKT my_pwr_pkt;
  FF_ENV_PKT my_env_pkt;
  FF_3PHASE_PKT my_three_phase_pkt;
  PKT_T my_pkt;
  time_t ts;
		uint32_t small_cnt, large_cnt;
	
  if (argc < 3) {
    printf ("Usage: server port [-v]\n");
    exit (1);
  }

  state = 0;
  verbose=0;
	if(argc==4)
	{
		if(strcmp(argv[3],"-v")==0) { printf( "Verbose on" ); verbose=1; }
	}


  v = slipstream_open (argv[1], atoi (argv[2]), BLOCKING);

  v = send_ping ();

  cnt = 0;
  while (1) {

    v = slipstream_receive (buffer);
    if (v > 0) {
      v = buf_to_pkt (buffer, &my_pkt);
	//printf( "pkt: %d\n",v );
      if (v == 1) {

/*
 * printf ("TYPE: %d\n", my_pkt.type);
        printf ("RSSI: %u\n", my_pkt.rssi);
        printf ("SRC MAC: %d\n", my_pkt.src_mac);
        printf ("DST MAC: %d\n", my_pkt.dst_mac);
        printf ("PAYLOAD LEN: %d\n", my_pkt.payload_len);
        printf ("PAYLOAD: [");
        for (i = 0; i < my_pkt.payload_len; i++)
          printf ("%d ", my_pkt.payload[i]);
        printf ("]\n");
   */ 
 	if(my_pkt.type==APP)
 	{
	ts=time(NULL);
	switch(my_pkt.payload[1])
		{	
		case 1:
       			power_unpack (my_pkt.payload, &my_pwr_pkt);
						if(verbose)
			printf( "(time,mac,rssi,total_secs,freq,v-rms,i-rms,t-pwr,energy,i-rms2,t-pwr2,energy2): %u,%x,%u,%u,",ts,my_pkt.src_mac,my_pkt.rssi,my_pwr_pkt.total_secs );
				else
			printf( "P,%u,%x,%u,%u,",ts,my_pkt.src_mac,my_pkt.rssi,my_pwr_pkt.total_secs );

				printf( "%u,%u,%u,%u,%lu",my_pwr_pkt.freq, my_pwr_pkt.rms_voltage,my_pwr_pkt.rms_current, my_pwr_pkt.true_power,my_pwr_pkt.long_energy);
				printf( ",%u,%u,%lu",my_pwr_pkt.rms_current1, my_pwr_pkt.true_power1,my_pwr_pkt.long_energy1);
				printf( ",%u,%u",my_pwr_pkt.v_p2p_low, my_pwr_pkt.v_p2p_high);
				printf( ",%u,%u",my_pwr_pkt.c_p2p_low, my_pwr_pkt.c_p2p_high);
				printf( ",%u,%u",my_pwr_pkt.c_p2p_low2, my_pwr_pkt.c_p2p_high2);
				printf( ",%u,%u,%u,%u",my_pwr_pkt.v_center, my_pwr_pkt.c_center, my_pwr_pkt.c2_center, my_pwr_pkt.socket_state);
			//        printf ("%d,%d)",
			//                ((float) my_pwr_pkt.true_power) / POWER_SCALER,
			//                my_pwr_pkt.true_power);
        		printf( "\n" );
		break;
		case 3:
			env_unpack(my_pkt.payload, &my_env_pkt );
			if(verbose)
			printf( "(time,mac,rssi,bat,light,temp,acc_x,acc_y,acc_z,audio_p2p,digital-temp,humidity,pressure,motion,gpio_state): %u,%x,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u",ts,my_pkt.src_mac, my_pkt.rssi,my_env_pkt.bat, my_env_pkt.light, my_env_pkt.temp, my_env_pkt.acc_x, my_env_pkt.acc_y, my_env_pkt.acc_z, my_env_pkt.audio_p2p, my_env_pkt.digital_temp,my_env_pkt.humidity, my_env_pkt.pressure,my_env_pkt.motion,my_env_pkt.gpio_state );
			else
			printf( "S,%u,%x,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u",ts,my_pkt.src_mac, my_pkt.rssi, my_env_pkt.bat, my_env_pkt.light, my_env_pkt.temp, my_env_pkt.acc_x, my_env_pkt.acc_y, my_env_pkt.acc_z, my_env_pkt.audio_p2p,my_env_pkt.digital_temp,my_env_pkt.humidity, my_env_pkt.pressure, my_env_pkt.motion, my_env_pkt.gpio_state );

			printf( "\n" );	
		break;
		case 4:
			printf("(time,mac,rssi,state): %u,%x,%u,%u\n",ts,my_pkt.src_mac,my_pkt.rssi,my_pkt.payload[2] );
		break;
		case 5:
		if(verbose)
			printf("(time,mac,rssi,gain): %u,%x,%u,%u\n",ts,my_pkt.src_mac,my_pkt.rssi, my_pkt.payload[2] );
		else
			printf("B,%u,%u,%u,%u\n",ts,my_pkt.src_mac,my_pkt.rssi,my_pkt.payload[2] );
		break;
		case 6:
		// Payload index 2 represents counts per minute
		if(verbose)
			printf("(time,mac,rssi,cpm): %u,%x,%u\n",ts,my_pkt.src_mac,my_pkt.rssi,my_pkt.payload[2] );
		else
			printf("R,%u,%x,%u,%u\n",ts,my_pkt.src_mac,my_pkt.rssi,my_pkt.payload[2] );
		break;
		case 7:
		// Payload index 2,3,4,5 represent a little endian value for small particles counted
		// Payload index 6,7,8,9 represent a little endian value for large particles counted
		small_cnt=my_pkt.payload[2] | my_pkt.payload[3]<<8 | my_pkt.payload[4]<<16 | my_pkt.payload[5]<<24;	
		large_cnt=my_pkt.payload[6] | my_pkt.payload[7]<<8 | my_pkt.payload[8]<<16 | my_pkt.payload[9]<<24;	
		if(verbose)
			printf("(time,mac,rssi,small_cnt,large_cnt): %u,%x,%u,%u,%u\n",ts,my_pkt.src_mac,my_pkt.rssi,small_cnt,large_cnt );
		else
			printf("A,%u,%x,%u,%u,%u\n",ts,my_pkt.src_mac,my_pkt.rssi,small_cnt,large_cnt);
		break;

		case 8:
       			three_phase_unpack (my_pkt.payload, &my_three_phase_pkt);
			if(verbose)
			printf( "3 Phase meter (time,mac,rssi,total_secs,period,awatthr,awatt,ava,avrms,airms,bwatt,bwatthr,bva,bvrms,birms,cwatt,cwatthr,cva,cvrms,cirms): %u,%x,%u,%u,",ts,my_pkt.src_mac,my_pkt.rssi,my_three_phase_pkt.total_secs );
				else
			printf( "M,%u,%x,%u,%u,",ts,my_pkt.src_mac,my_pkt.rssi,my_three_phase_pkt.total_secs );
		
			printf( "%u,%d,%d,%d,%d,%d,",my_three_phase_pkt.period, my_three_phase_pkt.awatthr,my_three_phase_pkt.awatt,my_three_phase_pkt.ava,my_three_phase_pkt.avrms,my_three_phase_pkt.airms );	
			printf( "%d,%d,%d,%d,%d,",my_three_phase_pkt.bwatthr,my_three_phase_pkt.bwatt,my_three_phase_pkt.bva,my_three_phase_pkt.bvrms,my_three_phase_pkt.birms );	
			printf( "%d,%d,%d,%d,%d",my_three_phase_pkt.cwatthr,my_three_phase_pkt.cwatt,my_three_phase_pkt.cva,my_three_phase_pkt.cvrms,my_three_phase_pkt.cirms );	

        		printf( "\n" );
		break;
	

		default:
		if(verbose)
		printf( "unkown pkt type (%d): ",my_pkt.payload[1] );
		else
		printf( "U,%d",my_pkt.payload[1] );

		for(i=2; i<my_pkt.payload_len; i++ )
			printf( ",%d",my_pkt.payload[i] );
			printf( "\n" );	
		}
		


      	}
      }

    }
    else
      printf ("Error reading packet\n");
    // Count to 5 and then send an actuate packet 
  /*  cnt++;
    if (cnt > 5) {
	    target_mac=0x04;
	    socket=0;
	    state=1;
      printf ("Sending an actuate command [mac=0x%x socket %d, state %d]\n",target_mac,socket,state);
      // Enable outlet 0 on node 0x01
      outlet_actuate (target_mac, socket, state);
      cnt = 0;
    }*/
  }



}