//Reads button presses and adds to variable for LEDs PROCESS_THREAD(authority_process, ev, data){ PROCESS_BEGIN(); #ifdef DEBUG volatile unsigned int *resetreas_reg = (unsigned int*) 0x40000400; if(*resetreas_reg != 1){ printf("\n Reset reason: %d \n", *resetreas_reg); PROCESS_WAIT_EVENT(); //This single line made things work and not crash? What is this unstable hell-machine? } *resetreas_reg = 0xF00F; #endif rest_init_engine(); #if WITH_IPSO ipso_objects_init(); #endif rest_activate_resource(&res_door, "doors/door"); while(1){ PROCESS_WAIT_EVENT(); //wait for requests and process data } PROCESS_END(); }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(coap_server_process, ev, data) { PROCESS_BEGIN(); printf("CC26XX CoAP Server\n"); /* Initialize the REST engine. */ rest_init_engine(); rest_activate_resource(&res_batmon_temp, "sen/batmon/temp"); rest_activate_resource(&res_batmon_volt, "sen/batmon/voltage"); rest_activate_resource(&res_device_hw, "dev/mdl/hw"); rest_activate_resource(&res_device_sw, "dev/mdl/sw"); rest_activate_resource(&res_device_uptime, "dev/uptime"); rest_activate_resource(&res_device_cfg_reset, "dev/cfg_reset"); rest_activate_resource(&res_parent_rssi, "net/parent/RSSI"); rest_activate_resource(&res_parent_ip, "net/parent/IPv6"); #if RF_BLE_ENABLED rest_activate_resource(&res_ble_advd, "dev/ble_advd"); #endif start_board_resources(); /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); } PROCESS_END(); }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(start_app, ev, data) { PROCESS_BEGIN(); static int is_coordinator = 0; memset(rx_buf, '\0', sizeof(rx_buf)); /* Define process that handles data */ process_start(&rx_data_process ,NULL); /* Initialise UART1 */ uart1_init(UART1_BAUD_RATE); /* Callback received byte */ uart1_set_input(handleRxChar); /* Start network stack */ if(is_coordinator) { uip_ipaddr_t prefix; uip_ip6addr(&prefix, 0xaaaa, 0, 0, 0, 0, 0, 0, 0); rpl_tools_init(&prefix); } else { rpl_tools_init(NULL); } printf("Starting RPL node\n"); rest_init_engine(); rest_activate_resource(&resource_coap_rx_uart1, "UART1-RX"); rest_activate_resource(&resource_coap_tx_uart1, "UART1-TX"); PROCESS_END(); }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(start_app, ev, data) { PROCESS_BEGIN(); static int is_coordinator = 0; /* Switch off dongle leds */ /* Initialise ct timer, but don't let it run yet */ ctimer_set(&ct, TOGGLE_TIME, ct_callback, NULL); ctimer_stop(&ct); /* Start net stack */ if(is_coordinator) { uip_ipaddr_t prefix; uip_ip6addr(&prefix, 0xaaaa, 0, 0, 0, 0, 0, 0, 0); rpl_tools_init(&prefix); } else { rpl_tools_init(NULL); } printf("Starting RPL node\n"); rest_init_engine(); rest_activate_resource(&resource_led_toggle, "Dongle/LED-toggle"); 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); /* Initialize the REST engine. */ rest_init_engine(); /* Activate the application-specific resources. */ rest_activate_resource(&resource_helloworld); rest_activate_resource(&resource_leds); rest_activate_resource(&resource_toggle); leds_on(0); /* 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"); 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(borderest_process, ev, data) { static struct etimer et; PROCESS_BEGIN(); /* While waiting for the prefix to be sent through the SLIP connection, the future * border router can join an existing DAG as a parent or child, or acquire a default * router that will later take precedence over the SLIP fallback interface. * Prevent that by turning the radio off until we are initialized as a DAG root. */ prefix_set = 0; NETSTACK_MAC.off(0); PROCESS_PAUSE(); SENSORS_ACTIVATE(button_sensor); PRINTF("RPL-Border router started\n"); #if 0 /* The border router runs with a 100% duty cycle in order to ensure high packet reception rates. Note if the MAC RDC is not turned off now, aggressive power management of the cpu will interfere with establishing the SLIP connection */ NETSTACK_MAC.off(1); #endif /* Request prefix until it has been received */ while(!prefix_set) { etimer_set(&et, CLOCK_SECOND); request_prefix(); PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); } /* Now turn the radio on, but disable radio duty cycling. * Since we are the DAG root, reception delays would constrain mesh throughbut. */ NETSTACK_MAC.off(1); #if DEBUG || 1 print_local_addresses(); #endif rest_init_engine(); activate_coap_resources(); leds_init(); while(1) { PROCESS_YIELD(); if (ev == sensors_event && data == &button_sensor) { PRINTF("Initiating global repair\n"); rpl_repair_root(RPL_DEFAULT_INSTANCE); leds_toggle(LEDS_ALL); } } PROCESS_END(); }
/*----------------------------------------------------------------------------*/ PROCESS_THREAD(tres_process, ev, data) { PROCESS_BEGIN(); srand(node_id); rest_init_engine(); tres_init(); SENSORS_ACTIVATE(light_sensor); rest_activate_periodic_resource(&periodic_resource_light); rplinfo_activate_resources(); static coap_packet_t request[1]; /* This way the packet can be treated as pointer as usual. */ SERVER_NODE(&server_ipaddr); /* receives all CoAP messages */ coap_receiver_init(); int wait_time = getRandUint(MAX_WAITING); int base_wait = BASE_WAITING; static int g_time=0; static char content[12]; etimer_set(&et, (wait_time + base_wait) * CLOCK_SECOND); while(1) { PROCESS_YIELD(); if (etimer_expired(&et)) break; } etimer_reset(&et); etimer_set(&et, TOGGLE_INTERVAL * CLOCK_SECOND); while(1) { PROCESS_YIELD(); if (etimer_expired(&et)) { coap_init_message(request, COAP_TYPE_NON, COAP_POST, 0 ); coap_set_header_uri_path(request, service_urls[1]); coap_set_payload(request, content, snprintf(content, sizeof(content), "%d", g_time++)); coap_transaction_t *transaction; request->mid = coap_get_mid(); if ((transaction = coap_new_transaction(request->mid, &server_ipaddr, REMOTE_PORT))) { transaction->packet_len = coap_serialize_message(request, transaction->packet); coap_send_transaction(transaction); } etimer_reset(&et); } } /* while (1) */ PROCESS_END(); }
/*----------------------------------------------------------------------------*/ PROCESS_THREAD(tres_process, ev, data) { PROCESS_BEGIN(); srand(node_id); rest_init_engine(); tres_init(); rest_activate_resource(&actuator, "actuator"); rplinfo_activate_resources(); sprintf(setpoint, "0"); #if PYOT_KEEPALIVE static coap_packet_t request[1]; /* This way the packet can be treated as pointer as usual. */ SERVER_NODE(&server_ipaddr); int wait_time = (unsigned int)(rand() % MAX_WAITING); int base_wait = BASE_WAITING; static int g_time=0; static char content[12]; etimer_set(&et, (wait_time + base_wait) * CLOCK_SECOND); while(1) { PROCESS_YIELD(); //PROCESS_WAIT_EVENT(); if (etimer_expired(&et)) break; } etimer_reset(&et); etimer_set(&et, TOGGLE_INTERVAL * CLOCK_SECOND); while(1) { PROCESS_YIELD(); if (etimer_expired(&et)) { coap_init_message(request, COAP_TYPE_NON, COAP_POST, 0 ); coap_set_header_uri_path(request, "/rd"); coap_set_payload(request, content, snprintf(content, sizeof(content), "%d", g_time++)); //PRINT6ADDR(&server_ipaddr); //PRINTF(" : %u\n", UIP_HTONS(REMOTE_PORT)); coap_transaction_t *transaction; request->mid = coap_get_mid(); if ((transaction = coap_new_transaction(request->mid, &server_ipaddr, REMOTE_PORT))) { transaction->packet_len = coap_serialize_message(request, transaction->packet); coap_send_transaction(transaction); } etimer_reset(&et); } } /* while (1) */ #endif 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 COAP SERVER--------------------------------------*/ PROCESS_THREAD(coap_server, ev, data) { PROCESS_BEGIN(); PROCESS_PAUSE(); PRINTF("Starting Erbium 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); /* 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_event, "test/event"); #if PLATFORM_HAS_BUTTON SENSORS_ACTIVATE(button_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(); } #endif /* PLATFORM_HAS_BUTTON */ } /* while (1) */ PROCESS_END(); }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(coap_sample, ev, data) { PROCESS_BEGIN(); //rs232_redirect_stdout(RS232_PORT_1); co2_init(); /* Initialize the REST engine. */ rest_init_engine(); /* Activate the application-specific resources. */ rest_activate_periodic_resource(&periodic_resource_co2); PROCESS_END(); }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(coap_server_process, ev, data) { PROCESS_BEGIN(); debug_coap("Server CoAP\n"); leds_init(); rest_init_engine(); start_board_resources(); while(1) { PROCESS_WAIT_EVENT(); } PROCESS_END(); }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(server, ev, data) { PROCESS_BEGIN(); SENSORS_ACTIVATE(button_sensor); rest_init_engine(); rest_activate_resource(&resource_example, "example"); rest_activate_resource(&resource_per, "periodic"); while(1) { PROCESS_WAIT_EVENT(); if(ev == sensors_event && data == &button_sensor){ //leds_toggle(LEDS_ALL); printf("Button pressed\n"); resource_example.trigger(); } } 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(start_app, ev, data) { PROCESS_BEGIN(); static int is_coordinator = 0; /* Start network stack */ if(is_coordinator) { uip_ipaddr_t prefix; uip_ip6addr(&prefix, UIP_DS6_DEFAULT_PREFIX, 0, 0, 0, 0, 0, 0, 0); rpl_tools_init(&prefix); } else { rpl_tools_init(NULL); } printf("Starting RPL node\n"); rest_init_engine(); rest_activate_resource(&resource_set_tx_power, "Set-TX-Power"); rest_activate_resource(&resource_get_tx_power, "Get-TX-Power"); PROCESS_END(); }
int8_t demo_coapInit(void) { // LOG_INFO("%s\n\r","Starting CoAP Example Server"); /* Initialize the REST engine. */ rest_init_engine(); /* * Bind the resources to their Uri-Path. * WARNING: Activating twice only means alternatle path, not two instances! * All static variables are the same for each URI path. */ rest_activate_resource(&res_temp, "sensors/temperature"); rest_activate_resource(&res_push, "test/push"); rest_activate_resource(&res_toggle, "actuators/LED"); rest_activate_resource(&res_led_toggle, "actuators/LED_toggle"); rest_activate_resource(&res_rf_info, "status/rf_info"); return 1; }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(start_app, ev, data) { PROCESS_BEGIN(); static int is_coordinator = 0; /* Start RICH stack */ if(is_coordinator) { uip_ipaddr_t prefix; uip_ip6addr(&prefix, 0xaaaa, 0, 0, 0, 0, 0, 0, 0); rich_init(&prefix); } else { rich_init(NULL); } printf("Starting RPL node\n"); rest_init_engine(); rest_activate_resource(&resource_set_tx_power, "Set-TX-Power"); rest_activate_resource(&resource_get_tx_power, "Get-TX-Power"); PROCESS_END(); }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(coap_sample, ev, data) { PROCESS_BEGIN(); /* Initialize the REST engine. */ rest_init_engine(); /* Activate the application-specific resources. */ rest_activate_resource(&resource_camera); rest_activate_resource(&resource_take); rest_activate_resource(&resource_size); rest_activate_resource(&resource_count); rest_activate_resource(&resource_packet); #if UIP_CONF_IPV6_RPL rest_activate_resource(&resource_route); #endif rest_activate_periodic_resource(&periodic_resource_temperature); rest_activate_periodic_resource(&periodic_resource_light); rest_activate_periodic_resource(&periodic_resource_voltage); PROCESS_END(); }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(border_router_process, ev, data) { static struct etimer et; PROCESS_BEGIN(); /* While waiting for the prefix to be sent through the SLIP connection, the future * border router can join an existing DAG as a parent or child, or acquire a default * router that will later take precedence over the SLIP fallback interface. * Prevent that by turning the radio off until we are initialized as a DAG root. */ prefix_set = 0; PROCESS_PAUSE(); PRINTF("RPL-Border router started\n"); /* Request prefix until it has been received */ while(!prefix_set) { etimer_set(&et, CLOCK_SECOND); request_prefix(); PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); PRINTF("Waiting for prefix\n"); } PRINTF("Obtained prefix: "); uip_debug_ipaddr_print(&prefix); PRINTF("\n"); rpl_tools_init(&prefix); rest_init_engine(); rest_activate_resource(&resource_get_rssi, "Get-RSSI"); rest_activate_resource(&resource_get_last_rssi, "Get-Last-RSSI"); PROCESS_END(); }
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); /* Initialize the REST engine. */ rest_init_engine(); /* Activate the application-specific resources. */ rest_activate_resource(&helloworld, "hello"); /* Define application-specific events here. */ while(1) { PROCESS_WAIT_EVENT(); } /* while (1) */ PROCESS_END(); }
CoapInfo * coap_Init(const char * ipAddress, int port, int logLevel) { rest_init_engine(); return &coapInfo; }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(rest_server_example, ev, data) { uip_ipaddr_t server_ipaddr; uip_ds6_maddr_t *rv; PROCESS_BEGIN(); uip_ip6addr(&server_ipaddr, 0xff1e, 0, 0, 0, 0, 0, 0x89, 0xabcd); rv = uip_ds6_maddr_add(&server_ipaddr); if(rv) { PRINTF("Joined multicast group "); PRINT6ADDR(&uip_ds6_maddr_lookup(&server_ipaddr)->ipaddr); PRINTF("\n"); } print_local_addresses(); #ifdef WITH_DTLS dtls_set_log_level(LOG_DEBUG); set_dtls_handler(get_psk_key, NULL); #endif /* WITH_DTLS */ PRINTF("\r\nStarting Erbium Example Server\r\n"); /* Initialize the REST engine. */ rest_init_engine(); /** Creating an entry in routing table to able to answer to multicast request with the first message */ uip_ipaddr_t client_addr; uip_lladdr_t lladdr = {{0x04,0x0f,0x07,0xb2,0x00, 0x12,0x4b,0x00}}; uip_ip6addr(&client_addr, 0xfe80, 0, 0, 0, 0x060f, 0x07b2, 0x0012, 0x4b00); uip_ds6_nbr_add(&client_addr, &lladdr, 0, 1); #ifdef WITH_DTLS session_t session; /**< Creating a secure session */ uip_ipaddr_copy(&session.addr, &server_ipaddr); session.port = UIP_HTONS(COAP_DEFAULT_PORT+1); session.size = sizeof(session.addr) + sizeof(session.port); session.ifindex = 1; #ifdef WITH_MULTICAST secure_group_creation(&session); /**< Create a DTLS group in case of multicast communication */ #endif // WITH_MULTICAST #endif // WITH_DTLS /* Activate the application-specific resources. */ #if REST_RES_HELLO rest_activate_resource(&resource_helloworld); #endif #if REST_RES_BATTERY SENSORS_ACTIVATE(battery_sensor); rest_activate_resource(&resource_battery); #endif 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(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(felicia_main, ev, data) { static struct etimer timer; PROCESS_BEGIN(); /* Initialize the CoAP server and activate resources */ rest_init_engine(); #if PLATFORM_HAS_LEDS #ifdef RESOURCE_LED0_CONF_LED rest_activate_resource(&resource_led, (char *)"led"); rest_activate_resource(&resource_led0, (char *)"led/0"); #endif #ifdef RESOURCE_LED1_CONF_LED rest_activate_resource(&resource_led1, (char *)"led/1"); #endif #endif rest_activate_resource(&resource_ipv6_neighbors, (char *)"ipv6/neighbors"); rest_activate_resource(&resource_rpl_info, (char *)"rpl-info"); rest_activate_resource(&resource_rpl_parent, (char *)"rpl-info/parent"); rest_activate_resource(&resource_rpl_rank, (char *)"rpl-info/rank"); rest_activate_resource(&resource_rpl_link_metric, (char *)"rpl-info/link-metric"); #if PLATFORM_HAS_SLIDE_SWITCH SENSORS_ACTIVATE(slide_switch_sensor); #endif #if PLATFORM_HAS_BUTTON SENSORS_ACTIVATE(button_sensor); rest_activate_resource(&resource_push_button_event, (char *)"push-button"); #endif #if PLATFORM_HAS_SENSORS rest_activate_resource(&resource_temperature, (char *)"temperature"); #endif PROCESS_PAUSE(); #if WITH_WEBSERVER process_start(&node_webserver_simple_process, NULL); #endif #if WITH_IPSO /* Initialize the OMA LWM2M engine */ lwm2m_engine_init(); /* Register default LWM2M objects */ lwm2m_engine_register_default_objects(); /* Register default IPSO objects */ ipso_objects_init(); setup_lwm2m_servers(); #endif while(1) { etimer_set(&timer, CLOCK_SECOND * 5); PROCESS_WAIT_EVENT(); #if PLATFORM_HAS_BUTTON if(ev == sensors_event && data == &button_sensor) { resource_push_button_event.trigger(); PRINTF("Button pressed!\n"); } #endif #if PLATFORM_HAS_SLIDE_SWITCH if(ev == sensors_event && data == &slide_switch_sensor) { PRINTF("Sliding switch is %s\n", slide_switch_sensor.value(0) ? "on" : "off"); } #endif } 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(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(poti, ev, data) { static struct etimer loop_timer; PROCESS_BEGIN(); /* Initialize the REST engine. */ rest_init_engine (); SERVER_NODE (&server_ipaddr); adc_init (); /* Activate the application-specific resources. */ #if PLATFORM_HAS_BATTERY SENSORS_ACTIVATE(battery_sensor); rest_activate_resource (&res_battery, "s/battery"); #endif rest_activate_resource (&res_server_ip, "poti/ip"); rest_activate_resource (&res_server_resource, "poti/resource"); rest_activate_resource (&res_interval, "poti/interval"); etimer_set (&loop_timer, LOOP_INTERVAL); /* Define application-specific events here. */ while(1) { static int count = 0; static int lastval = -1; static coap_packet_t request [1]; /* Array: treat as pointer */ uint8_t val = 127; PROCESS_WAIT_EVENT(); if (etimer_expired (&loop_timer)) { uint16_t sum = 0; int i; count++; adc_setup (ADC_DEFAULT, A5); for (i=0; i<5; i++) { sum += adc_read (); clock_delay_usec (50); } adc_fin (); val = (sum / 5) >> 2; if ((interval > 0 && count > interval) || (val != lastval)) { char buf [4]; coap_transaction_t *transaction; sprintf (buf, "%d", val); lastval = val; printf ("Sending Value: %s\n", buf); coap_init_message (request, COAP_TYPE_NON, COAP_PUT, 0); coap_set_header_uri_path (request, server_resource); coap_set_header_content_format (request, REST.type.TEXT_PLAIN); coap_set_payload (request, buf, strlen (buf)); request->mid = coap_get_mid (); transaction = coap_new_transaction (request->mid, &server_ipaddr, REMOTE_PORT); transaction->packet_len = coap_serialize_message (request, transaction->packet); coap_send_transaction (transaction); count = 0; } etimer_reset (&loop_timer); } } /* while (1) */
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(); }