static int8_t net_load_balance_api_get_set_load_level_cb(void *lb_user, uint8_t load_level) { //Call DODAG preference protocol_interface_info_entry_t *interface_ptr = lb_user; if (!interface_ptr->rpl_domain || interface_ptr->rpl_domain != protocol_6lowpan_rpl_domain || !protocol_6lowpan_rpl_root_dodag) { return -1; } if (load_level > RPL_DODAG_PREF_MASK) { load_level = RPL_DODAG_PREF_MASK; } rpl_control_set_dodag_pref(protocol_6lowpan_rpl_root_dodag, RPL_DODAG_PREF_MASK - load_level); return 0; }
int8_t arm_nwk_6lowpan_rpl_dodag_pref_set(int8_t interface_id, uint8_t preference) { /* New code version - specifying interface ID makes no sense - fudge to let it increase main RPL root */ protocol_interface_info_entry_t *cur; cur = protocol_stack_interface_info_get_by_id(interface_id); if (!cur || !cur->rpl_domain || cur->rpl_domain != protocol_6lowpan_rpl_domain || !protocol_6lowpan_rpl_root_dodag) { return -1; } if (preference > RPL_DODAG_PREF_MASK) { return -2; } rpl_control_set_dodag_pref(protocol_6lowpan_rpl_root_dodag, preference); return 0; }