void mesh_system_init(void) { if (mesh_initialized == false) { ns_hal_init(app_stack_heap, MBED_MESH_API_HEAP_SIZE, mesh_system_heap_error_handler, NULL); eventOS_scheduler_mutex_wait(); net_init_core(); eventOS_scheduler_mutex_release(); mesh_initialized = true; } }
void app_start(int, char **) { #ifndef MBED_CONF_RTOS_PRESENT // set the baud rate for output printing pc.baud(YOTTA_CFG_K64F_BORDER_ROUTER_BAUD); // set heap size and memory error handler for this application ns_dyn_mem_init(app_stack_heap, APP_DEFINED_HEAP_SIZE, app_heap_error_handler, 0); #else pc.baud(MBED_CONF_APP_TRACE_BAUD_RATE); ns_hal_init(app_stack_heap, APP_DEFINED_HEAP_SIZE, app_heap_error_handler, 0); #endif trace_init(); // set up the tracing library set_trace_print_function(trace_printer); set_trace_config(TRACE_MODE_COLOR | APP_TRACE_LEVEL | TRACE_CARRIAGE_RETURN); const char *mac_src; #ifndef MBED_CONF_RTOS_PRESENT mac_src = STR(YOTTA_CFG_K64F_BORDER_ROUTER_BACKHAUL_MAC_SRC); #else mac_src = STR(MBED_CONF_APP_BACKHAUL_MAC_SRC); #endif if (strcmp(mac_src, "BOARD") == 0) { /* Setting the MAC Address from UID (A yotta function) * Takes UID Mid low and UID low and shuffles them around. */ mbed_mac_address((char *)mac); } else if (strcmp(mac_src, "CONFIG") == 0) { /* MAC is defined by the user through yotta configuration */ #ifndef MBED_CONF_RTOS_PRESENT const uint8_t mac48[] = YOTTA_CFG_K64F_BORDER_ROUTER_BACKHAUL_MAC; #else const uint8_t mac48[] = MBED_CONF_APP_BACKHAUL_MAC; #endif for (uint32_t i = 0; i < sizeof(mac); ++i) { mac[i] = mac48[i]; } } #ifndef MBED_CONF_RTOS_PRESENT // run LED toggler in the Minar scheduler minar::Scheduler::postCallback(mbed::util::FunctionPointer0<void> (toggle_led1).bind()).period(minar::milliseconds(500)); #else led_ticker.attach_us(toggle_led1, 500000); #endif tr_info("Starting K64F border router..."); border_router_start(); }
void mesh_system_init(void) { if (mesh_initialized == false) { #if MBED_CONF_MBED_MESH_API_USE_MALLOC_FOR_HEAP app_stack_heap = malloc(MBED_CONF_MBED_MESH_API_HEAP_SIZE+1); MBED_ASSERT(app_stack_heap); #endif ns_hal_init(app_stack_heap, MBED_CONF_MBED_MESH_API_HEAP_SIZE, mesh_system_heap_error_handler, MBED_CONF_MBED_MESH_API_HEAP_STAT_INFO); eventOS_scheduler_mutex_wait(); net_init_core(); eventOS_scheduler_mutex_release(); mesh_initialized = true; } }
void mesh_system_init(void) { if (mesh_initialized == false) { #ifndef YOTTA_CFG ns_hal_init(app_stack_heap, MBED_MESH_API_HEAP_SIZE, mesh_system_heap_error_handler, NULL); eventOS_scheduler_mutex_wait(); net_init_core(); eventOS_scheduler_mutex_release(); #else ns_dyn_mem_init(app_stack_heap, MBED_MESH_API_HEAP_SIZE, mesh_system_heap_error_handler, NULL); randLIB_seed_random(); platform_timer_enable(); eventOS_scheduler_init(); trace_init(); // trace system needs to be initialized right after eventOS_scheduler_init net_init_core(); /* initialize 6LoWPAN socket adaptation layer */ ns_sal_init_stack(); #endif mesh_initialized = true; } }