/*---------------------------------------------------------------------------*/ PROCESS_THREAD(border_router_process, ev, data) { static struct etimer et; rpl_dag_t *dag; PROCESS_BEGIN(); prefix_set = 0; PROCESS_PAUSE(); PRINTF("RPL-Border router started\n"); slip_config_handle_arguments(contiki_argc, contiki_argv); /* tun init is also responsible for setting up the SLIP connection */ tun_init(); while(!mac_set) { etimer_set(&et, CLOCK_SECOND); request_mac(); PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); } if(slip_config_ipaddr != NULL) { uip_ipaddr_t prefix; if(uiplib_ipaddrconv((const char *)slip_config_ipaddr, &prefix)) { PRINTF("Setting prefix "); PRINT6ADDR(&prefix); PRINTF("\n"); set_prefix_64(&prefix); } else { PRINTF("Parse error: %s\n", slip_config_ipaddr); exit(0); } } dag = rpl_set_root(RPL_DEFAULT_INSTANCE,(uip_ip6addr_t *)dag_id); if(dag != NULL) { rpl_set_prefix(dag, &prefix, 64); PRINTF("created a new RPL dag\n"); } #if DEBUG print_local_addresses(); #endif /* The border router runs with a 100% duty cycle in order to ensure high packet reception rates. */ NETSTACK_MAC.off(1); while(1) { etimer_set(&et, CLOCK_SECOND * 2); PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); /* do anything here??? */ } PROCESS_END(); }
PROCESS_THREAD(cetic_6lbr_process, ev, data) { PROCESS_BEGIN(); cetic_6lbr_startup = clock_seconds(); #if CONTIKI_TARGET_NATIVE slip_config_handle_arguments(contiki_argc, contiki_argv); #endif load_nvm_config(); platform_init(); process_start(ð_drv_process, NULL); while(!ethernet_ready) { PROCESS_PAUSE(); } process_start(&tcpip_process, NULL); PROCESS_PAUSE(); #if CETIC_NODE_INFO node_info_init(); #endif packet_filter_init(); cetic_6lbr_init(); #if WEBSERVER process_start(&webserver_nogui_process, NULL); #endif #if UDPSERVER process_start(&udp_server_process, NULL); #endif printf("CETIC 6LBR Started\n"); #if CONTIKI_TARGET_NATIVE PROCESS_WAIT_EVENT(); etimer_set(&reboot_timer, CLOCK_SECOND); PROCESS_WAIT_EVENT(); printf("Exiting...\n"); exit(0); #endif PROCESS_END(); }
void platform_init(void) { slip_config_handle_arguments(contiki_argc, contiki_argv); if (sixlbr_config_watchdog_interval) { process_start(&native_6lbr_watchdog, NULL); } else { LOG6LBR_WARN("6LBR Watchdog disabled\n"); } native_config_init(); native_config_handlers_init(); plugins_load(); struct sigaction action; /* Trap SIGUSR1. */ action.sa_flags = SA_RESTART; action.sa_handler = reload_trigger; sigaction(SIGUSR1, &action, NULL); }
PROCESS_THREAD(cetic_6lbr_process, ev, data) { PROCESS_BEGIN(); cetic_6lbr_startup = clock_seconds(); #if CONTIKI_TARGET_NATIVE slip_config_handle_arguments(contiki_argc, contiki_argv); if (watchdog_interval) { process_start(&native_6lbr_watchdog, NULL); } else { LOG6LBR_WARN("6LBR Watchdog disabled\n"); } #endif LOG6LBR_INFO("Starting 6LBR version " CETIC_6LBR_VERSION " (" CONTIKI_VERSION_STRING ")\n"); load_nvm_config(); platform_init(); process_start(ð_drv_process, NULL); while(!ethernet_ready) { PROCESS_PAUSE(); } //clean up any early packet uip_len = 0; process_start(&tcpip_process, NULL); PROCESS_PAUSE(); #if CETIC_NODE_INFO node_info_init(); #endif packet_filter_init(); cetic_6lbr_init(); #if WEBSERVER process_start(&webserver_nogui_process, NULL); #endif #if UDPSERVER process_start(&udp_server_process, NULL); #endif LOG6LBR_INFO("CETIC 6LBR Started\n"); #if CONTIKI_TARGET_NATIVE PROCESS_WAIT_EVENT(); etimer_set(&reboot_timer, CLOCK_SECOND); PROCESS_WAIT_EVENT(); switch (cetic_6lbr_restart_type) { case CETIC_6LBR_RESTART: LOG6LBR_INFO("Exiting...\n"); exit(0); break; case CETIC_6LBR_REBOOT: LOG6LBR_INFO("Rebooting...\n"); system("reboot"); break; case CETIC_6LBR_HALT: LOG6LBR_INFO("Halting...\n"); system("halt"); break; default: //We should never end up here... exit(1); } //We should never end up here... exit(1); #endif PROCESS_END(); }