uint8_t rpl_init(transceiver_type_t trans, uint16_t rpl_address) { mutex_init(&rpl_send_mutex); mutex_init(&rpl_recv_mutex); if(rpl_address == 0) { return SIXLOWERROR_ADDRESS; } /* initialize routing table */ rpl_clear_routing_table(); init_trickle(); rpl_process_pid = thread_create(rpl_process_buf, RPL_PROCESS_STACKSIZE, PRIORITY_MAIN - 1, CREATE_STACKTEST, rpl_process, "rpl_process"); /* INSERT NEW OBJECTIVE FUNCTIONS HERE */ objective_functions[0] = rpl_get_of0(); /* objective_functions[1] = rpl_get_of_ETX() */ sixlowpan_init(trans, rpl_address, 0); /* Wir benötigen einen Link Local prefix, um unsere entsprechende Addresse im Netz abzufragen */ ipv6_addr_t ll_address; ipv6_set_ll_prefix(&ll_address); ipv6_get_saddr(&my_address, &ll_address); set_rpl_process_pid(rpl_process_pid); return SUCCESS; }
uint8_t rpl_init(transceiver_type_t trans, uint16_t rpl_address) { mutex_init(&rpl_send_mutex); mutex_init(&rpl_recv_mutex); if (rpl_address == 0) { return SIXLOWERROR_ADDRESS; } /* initialize routing table */ rpl_clear_routing_table(); init_trickle(); rpl_process_pid = thread_create(rpl_process_buf, RPL_PROCESS_STACKSIZE, PRIORITY_MAIN - 1, CREATE_STACKTEST, rpl_process, "rpl_process"); /* INSERT NEW OBJECTIVE FUNCTIONS HERE */ objective_functions[0] = rpl_get_of0(); /* objective_functions[1] = rpl_get_of_ETX() */ sixlowpan_lowpan_init(trans, rpl_address, 0); /* need link local prefix to query _our_ corresponding address */ ipv6_addr_t ll_address; ipv6_addr_set_link_local_prefix(&ll_address); ipv6_iface_get_best_src_addr(&my_address, &ll_address); ipv6_register_rpl_handler(rpl_process_pid); /* initialize ETX-calculation if needed */ if (RPL_DEFAULT_OCP == 1) { DEBUG("INIT ETX BEACONING\n"); etx_init_beaconing(&my_address); } return SIXLOWERROR_SUCCESS; }
uint8_t rpl_init(int if_id) { mutex_init(&rpl_send_mutex); mutex_init(&rpl_recv_mutex); rpl_instances_init(); /* initialize routing table */ rpl_clear_routing_table(); init_trickle(); rpl_process_pid = thread_create(rpl_process_buf, RPL_PROCESS_STACKSIZE, PRIORITY_MAIN - 1, CREATE_STACKTEST, rpl_process, "rpl_process"); /* INSERT NEW OBJECTIVE FUNCTIONS HERE */ objective_functions[0] = rpl_get_of0(); objective_functions[1] = rpl_get_of_mrhof(); sixlowpan_lowpan_init_interface(if_id); /* need link local prefix to query _our_ corresponding address */ ipv6_addr_t ll_address; ipv6_addr_set_link_local_prefix(&ll_address); ipv6_net_if_get_best_src_addr(&my_address, &ll_address); ipv6_register_rpl_handler(rpl_process_pid); /* initialize ETX-calculation if needed */ if (RPL_DEFAULT_OCP == 1) { DEBUG("%s, %d: INIT ETX BEACONING\n", __FILE__, __LINE__); etx_init_beaconing(&my_address); } return SIXLOWERROR_SUCCESS; }