/**************************************************************************//**
 * @item     CosyOS-III Kernel
 * @file     os_starter.c
 * @brief    任务启动器（Starter）
 * @author   迟凯峰
 * @version  v3.0.0
 * @date     2026.07.21
 ******************************************************************************/

#include "os_var.h"
#include "os_api.h"
#include "sv_com.h"
#include "sv_create.h"
#include "sv_task.h"
#include "ur_api.h"

/**
 \brief      任务启动器
 \param[in]  任务名称      Starter
 \param[in]  任务优先级    SYSCFG_TASKPRIORITY - (SYSCFG_DEBUGGING ? 3 : 1)
 \param[in]  任务栈大小    SYSCFG_STACKSIZE_STARTER
 \param[in]  安全运行时    0
 \param[in]  任务名称文本<br>
             遗产模式："Starter"<br>
             标准/兼容模式：[中文："任务启动器"，英文："Starter"]
 \return     无
 */
#if (SYSCFG_DEBUG_LANGUAGE == 0)
#define _taskname "Starter"
#else
#define _taskname "\xC8\xCE\xCE\xF1\xC6\xF4\xB6\xAF\xC6\xF7" /*!< "任务启动器" */
#endif
sCat2Str
(
	SYSCFG_STARTERCREATE,
	CreateTask(Starter, SYSCFG_TASKPRIORITY - (SYSCFG_DEBUGGING ? 3 : 1), SYSCFG_STACKSIZE_STARTER, 0, _taskname)
)
{
//	uScheduleLock();
	if(true){
		uExtTask(Sysidle);
		uStartTask_Ready(Sysidle);
	}
	#if (OS_TIMINTTOTAL > 0 || OS_TIMQRYTOTAL > 0)
	if(true){
		s_u8_t i;
		#if (OS_TIMINTTOTAL > 0)
		i = OS_TIMINTTOTAL;
		while(i--){
			if(s_timint_handle[i]->hookortask){
				sStartTask_TimInt(i);
			}
		}
		#endif
		#if (OS_TIMQRYTOTAL > 0)
		i = OS_TIMQRYTOTAL;
		while(i--){
			if(s_timqry_handle[i]->hookortask){
				sStartTask_TimQry(i);
			}
		}
		#endif
	}
	#endif
//	uScheduleUnlock();
	if(true){
		void start_hook(void);
		start_hook();
	}
	uDeleteTasking();
}
#undef _taskname
