示例#1
0
文件: rpl.c 项目: mm3/RIOT
void _dao_handle_send(rpl_dodag_t *dodag)
{
    if ((dodag->ack_received == false) && (dodag->dao_counter < DAO_SEND_RETRIES)) {
        dodag->dao_counter++;
        rpl_send_DAO(dodag, NULL, 0, true, 0);
        dodag->dao_time = timex_set(DEFAULT_WAIT_FOR_DAO_ACK, 0);
        vtimer_remove(&dodag->dao_timer);
        vtimer_set_msg(&dodag->dao_timer, dodag->dao_time,
                       rpl_process_pid, RPL_MSG_TYPE_DAO_HANDLE, dodag);
    }
    else if (dodag->ack_received == false) {
        long_delay_dao(dodag);
    }
}
示例#2
0
void dao_delay_over(void)
{
    while (1) {
        thread_sleep();

        if ((ack_received == false) && (dao_counter < DAO_SEND_RETRIES)) {
            dao_counter++;
            send_DAO(NULL, 0, true, 0);
            dao_time = timex_set(DEFAULT_WAIT_FOR_DAO_ACK, 0);
            vtimer_remove(&dao_timer);
            vtimer_set_wakeup(&dao_timer, dao_time, dao_delay_over_pid);
        }
        else if (ack_received == false) {
            long_delay_dao();
        }
    }
}
示例#3
0
void dao_ack_received()
{
    ack_received = true;
    long_delay_dao();
}
示例#4
0
文件: rpl.c 项目: mm3/RIOT
void rpl_dao_ack_received(rpl_dodag_t *dodag)
{
    dodag->ack_received = true;
    long_delay_dao(dodag);
}