/*---------------------------------------------------------------------------------------------------------------------
Updates the AT command client by flushing pending commands.
---------------------------------------------------------------------------------------------------------------------*/
C_RESULT ardrone_tool_update()
{
	int delta;

	C_RESULT res = C_OK;

	// Update subsystems & custom tool
	if( need_update )
	{
	
		ardrone_timer_update(&ardrone_tool_timer);

		ardrone_tool_input_update();
		res = ardrone_tool_update_custom();

		if( send_com_watchdog == TRUE )
		{
			ardrone_at_reset_com_watchdog();
			send_com_watchdog = FALSE;
		}
		// Send all pushed messages
		ardrone_at_send();

		need_update = FALSE;
	}

	delta = ardrone_timer_delta_ms(&ardrone_tool_timer);
	if( delta >= ArdroneToolRefreshTimeInMs)
	{
		// Render frame
		res = ardrone_tool_display_custom();
		need_update = TRUE;
	}
	else
	{
		Sleep((ArdroneToolRefreshTimeInMs - delta));
	}

	return res;
}
C_RESULT ardrone_tool_update()
{
    int delta;

    C_RESULT res = C_OK; //C_RESULT 是定义的宏 其对应的是int类型,C_OK也是,其对应的值是0

    if( need_update )
    {
        ardrone_timer_update(&ardrone_tool_timer);//更新时间,为什么要这么处理

        ardrone_control();
        res = ardrone_tool_update_custom();

        if( send_com_watchdog == TRUE )
        {
            ardrone_at_reset_com_watchdog();
            send_com_watchdog = FALSE;
        }//watchdog看门狗防止程序出现死循环,不受控制
        ardrone_at_send();

        need_update = FALSE;
    }

    delta = ardrone_timer_delta_ms(&ardrone_tool_timer);
    if( delta >= ArdroneToolRefreshTimeInMs)
    {
        res = ardrone_tool_display_custom();
        need_update = TRUE;
    }
    else
    {
        Sleep((ArdroneToolRefreshTimeInMs - delta));
    }

    return res;
}