示例#1
0
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;
}
示例#2
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;
}