Ejemplo n.º 1
0
/*---------------------------------------------------------------------------*/
void
trickle_close(struct trickle_conn *c)
{
  broadcast_close(&c->c);
  ctimer_stop(&c->t);
  ctimer_stop(&c->interval_timer);
}
Ejemplo n.º 2
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(broadcast_process, ev, data)
{
  static struct etimer et;
  static uint8_t seqno;
  struct broadcast_message msg;

  PROCESS_EXITHANDLER(broadcast_close(&broadcast);)
Ejemplo n.º 3
0
/*  server broadcast process
//  The “server_broadcast” process , periodically (every 1.5 seconds ) sends the number of available files which is represented by the binary vector Vs 
//  A flag variable is used to start/stop the broadcast of available files.
*/
PROCESS_THREAD(server_broadcast, ev, data)
{
	// create timer
	static struct etimer et;

	// exit handler
	PROCESS_EXITHANDLER(broadcast_close(&serv_broadcast);)
Ejemplo n.º 4
0
PROCESS_THREAD(sniffer_process, ev, data)
{
	static struct etimer et;

	leds_off(LEDS_ALL); /* turn off LEDs */
	SENSORS_ACTIVATE(button_sensor); /* turn on button sensor */

	PROCESS_EXITHANDLER(broadcast_close(&bc));
	PROCESS_BEGIN();

	broadcast_open(&bc, SNIFFER_CHANNEL, &broadcast_call);

	process_start(&wait_process, NULL); /* Start wait process.  This will end the main process when a button sensor 						event is posted */

	while(1) /* Infinite loop */
	{
		etimer_set(&et, CLOCK_SECOND * 2 * PERIOD); /* Wait 4 seconds per loop for a receive event */

		PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));

		#if DEBUG
			printf("Loop\n");
		#endif
	}


	SENSORS_DEACTIVATE(button_sensor); /* Deactivate sensor when we're done */
	PROCESS_END();
}
Ejemplo n.º 5
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(timesynch_process, ev, data)
{
  static struct etimer sendtimer, intervaltimer;
  static clock_time_t interval;
  struct timesynch_msg msg;

  PROCESS_EXITHANDLER(broadcast_close(&broadcast);)
Ejemplo n.º 6
0
/* This function is called whenever a broadcast message is received. */
static void
broadcast_recv(struct broadcast_conn *c, const rimeaddr_t *from)
{
  struct broadcast_message *m;
  struct unicast_message sMsg;
  struct RTC_time t, t_now;
  rimeaddr_t *add;
  struct sensor_data tk;
  
  m = (struct broadcast_message *)packetbuf_dataptr();

  t = m->time;

  if(id==0&&status==0)
  {
  	rimeaddr_copy(&nmaddr, from);
  	sMsg.type = INIT_REQ;
  	sMsg.time = t;
  	sMsg.numSampl = 20;
  	strcpy(sMsg.name, "Dust sensor\0");
  	packetbuf_copyfrom(&sMsg, sizeof(struct unicast_message));
  	RTC_getTime(&t_now);
  	unicast_send(&unicast, &nmaddr);
  	broadcast_close(&broadcast);
  	status = 1;
  	return;
  }

  if(m->type == 1)
  {
  	t = m->time;
  }
}
Ejemplo n.º 7
0
/*---------------------------------------------------------------------------*/
void
neighbor_discovery_close(struct neighbor_discovery_conn *c)
{
  broadcast_close(&c->c);
  ctimer_stop(&c->send_timer);
  ctimer_stop(&c->interval_timer);
}
Ejemplo n.º 8
0
/*---------------------------------------------------------------------------*/
void
broadcast_announcement_stop(void)
{
  ctimer_stop(&c.interval_timer);
  ctimer_stop(&c.send_timer);
  broadcast_close(&c.c);
}
Ejemplo n.º 9
0
PROCESS_THREAD(shell_bc_close_process, ev, data)
{
  uint16_t channel;
  long channel_long;
  const char *next;
  char buf[6];
  PROCESS_BEGIN();

  channel_long = shell_strtolong((char *)data, &next);
  if(channel_long <= 0 || channel_long > 65535){
    shell_output_str(&bc_close_command, "channel has to be in range of [1-65535]", "");
    PROCESS_EXIT();
  }
  channel = (uint16_t) channel_long;
  snprintf(buf, sizeof(buf), "%d", channel);
  struct broadcast_entry *e = list_head(broadcast_list);
  while(e != NULL){
    if(e->channel == channel){
      struct broadcast_entry *to_remove = e;
      e = e->next;
      broadcast_close(&to_remove->c);
      list_remove(broadcast_list, to_remove);
      memb_free(&broadcast_mem, to_remove);
      shell_output_str(&bc_close_command, "closed broadcast connection on channel: ", buf);
      PROCESS_EXIT();
    }
  }
  shell_output_str(&bc_close_command, "bc_close error: channel not open","");

  PROCESS_END();
}
Ejemplo n.º 10
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(blindnode_bcast_rec, ev, data)
{
  static struct etimer et;
  static uint8_t n;
  int i;

  PROCESS_EXITHANDLER(broadcast_close(&broadcast));

  PROCESS_BEGIN();

  printf("Reading Chip ID: 0x%02x\n", CHIPID);
  /* Read our chip ID. If we are not cc2431, bail out */
  if(CHIPID != CC2431_CHIP_ID) {
    printf("Hardware does not have a location engine. Exiting.\n");
    PROCESS_EXIT();
  }

  /* OK, we are cc2431. Do stuff */
  n = 0;

  /* Initalise our structs and parameters */
  memset(ref_coords, 0, sizeof(struct refcoords) * MAX_REF_NODES);
  memset(&parameters, 0, sizeof(struct meas_params));

  /*
   * Just hard-coding measurement parameters here.
   * Ideally, this should be part of a calibration mechanism
   */
  parameters.alpha=SAMPLE_ALPHA;
  parameters.x_min=0;
  parameters.x_delta=255;
  parameters.y_min=0;
  parameters.y_delta=255;

  set_imaginary_ref_nodes();

  broadcast_open(&broadcast, 129, &broadcast_call);

  while(1) {

    etimer_set(&et, CLOCK_SECOND);

    PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));

    /*
     * With the hard-coded parameters and locations, we will calculate
     * for all possible values of n [0 , 31]
     */
    parameters.n=n;
    calculate();
    n++;
    if(n==32) { n=0; }

    /* Send our calculated location to some monitoring node */
    packetbuf_copyfrom(&coords, 2*sizeof(uint8_t));
    broadcast_send(&broadcast);
  }
  PROCESS_END();
}
Ejemplo n.º 11
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(example_broadcast_process, ev, data)
{
  static struct etimer et;
  static clock_time_t start_time;
  static uint32_t interval;
  //static int i = 0;

  PROCESS_EXITHANDLER(broadcast_close(&broadcast);)
Ejemplo n.º 12
0
PROCESS_THREAD(deluge_process, ev, data)
{
  static struct etimer et;
  static unsigned time_counter;
  static unsigned r_rand;

  PROCESS_EXITHANDLER(goto exit);

  PROCESS_BEGIN();

  deluge_event = process_alloc_event();

  broadcast_open(&deluge_broadcast, DELUGE_BROADCAST_CHANNEL, &broadcast_call);
  unicast_open(&deluge_uc, DELUGE_UNICAST_CHANNEL, &unicast_call);
  r_interval = T_LOW;

  PRINTF("Maintaining state for object %s of %d pages\n",
	current_object.filename, OBJECT_PAGE_COUNT(current_object));

  deluge_state = DELUGE_STATE_MAINTAIN;

  for(r_interval = T_LOW;;) {
    if(neighbor_inconsistency) {
      /* Deluge M.2 */
      r_interval = T_LOW;
      neighbor_inconsistency = 0;
    } else {
      /* Deluge M.3 */
      r_interval = (2 * r_interval >= T_HIGH) ? T_HIGH : 2 * r_interval;
    }

    r_rand = r_interval / 2 + ((unsigned)random_rand() % (r_interval / 2));
    recv_adv = 0;
    old_summary = 0;

    /* Deluge M.1 */
    ctimer_set(&summary_timer, r_rand * CLOCK_SECOND,
	(void *)(void *)advertise_summary, &current_object);

    /* Deluge M.4 */
    ctimer_set(&profile_timer, r_rand * CLOCK_SECOND,
	(void *)(void *)send_profile, &current_object);

    LONG_TIMER(et, time_counter, r_interval);
  }

exit:
  unicast_close(&deluge_uc);
  broadcast_close(&deluge_broadcast);
  if(current_object.cfs_fd >= 0) {
    cfs_close(current_object.cfs_fd);
  }
  if(current_object.pages != NULL) {
    free(current_object.pages);
  }

  PROCESS_END();
}
Ejemplo n.º 13
0
/*MAIN THREAD------------------------------------------------------------------------------*/
PROCESS_THREAD(b_thread, ev, data)
{
  static struct etimer send_timer, redelca_timer;
  
  static uint32_t start_energy_cpu, start_energy_rx, start_energy_tx;
  static uint32_t end_energy_cpu, end_energy_rx, end_energy_tx;
  static char * msg, * my_x, * my_y, * position;
  
  PROCESS_EXITHANDLER(broadcast_close(&broadcast);)
Ejemplo n.º 14
0
/*---------------------------------------------------------------------------*/
void
ipolite_close(struct ipolite_conn *c)
{
  broadcast_close(&c->c);
  ctimer_stop(&c->t);
  if(c->q != NULL) {
    queuebuf_free(c->q);
    c->q = NULL;
  }
}
Ejemplo n.º 15
0
PROCESS_THREAD(cmac_16hz, ev, data) {
  static struct etimer et;
  unsigned long last_cpu, last_lpm, last_tra, last_lis, curr_cpu, curr_lpm,
      curr_tra, curr_lis;

  last_cpu = 0;
  last_lpm = 0;
  last_tra = 0;
  last_lis = 0;

  PROCESS_EXITHANDLER(broadcast_close(&broadcast);)
PROCESS_THREAD(broadcast_process, ev, data)
{
    static struct etimer et; /*timer to wait*/
    if(!ifinit){
        list_init(broadcast_list);
        memb_init(&broadcast_list_memb);
        list_init(routing_table);
        memb_init(&routing_table_memb);
        init_my_node(NODE_INIT);
        ifinit = 1;
    }
    PROCESS_EXITHANDLER(broadcast_close(&broadcast);)
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(example_broadcast_process, ev, data) {
    static struct etimer et;
    pkg_hdr to_send;
    int q,fd;
    unsigned int new_seed;
    unsigned short op;
    //Adjacency matrix to be sent
    uchar adj[TOT_NUM_NODES * TOT_NUM_NODES];
    //Filling it
    uchar i, j;

    //Setting handlers and begin
    PROCESS_EXITHANDLER(broadcast_close(&broadcast);)
Ejemplo n.º 18
0
static void
unicast_recv(struct unicast_conn *c, const rimeaddr_t *from)
{
  printf("unicast message received from server with rime-address %d.%d: '%s'\n",
         from->u8[0], from->u8[1], (char *)packetbuf_dataptr());

  // Todo: Adresse korrekt uebergeben
  //memcpy(&uip_lladdr.addr, &from->u8, sizeof(uip_lladdr)); //example: uip_lladdr = {{0x00,0x06,0x98,0x00,0x02,0x32}};
  //memcpy(&uip_lladdr.addr, &from.u8, sizeof(rimeaddr_t));

  unicast_close(&unicast);
  broadcast_close(&broadcast);
}
Ejemplo n.º 19
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(sensors_test_process, ev, data)
{
  static struct etimer et;
#if SEND_BATTERY_INFO
  /* Node Time */
  static struct sensor_data sd;
#endif

  /* Sensor Values */
  static int rv;
  static struct sensors_sensor * sensor;
  static float sane = 0;
  static int dec;
  static float frac;

#if SEND_BATTERY_INFO
  PROCESS_EXITHANDLER(broadcast_close(&bc_con);)
Ejemplo n.º 20
0
static void
recv_broadcast(struct broadcast_conn *c, const linkaddr_t *from)
{
	linkaddr_t daddy_addr;

	// if this is a network setup packet, sent from an actuator
    leds_toggle(LEDS_ALL); // toggle all leds

    linkaddr_copy(&daddy_addr, from);

    // Start data sending process.
    process_start(&data_sender_process, NULL);
    // remove the broadcast listener.
	broadcast_close(&broadcast);

    // endif
}
Ejemplo n.º 21
0
static void
recv_broadcast(struct broadcast_conn *c, const linkaddr_t *from)
{
	struct broadcast *received_msg;
	received_msg = packetbuf_dataptr();
	struct broadcast br_msg;
	if(received_msg->type == BROADCAST_TYPE_DISCOVERY)
	{
		if(received_msg->data != address_base)
		{
			address_base = received_msg->data;
			printf("base station addr: %d\n",address_base);
			printf("actuator: broadcast to neighbors\n");
			br_msg.type = BROADCAST_TYPE_DISCOVERY;
			br_msg.data = address_base;
			packetbuf_copyfrom(&br_msg, sizeof(br_msg));
			broadcast_send(&broadcast);
			broadcast_close(&broadcast);
		}
	}
}
Ejemplo n.º 22
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(cc1200_demo_process, ev, data)
{
  PROCESS_EXITHANDLER(broadcast_close(&bc))
  PROCESS_BEGIN();

  broadcast_open(&bc, BROADCAST_CHANNEL, &bc_rx);

  etimer_set(&et, LOOP_INTERVAL);

  while(1) {
    PROCESS_YIELD();
    if(ev == PROCESS_EVENT_TIMER) {
      printf("Broadcast --> %u\n", counter);
      leds_toggle(LEDS_RED);
      packetbuf_copyfrom(&counter, sizeof(counter));
      broadcast_send(&bc);
      counter++;
      etimer_set(&et, LOOP_INTERVAL);
    }
  }

  PROCESS_END();
}
Ejemplo n.º 23
0
PROCESS_THREAD(cc26xx_demo_process, ev, data)
{
  PROCESS_EXITHANDLER(broadcast_close(&bc))

  PROCESS_BEGIN();

  gpio_relay_init();
  relay_all_clear();
  
  
  counter = 0;
  broadcast_open(&bc, BROADCAST_CHANNEL, &bc_rx);

  etimer_set(&et, CLOCK_SECOND);
  
  while(1) {

    PROCESS_YIELD();

    if(ev == PROCESS_EVENT_TIMER) {
      leds_on(LEDS_PERIODIC);
     
      etimer_set(&et, CLOCK_SECOND*5);
      rtimer_set(&rt, RTIMER_NOW() + LEDS_OFF_HYSTERISIS, 1,
                 rt_callback, NULL);
      counter = Get_ADC_reading();
      packetbuf_copyfrom(&counter, sizeof(counter));
      broadcast_send(&bc);
     // printf("adc data value : %d \r\n",counter);
        
    } 
     watchdog_periodic();
  }

  PROCESS_END();
}
Ejemplo n.º 24
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(broadcast_receiver_process, ev, data)
{
  static struct etimer et;
  PROCESS_EXITHANDLER(broadcast_close(&broadcast);)
Ejemplo n.º 25
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(example_collect_process, ev, data)
{
    static struct etimer periodic;
    static struct etimer et;
    PROCESS_EXITHANDLER(broadcast_close(&broadcast);)
Ejemplo n.º 26
0
/*---------------------------------------------------------------------------*/
void
unicast_close(struct unicast_conn *c)
{
  broadcast_close(&c->c);
}
Ejemplo n.º 27
0
PROCESS_THREAD(hello_process, ev, data)
{
  PROCESS_POLLHANDLER();
  PROCESS_EXITHANDLER(broadcast_close(&bc); unicast_close(&uc););
Ejemplo n.º 28
0
/*---------------------------------------------------------------------------*/
void
stbroadcast_close(struct stbroadcast_conn *c)
{
  broadcast_close(&c->c);
  ctimer_stop(&c->t);
}
Ejemplo n.º 29
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(cc2538_demo_process, ev, data)
{

  PROCESS_EXITHANDLER(broadcast_close(&bc))

  PROCESS_BEGIN();

  counter = 0;
  broadcast_open(&bc, BROADCAST_CHANNEL, &bc_rx);
  printf("temp:%u.%u\nhumidity:%u.%u\n",(int)tc,((int)(tc*10))%10 , (int)hc,((int)(hc*10))%10);
  while(1) {
    etimer_set(&et, CLOCK_SECOND*10);

    //ivanm
    // Configure ADC, Internal reference, 512 decimation rate (12bit)
    //
    SOCADCSingleConfigure(SOCADC_12_BIT, SOCADC_REF_INTERNAL);
    //
    // Trigger single conversion on AIN6 (connected to LV_ALS_OUT).
    //
    SOCADCSingleStart(SOCADC_VDD);
    //
    // Wait until conversion is completed
    //
    while(!SOCADCEndOfCOnversionGet())
    {
    }
    //
    // Get data and shift down based on decimation rate
    //
    ui1Dummy = SOCADCDataGet() >> SOCADC_12_BIT_RSHIFT;
    printf("konverzija(ADC) = 0x%08x\n",ui1Dummy);
    PROCESS_YIELD();

    if(ev == PROCESS_EVENT_TIMER) {
      leds_on(LEDS_PERIODIC);
      printf("Counter = 0x%08x\n", counter);
      err = s_measure(&temperature, checksum, TEMP);

             	  			if (err == 0)
             	  			{
             	  				//printf("Temperature (ADC value) = 0x%4x\n", temperature);

             	  				err = s_measure(&humidity, checksum, HUMI);

             	  				if (err == 0)
             	  				{
             	  					//printf("Humidity (ADC value) = 0x%4x\n", humidity);

             	  					//tc=sht11_TemperatureC(temperature);
             	  					//hc=sht11_Humidity(temperature,humidity);
             	  					tc=0;
             	  					hc=0;
             	  					printf("temp:%u.%u\nhumidity:%u.%u\n",(int)tc,((int)(tc*10))%10 , (int)hc,((int)(hc*10))%10);
             	  				}
             	  				else
             	  					printf("SHT11 error - could not read humidity!\n");
             	  			}
             	  			else
             	  				printf("SHT11 error - could not read temperature!\n");

      etimer_set(&et, CLOCK_SECOND);
      rtimer_set(&rt, RTIMER_NOW() + LEDS_OFF_HYSTERISIS, 1,
                 rt_callback, NULL);
    } else if(ev == sensors_event) {
      if(data == &button_select_sensor) {
    	  if (swt==0)
    	  {
    		packetbuf_copyfrom(&temperature, sizeof(temperature));
    	  	broadcast_send(&bc);
        	swt=1;
    	  }
          else
          {
        	packetbuf_copyfrom(&humidity, sizeof(humidity));
    	  	broadcast_send(&bc);
        	swt=0;
          }

      } else if(data == &button_left_sensor || data == &button_right_sensor) {
        leds_toggle(LEDS_BUTTON);
      } else if(data == &button_down_sensor) {
        cpu_cpsid();
        leds_on(LEDS_REBOOT);
        watchdog_reboot();
      } else if(data == &button_up_sensor) {
        sys_ctrl_reset();
      }
    } else if(ev == serial_line_event_message) {
      leds_toggle(LEDS_SERIAL_IN);
    }
    counter++;
    /* put measaruement sht11 here*/

  }

  PROCESS_END();
}
Ejemplo n.º 30
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(leader_mote_2, ev, data)
{
    static struct etimer et;

    PROCESS_EXITHANDLER(broadcast_close(&broadcast);)