PROCESS_THREAD(rest_server_example, ev, data) { PROCESS_BEGIN(); 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); /* if static routes are used rather than RPL */ #if !UIP_CONF_IPV6_RPL && !defined (CONTIKI_TARGET_MINIMAL_NET) && !defined (CONTIKI_TARGET_NATIVE) set_global_address(); configure_routing(); #endif /* Initialize the OSD Hardware. */ hw_init(); /* Initialize the REST engine. */ rest_init_engine(); /* Activate the application-specific resources. */ rest_activate_resource(&resource_info); SENSORS_ACTIVATE(t4_servo_sensor); rest_activate_resource(&resource_t4_servo); /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); } PROCESS_END(); }
PROCESS_THREAD(plugtest_server, ev, data) { PROCESS_BEGIN(); PRINTF("ETSI IoT CoAP Plugtests 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); /* if static routes are used rather than RPL */ #if !UIP_CONF_IPV6_RPL && !defined (CONTIKI_TARGET_MINIMAL_NET) set_global_address(); configure_routing(); #endif /* Initialize the REST engine. */ rest_init_engine(); /* Activate the application-specific resources. */ #if REST_RES_TEST rest_activate_resource(&resource_test); #endif #if REST_RES_LONG rest_activate_resource(&resource_longpath); #endif #if REST_RES_QUERY rest_activate_resource(&resource_query); #endif #if REST_RES_SEPARATE rest_activate_periodic_resource(&periodic_resource_separate); #endif #if REST_RES_LARGE rest_activate_resource(&resource_large); #endif #if REST_RES_LARGE_UPDATE large_update_ct = REST.type.APPLICATION_OCTET_STREAM; rest_activate_resource(&resource_large_update); #endif #if REST_RES_LARGE_CREATE rest_activate_resource(&resource_large_create); #endif #if REST_RES_OBS rest_activate_periodic_resource(&periodic_resource_obs); #endif /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); } /* while (1) */ PROCESS_END(); }
PROCESS_THREAD(rest_server_example, ev, data) { PROCESS_BEGIN(); 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); /* if static routes are used rather than RPL */ #if !UIP_CONF_IPV6_RPL \ && !defined (CONTIKI_TARGET_MINIMAL_NET) \ && !defined (CONTIKI_TARGET_NATIVE) set_global_address(); configure_routing(); #endif /* Initialize the OSD Hardware. */ hw_init(); /* Initialize the REST engine. */ rest_init_engine(); /* Activate the application-specific resources. */ rest_activate_resource(&resource_info); rest_activate_resource(&resource_led_pwm); /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); } /* while (1) */ PROCESS_END(); }
PROCESS_THREAD(rest_server_example, ev, data) { static struct etimer ds_periodic_timer; static int ext4=0; static int ext5=0; static int ext6=0; // ext4 = is_button_ext4(); // ext5 = is_button_ext5(); // ext6 = is_button_ext6(); PROCESS_BEGIN(); 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); /* if static routes are used rather than RPL */ #if !UIP_CONF_IPV6_RPL && !defined (CONTIKI_TARGET_MINIMAL_NET) && !defined (CONTIKI_TARGET_NATIVE) set_global_address(); configure_routing(); #endif /* Initialize the OSD Hardware. */ hw_init(); /* Initialize the REST engine. */ rest_init_engine(); /* Activate the application-specific resources. */ rest_activate_resource(&resource_led1); rest_activate_resource(&resource_extbutton); #if REST_RES_INFO rest_activate_resource(&resource_info); #endif /* Activate the application-specific resources. */ #if REST_RES_OPTRIAC SENSORS_ACTIVATE(optriac_sensor); rest_activate_resource(&resource_optriac); #endif #if defined (PLATFORM_HAS_PIR) && (REST_RES_EVENT) SENSORS_ACTIVATE(pir_sensor); rest_activate_event_resource(&resource_pir); PRINTF("ACTIVATE PIR\n"); #endif #if defined (PLATFORM_HAS_LEDS) #if REST_RES_LEDS rest_activate_resource(&resource_leds); #endif #if REST_RES_TOGGLE rest_activate_resource(&resource_toggle); #endif #endif /* PLATFORM_HAS_LEDS */ #if defined (PLATFORM_HAS_TEMPERATURE) && REST_RES_TEMPERATURE SENSORS_ACTIVATE(temperature_sensor); rest_activate_resource(&resource_temperature); #endif #if defined (PLATFORM_HAS_BATTERY) && REST_RES_BATTERY SENSORS_ACTIVATE(battery_sensor); rest_activate_resource(&resource_battery); #endif etimer_set(&ds_periodic_timer, MESURE_INTERVAL); /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); #if defined (REST_RES_EVENT) if (ev == sensors_event ) { PRINTF("EVENT\n"); #if (REST_RES_EVENT && defined (PLATFORM_HAS_PIR)) if (data == &pir_sensor) { PRINTF("PIR EVENT\n"); /* Call the event_handler for this application-specific event. */ pir_event_handler(&resource_pir); PRINTF("CALL EVENT HANDLER\n"); } #endif /* PLATFORM_HAS_PIR */ } #endif /* REST_RES_EVENT */ /* Button Tric Logic */ if(etimer_expired(&ds_periodic_timer)) { PRINTF("Periodic %d %d\n",ext5,ext6); if(ext5 != is_button_ext5()) { ext5 = is_button_ext5(); PRINTF("Toggle Triac A\n"); // Toggle Triac A if(optriac_sensor.value(OPTRIAC_SENSOR_A) == 0){ optriac_sensor.configure(OPTRIAC_SENSOR_A,1); led1_on(); }else{ optriac_sensor.configure(OPTRIAC_SENSOR_A,0); led1_off(); } } if(ext6 != is_button_ext6()) { ext6 = is_button_ext6(); PRINTF("Toggle Triac B\n"); // Toggle Triac B if(optriac_sensor.value(OPTRIAC_SENSOR_B) == 0){ optriac_sensor.configure(OPTRIAC_SENSOR_B,1); led2_on(); }else{ optriac_sensor.configure(OPTRIAC_SENSOR_B,0); led2_off(); } } etimer_reset(&ds_periodic_timer); } } /* while (1) */ PROCESS_END(); }
PROCESS_THREAD(relay_coap_server, ev, data) { PROCESS_BEGIN(); PRINTF("Starting Relay Coap 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); /* if static routes are used rather than RPL */ #if !UIP_CONF_IPV6_RPL && !defined (CONTIKI_TARGET_MINIMAL_NET) && !defined (CONTIKI_TARGET_NATIVE) set_global_address(); configure_routing(); #endif /* Initialize the REST engine. */ rest_init_engine(); /* Activate the application-specific resources. */ #if REST_RES_HELLO rest_activate_resource(&resource_helloworld); #endif #if REST_RES_MIRROR rest_activate_resource(&resource_mirror); #endif #if REST_RES_CHUNKS rest_activate_resource(&resource_chunks); #endif #if REST_RES_PUSHING rest_activate_periodic_resource(&periodic_resource_pushing); #endif #if defined (PLATFORM_HAS_BUTTON) && REST_RES_EVENT rest_activate_event_resource(&resource_event); #endif #if defined (PLATFORM_HAS_BUTTON) && REST_RES_SEPARATE && WITH_COAP > 3 /* No pre-handler anymore, user coap_separate_accept() and coap_separate_reject(). */ rest_activate_resource(&resource_separate); #endif #if defined (PLATFORM_HAS_BUTTON) && (REST_RES_EVENT || (REST_RES_SEPARATE && WITH_COAP > 3)) SENSORS_ACTIVATE(button_sensor); #endif #if REST_RES_SUB rest_activate_resource(&resource_sub); #endif #if defined (PLATFORM_HAS_LEDS) #if REST_RES_LEDS rest_activate_resource(&resource_leds); #endif #if REST_RES_TOGGLE rest_activate_resource(&resource_toggle); #endif #endif /* PLATFORM_HAS_LEDS */ #if defined (PLATFORM_HAS_LIGHT) && REST_RES_LIGHT SENSORS_ACTIVATE(light_sensor); rest_activate_resource(&resource_light); #endif #if defined (PLATFORM_HAS_BATTERY) && REST_RES_BATTERY SENSORS_ACTIVATE(battery_sensor); rest_activate_resource(&resource_battery); #endif #if defined (PLATFORM_HAS_RADIO) && REST_RES_RADIO SENSORS_ACTIVATE(radio_sensor); rest_activate_resource(&resource_radio); #endif #if defined REST_RES_EXTRELAY relay_enable(0); rest_activate_resource(&resource_extrelay); #endif /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); #if defined (PLATFORM_HAS_BUTTON) if (ev == sensors_event && data == &button_sensor) { PRINTF("BUTTON\n"); #if REST_RES_EVENT /* Call the event_handler for this application-specific event. */ event_event_handler(&resource_event); #endif #if REST_RES_SEPARATE && WITH_COAP>3 /* Also call the separate response example handler. */ separate_finalize_handler(); #endif } #endif /* PLATFORM_HAS_BUTTON */ } /* while (1) */ PROCESS_END(); }
PROCESS_THREAD(rest_server_example, ev, data) { PROCESS_BEGIN(); 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); /* if static routes are used rather than RPL */ #if !UIP_CONF_IPV6_RPL && !defined (CONTIKI_TARGET_MINIMAL_NET) && !defined (CONTIKI_TARGET_NATIVE) set_global_address(); configure_routing(); #endif /* Initialize the OSD Hardware. */ hw_init(); /* Initialize the REST engine. */ rest_init_engine(); /* Activate the application-specific resources. */ rest_activate_resource(&resource_extbutton); #if REST_RES_INFO rest_activate_resource(&resource_info); #endif /* Activate the application-specific resources. */ #if defined (REST_RES_EVENT) // SENSORS_ACTIVATE(reed1_sensor); rest_activate_event_resource(&resource_reed1); PRINTF("ACTIVATE REED1\n"); #endif #if defined (PLATFORM_HAS_LEDS) #if REST_RES_LEDS rest_activate_resource(&resource_leds); #endif #if REST_RES_TOGGLE rest_activate_resource(&resource_toggle); #endif #endif /* PLATFORM_HAS_LEDS */ #if defined (PLATFORM_HAS_TEMPERATURE) && REST_RES_TEMPERATURE SENSORS_ACTIVATE(temperature_sensor); rest_activate_resource(&resource_temperature); #endif #if defined (PLATFORM_HAS_BATTERY) && REST_RES_BATTERY SENSORS_ACTIVATE(battery_sensor); rest_activate_resource(&resource_battery); #endif /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); #if defined (REST_RES_EVENT) if (ev == sensors_event ) { PRINTF("EVENT\n"); if (data == &reed1_sensor) { PRINTF("REED1 EVENT\n"); /* Call the event_handler for this application-specific event. */ reed1_event_handler(&resource_reed1); PRINTF("CALL EVENT HANDLER\n"); } } #endif /* REST_RES_EVENT */ } /* while (1) */ PROCESS_END(); }
PROCESS_THREAD(rest_server_example, ev, data) { static struct etimer ds_periodic_timer; #if REST_RES_DS1820 static struct etimer ds_read_timer; #endif PROCESS_BEGIN(); 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); /* if static routes are used rather than RPL */ #if !UIP_CONF_IPV6_RPL && !defined (CONTIKI_TARGET_MINIMAL_NET) && !defined (CONTIKI_TARGET_NATIVE) set_global_address(); configure_routing(); #endif /* Initialize the OSD Hardware. */ hw_init(); /* Initialize the REST engine. */ rest_init_engine(); /* Activate the application-specific resources. */ #if REST_RES_DS1820 rest_activate_resource(&resource_ds1820); #endif #if REST_RES_DHT11 rest_activate_resource(&resource_dht11); #endif #if REST_RES_DHT11TEMP rest_activate_resource(&resource_dht11temp); #endif #if REST_RES_INFO rest_activate_resource(&resource_info); #endif #if defined (PLATFORM_HAS_LEDS) #if REST_RES_LEDS rest_activate_resource(&resource_leds); #endif #if REST_RES_TOGGLE rest_activate_resource(&resource_toggle); #endif #endif /* PLATFORM_HAS_LEDS */ #if defined (PLATFORM_HAS_TEMPERATURE) && REST_RES_TEMPERATURE SENSORS_ACTIVATE(temperature_sensor); rest_activate_resource(&resource_temperature); #endif #if defined (PLATFORM_HAS_BATTERY) && REST_RES_BATTERY SENSORS_ACTIVATE(battery_sensor); rest_activate_resource(&resource_battery); #endif /* Define application-specific events here. */ etimer_set(&ds_periodic_timer, MESURE_INTERVAL); while(1) { PROCESS_WAIT_EVENT(); #if defined (PLATFORM_HAS_BUTTON) if (ev == sensors_event && data == &button_sensor) { PRINTF("BUTTON\n"); } #endif /* PLATFORM_HAS_BUTTON */ if(etimer_expired(&ds_periodic_timer)) { PRINTF("Periodic\n"); etimer_reset(&ds_periodic_timer); #if REST_RES_DHT11 // DHT_Read_Data(&dht11_temp, &dht11_hum); DHT_Read_Data(&dht11_temp, &dht11_hum); #endif #if REST_RES_DS1820 if(ds1820_convert()){ etimer_set(&ds_read_timer, READ_TIME); } #endif } #if REST_RES_DS1820 if(etimer_expired(&ds_read_timer)) { PRINTF("DS1820_Read\n"); ds1820_read(); } #endif } /* while (1) */ PROCESS_END(); }
PROCESS_THREAD(rest_server_example, ev, data) { static struct etimer ds_periodic_timer; // static int ext4=0; static int ext5=0; static int ext6=0; // ext4 = is_button_ext4(); // ext5 = is_button_ext5(); // ext6 = is_button_ext6(); PROCESS_BEGIN(); 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); /* if static routes are used rather than RPL */ #if !UIP_CONF_IPV6_RPL && !defined (CONTIKI_TARGET_MINIMAL_NET) && !defined (CONTIKI_TARGET_NATIVE) set_global_address(); configure_routing(); #endif /* Initialize the OSD Hardware. */ hw_init(); /* Initialize the REST engine. */ rest_init_engine(); /* Activate the application-specific resources. */ #if REST_RES_MODEL rest_activate_resource(&res_model,"p/model"); #endif #if REST_RES_SW rest_activate_resource(&res_sw,"p/sw"); #endif #if REST_RES_NAME rest_activate_resource(&res_name,"p/name"); #endif #if REST_RES_RESET rest_activate_resource(&res_reset,"p/reset"); #endif #if REST_RES_TIMER rest_activate_resource(&res_timer,"a/timer"); #endif rest_activate_resource(&res_extbutton,"s/extbutton"); /* Activate the application-specific resources. */ #if REST_RES_OPTRIAC SENSORS_ACTIVATE(optriac_sensor); rest_activate_resource(&res_optriac,"a/optriac"); #endif #if defined (PLATFORM_HAS_LED) #if REST_RES_LED rest_activate_resource(&res_led1,"a/led1"); rest_activate_resource(&res_led2,"a/led2"); #endif #endif /* PLATFORM_HAS_LED */ #if defined (PLATFORM_HAS_TEMPERATURE) && REST_RES_TEMPERATURE SENSORS_ACTIVATE(temperature_sensor); rest_activate_resource(&res_temperature,"s/cputemp"); #endif #if defined (PLATFORM_HAS_BATTERY) && REST_RES_BATTERY SENSORS_ACTIVATE(battery_sensor); rest_activate_resource(&res_battery,"s/battery"); #endif etimer_set(&ds_periodic_timer, MESURE_INTERVAL); /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); /* Button Tric Logic */ if(etimer_expired(&ds_periodic_timer)) { PRINTF("Periodic %d %d\n",ext5,ext6); } } /* while (1) */ PROCESS_END(); }
PROCESS_THREAD(rest_server_example, ev, data) { PROCESS_BEGIN(); PRINTF("Rest Example\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); /* if static routes are used rather than RPL */ #if !UIP_CONF_IPV6_RPL && !defined (CONTIKI_TARGET_MINIMAL_NET) set_global_address(); configure_routing(); #endif /* Initialize the REST framework. */ rest_init_framework(); /* Activate the application-specific resources. */ #if REST_RES_HELLO rest_activate_resource(&resource_helloworld); #endif #if REST_RES_MIRROR rest_activate_resource(&resource_mirror); #endif #if REST_RES_CHUNKS rest_activate_resource(&resource_chunks); #endif #if REST_RES_POLLING rest_activate_periodic_resource(&periodic_resource_polling); #endif #if defined (PLATFORM_HAS_BUTTON) && REST_RES_EVENT SENSORS_ACTIVATE(button_sensor); rest_activate_event_resource(&resource_event); #endif #if defined (PLATFORM_HAS_LEDS) #if REST_RES_LEDS rest_activate_resource(&resource_leds); #endif #if REST_RES_TOGGLE rest_activate_resource(&resource_toggle); #endif #endif /* PLATFORM_HAS_LEDS */ #if defined (PLATFORM_HAS_LIGHT) && REST_RES_LIGHT SENSORS_ACTIVATE(light_sensor); rest_activate_resource(&resource_light); #endif #if defined (PLATFORM_HAS_BATTERY) && REST_RES_BATTERY SENSORS_ACTIVATE(battery_sensor); rest_activate_resource(&resource_battery); #endif /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); #if defined (PLATFORM_HAS_BUTTON) && REST_RES_EVENT if (ev == sensors_event && data == &button_sensor) { PRINTF("BUTTON\n"); /* Call the event_handler for this application-specific event. */ event_event_handler(&resource_event); } #endif /* PLATFORM_HAS_BUTTON */ } /* while (1) */ PROCESS_END(); }
PROCESS_THREAD(http_server, ev, data) { connection_state_t *conn_state; PROCESS_BEGIN(); /* if static routes are used rather than RPL */ #if !UIP_CONF_IPV6_RPL && !defined (CONTIKI_TARGET_MINIMAL_NET) set_global_address(); configure_routing(); #endif /*!UIP_CONF_IPV6_RPL*/ #ifdef CONTIKI_TARGET_SKY PRINTF("##RF CHANNEL : %d##\n",RF_CHANNEL); #endif //CONTIKI_TARGET_SKY tcp_listen(uip_htons(HTTP_PORT)); /* * We loop for ever, accepting new connections. */ while(1) { PROCESS_WAIT_EVENT_UNTIL(ev == tcpip_event); conn_state = (connection_state_t *)data; if(uip_connected()) { PRINTF("##Connected##\n"); if(init_buffer(HTTP_DATA_BUFF_SIZE)) { conn_state = (connection_state_t*)allocate_buffer(sizeof(connection_state_t)); if (conn_state) { tcp_markconn(uip_conn, conn_state); /*initialize connection state*/ init_connection(conn_state); /*-1 is needed to be able to null terminate the strings in the buffer, especially good for debugging (to have null terminated strings)*/ PSOCK_INIT(&(conn_state->sin), (uint8_t*)conn_state->inputbuf, sizeof(conn_state->inputbuf) - 1); PSOCK_INIT(&(conn_state->sout), (uint8_t*)conn_state->inputbuf, sizeof(conn_state->inputbuf) - 1); PT_INIT(&(conn_state->outputpt)); handle_connection(conn_state); } else { PRINTF("Memory Alloc Error. Aborting!\n"); uip_abort(); } } } else if (uip_aborted() || uip_closed() || uip_timedout()) { if (conn_state) { delete_buffer(); /*Following 2 lines are needed since this part of code is somehow executed twice so it tries to free the same region twice. Potential bug in uip*/ conn_state = NULL; tcp_markconn(uip_conn, conn_state); } } else { handle_connection(conn_state); } } PROCESS_END(); }