/*--------------------------------PROCESS BROADCAST----------------------------------*/ PROCESS_THREAD(broadcast_example_process, ev, data) { static struct etimer periodic_timer; static struct etimer send_timer; uip_ipaddr_t addr; static uint8_t initialize = 1; //this is used for mote-1 only for intialization #if RANDOM_TOKEN_ERROR random_init(clock_time() % 100); #endif PROCESS_BEGIN(); simple_udp_register(&broadcast_connection, UDP_PORT, NULL, UDP_PORT, receiver); etimer_set(&periodic_timer, SEND_INTERVAL); while(1) { PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&periodic_timer)); etimer_reset(&periodic_timer); etimer_set(&send_timer, SEND_TIME); PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&send_timer)); //printf("Sending broadcast\n"); uip_create_linklocal_allnodes_mcast(&addr); // initialize transmission by mote-1 if (1 == node_id && 1 == initialize) { token = 1; initialize = 0; // this statement will never execute again } if (token) { printf("I got the token, it's my turn\n"); simple_udp_sendto(&broadcast_connection, (uint8_t *) &node_id, 4, &addr); token = 0; //trigger an event to all service subscribers printf("RES-Event Process\n"); res_event.trigger(); } } PROCESS_END(); }
PROCESS_THREAD(er_example_server, ev, data) { PROCESS_BEGIN(); PROCESS_PAUSE(); PRINTF("Starting Erbium Example Server\n"); #ifdef RF_CHANNEL PRINTF("RF channel: %u\n", RF_CHANNEL); #endif #ifdef IEEE802154_PANID PRINTF("PAN ID: 0x%04X\n", IEEE802154_PANID); #endif PRINTF("uIP buffer: %u\n", UIP_BUFSIZE); PRINTF("LL header: %u\n", UIP_LLH_LEN); PRINTF("IP+UDP header: %u\n", UIP_IPUDPH_LEN); PRINTF("REST max chunk: %u\n", REST_MAX_CHUNK_SIZE); /* Initialize the REST engine. */ rest_init_engine(); /* * Bind the resources to their Uri-Path. * WARNING: Activating twice only means alternate path, not two instances! * All static variables are the same for each URI path. */ rest_activate_resource(&res_hello, "test/hello"); /* rest_activate_resource(&res_mirror, "debug/mirror"); */ /* rest_activate_resource(&res_chunks, "test/chunks"); */ /* rest_activate_resource(&res_separate, "test/separate"); */ rest_activate_resource(&res_push, "test/push"); /* rest_activate_resource(&res_event, "test/serial"); */ /* rest_activate_resource(&res_sub, "test/sub"); */ /* rest_activate_resource(&res_b1_sep_b2, "test/b1sepb2"); */ #if PLATFORM_HAS_LEDS /* rest_activate_resource(&res_leds, "actuators/leds"); */ rest_activate_resource(&res_toggle, "actuators/toggle"); #endif #if PLATFORM_HAS_LIGHT rest_activate_resource(&res_light, "sensors/light"); SENSORS_ACTIVATE(light_sensor); #endif #if PLATFORM_HAS_BATTERY rest_activate_resource(&res_battery, "sensors/battery"); SENSORS_ACTIVATE(battery_sensor); #endif #if PLATFORM_HAS_TEMPERATURE rest_activate_resource(&res_temperature, "sensors/temperature"); SENSORS_ACTIVATE(temperature_sensor); #endif /* #if PLATFORM_HAS_RADIO rest_activate_resource(&res_radio, "sensors/radio"); SENSORS_ACTIVATE(radio_sensor); #endif #if PLATFORM_HAS_SHT11 rest_activate_resource(&res_sht11, "sensors/sht11"); SENSORS_ACTIVATE(sht11_sensor); #endif */ #if PLATFORM_HAS_PRESSURE rest_activate_resource(&res_pressure, "sensors/pressure"); SENSORS_ACTIVATE(pressure_sensor); #endif #if PLATFORM_HAS_GYROSCOPE rest_activate_resource(&res_gyros, "sensors/gyros"); SENSORS_ACTIVATE(gyr_sensor); #endif #if PLATFORM_HAS_ACCELEROMETER rest_activate_resource(&res_accel, "sensors/accel"); SENSORS_ACTIVATE(acc_sensor); #endif #if PLATFORM_HAS_MAGNETOMETER rest_activate_resource(&res_magne, "sensors/magne"); SENSORS_ACTIVATE(mag_sensor); #endif /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); if(ev == serial_line_event_message) { res_serial_data = (char*)data; /* Call the event_handler for this application-specific event. */ res_event.trigger(); /* Also call the separate response example handler. */ // res_separate.resume(); } } /* while (1) */ PROCESS_END(); }
PROCESS_THREAD(er_example_server, ev, data) { PROCESS_BEGIN(); PROCESS_PAUSE(); PRINTF("Starting Erbium Example Server\n"); #ifdef RF_CHANNEL PRINTF("RF channel: %u\n", RF_CHANNEL); #endif #ifdef IEEE802154_PANID PRINTF("PAN ID: 0x%04X\n", IEEE802154_PANID); #endif PRINTF("uIP buffer: %u\n", UIP_BUFSIZE); PRINTF("LL header: %u\n", UIP_LLH_LEN); PRINTF("IP+UDP header: %u\n", UIP_IPUDPH_LEN); PRINTF("REST max chunk: %u\n", REST_MAX_CHUNK_SIZE); /* Initialize the REST engine. */ rest_init_engine(); /* * Bind the resources to their Uri-Path. * WARNING: Activating twice only means alternate path, not two instances! * All static variables are the same for each URI path. */ // rest_activate_resource(&res_hello, "test/hello"); /* rest_activate_resource(&res_mirror, "debug/mirror"); */ /* rest_activate_resource(&res_chunks, "test/chunks"); */ /* rest_activate_resource(&res_separate, "test/separate"); */ rest_activate_resource(&res_motion_periodic, "periodic/motion"); /* rest_activate_resource(&res_event, "sensors/button"); */ /* rest_activate_resource(&res_sub, "test/sub"); */ /* rest_activate_resource(&res_b1_sep_b2, "test/b1sepb2"); */ #if PLATFORM_HAS_LEDS rest_activate_resource(&res_leds, "actuators/leds"); // rest_activate_resource(&res_toggle, "actuators/toggle"); #endif #if PLATFORM_HAS_ALARM rest_activate_resource(&res_alarm, "actuators/alarm"); relay_enable(6); #endif #if PLATFORM_HAS_LB rest_activate_resource(&res_lb, "actuators/light_bulb"); relay_enable(7); #endif #if PLATFORM_HAS_MOTION rest_activate_resource(&res_motion,"sensors/motion"); SENSORS_ACTIVATE(phidgets); #endif #if PLATFORM_HAS_LIGHT rest_activate_resource(&res_light, "sensors/light"); SENSORS_ACTIVATE(light_sensor); #endif #if PLATFORM_HAS_SHT11 rest_activate_resource(&res_sht11, "sensors/sht11"); SENSORS_ACTIVATE(sht11_sensor); #endif // SET_IP_FROM_STR((char *)THIS_IP,this_addr); // SET_THIS_ADDR(this_addr); /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); #if PLATFORM_HAS_BUTTON if(ev == sensors_event && data == &button_sensor) { PRINTF("*******BUTTON*******\n"); /* Call the event_handler for this application-specific event. */ res_event.trigger(); /* Also call the separate response example handler. */ res_separate.resume(); } #endif /* PLATFORM_HAS_BUTTON */ } /* while (1) */ PROCESS_END(); }
PROCESS_THREAD(er_example_server, ev, data) { PROCESS_BEGIN(); PROCESS_PAUSE(); PRINTF("Starting Erbium Example Server\n"); #ifdef RF_CHANNEL PRINTF("RF channel: %u\n", RF_CHANNEL); #endif #ifdef IEEE802154_PANID PRINTF("PAN ID: 0x%04X\n", IEEE802154_PANID); #endif PRINTF("uIP buffer: %u\n", UIP_BUFSIZE); PRINTF("LL header: %u\n", UIP_LLH_LEN); PRINTF("IP+UDP header: %u\n", UIP_IPUDPH_LEN); PRINTF("REST max chunk: %u\n", REST_MAX_CHUNK_SIZE); /* Initialize the REST engine. */ rest_init_engine(); /* * Bind the resources to their Uri-Path. * WARNING: Activating twice only means alternate path, not two instances! * All static variables are the same for each URI path. */ rest_activate_resource(&res_led, "lamp"); rest_activate_resource(&res_temp, "lamp/temperature"); rest_activate_resource(&res_temp_thresh_on, "lamp/temp_thresh_on"); rest_activate_resource(&res_temp_thresh_off, "lamp/temp_thresh_off"); rest_activate_resource(&res_adf7242_lgi, "ADF7242/LQI"); rest_activate_resource(&res_hello, "test/hello"); /* rest_activate_resource(&res_mirror, "debug/mirror"); */ /* rest_activate_resource(&res_chunks, "test/chunks"); */ /* rest_activate_resource(&res_separate, "test/separate"); */ /* rest_activate_resource(&res_push, "test/push"); */ /* rest_activate_resource(&res_event, "sensors/button"); */ /* rest_activate_resource(&res_sub, "test/sub"); */ /* rest_activate_resource(&res_b1_sep_b2, "test/b1sepb2"); */ #if PLATFORM_HAS_LEDS /* rest_activate_resource(&res_leds, "actuators/leds"); */ rest_activate_resource(&res_toggle, "actuators/toggle"); #endif #if PLATFORM_HAS_LIGHT /* rest_activate_resource(&res_light, "sensors/light"); */ #endif /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); #if PLATFORM_HAS_BUTTON if(ev == sensors_event && data == &button_sensor) { PRINTF("*******BUTTON*******\n"); /* Call the event_handler for this application-specific event. */ res_event.trigger(); /* Also call the separate response example handler. */ res_separate.resume(); } #endif /* PLATFORM_HAS_BUTTON */ } /* while (1) */ PROCESS_END(); }
PROCESS_THREAD(er_example_server, ev, data) { PROCESS_BEGIN(); PROCESS_PAUSE(); PRINTF("Starting Erbium Example Server\n"); PRINTF("uIP buffer: %u\n", UIP_BUFSIZE); PRINTF("LL header: %u\n", UIP_LLH_LEN); PRINTF("IP+UDP header: %u\n", UIP_IPUDPH_LEN); PRINTF("REST max chunk: %u\n", REST_MAX_CHUNK_SIZE); hw_init(); /* Initialize the REST engine. */ rest_init_engine(); /* * Bind the resources to their Uri-Path. * WARNING: Activating twice only means alternate path, not two instances! * All static variables are the same for each URI path. */ rest_activate_resource(&res_hello, "test/hello"); /* rest_activate_resource(&res_mirror, "debug/mirror"); */ /* rest_activate_resource(&res_chunks, "test/chunks"); */ /* rest_activate_resource(&res_separate, "test/separate"); */ rest_activate_resource(&res_push, "test/push"); /* rest_activate_resource(&res_event, "s/button"); */ /* rest_activate_resource(&res_sub, "test/sub"); */ /* rest_activate_resource(&res_b1_sep_b2, "test/b1sepb2"); */ #if PLATFORM_HAS_LEDS /* rest_activate_resource(&res_leds, "a/leds"); */ rest_activate_resource(&res_toggle, "a/toggle"); #endif #if PLATFORM_HAS_LIGHT rest_activate_resource(&res_light, "s/light"); SENSORS_ACTIVATE(light_sensor); #endif #if PLATFORM_HAS_BATTERY rest_activate_resource(&res_battery, "s/battery"); SENSORS_ACTIVATE(battery_sensor); #endif /* #if PLATFORM_HAS_RADIO rest_activate_resource(&res_radio, "s/radio"); SENSORS_ACTIVATE(radio_sensor); #endif #if PLATFORM_HAS_SHT11 rest_activate_resource(&res_sht11, "s/sht11"); SENSORS_ACTIVATE(sht11_sensor); #endif */ /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); #if PLATFORM_HAS_BUTTON if(ev == sensors_event && data == &button_sensor) { PRINTF("*******BUTTON*******\n"); /* Call the event_handler for this application-specific event. */ res_event.trigger(); /* Also call the separate response example handler. */ res_separate.resume(); } #endif /* PLATFORM_HAS_BUTTON */ } /* while (1) */ PROCESS_END(); }