/*FUNCTION********************************************************************** * * Function Name : OSA_TaskSetPriority * Description : This function sets task's priority by task handler. * *END**************************************************************************/ osa_status_t OSA_TaskSetPriority(task_handler_t handler, uint16_t priority) { if (OS_ERR_NONE == OSTaskChangePrio(handler->OSTCBPrio, PRIORITY_OSA_TO_RTOS(priority))) { return kStatus_OSA_Success; } else { return kStatus_OSA_Error; } }
/*FUNCTION********************************************************************** * * Function Name : OSA_TaskCreate * Description : This function is used to create a task and make it ready. * Return kStatus_OSA_Success if register successfully, otherwise return * kStatus_OSA_Error. * *END**************************************************************************/ osa_status_t OSA_TaskCreate(task_t task, uint8_t *name, uint16_t stackSize, task_stack_t *stackMem, uint16_t priority, task_param_t param, bool usesFloat, task_handler_t *handler) { INT8U err; #if OS_CRITICAL_METHOD == 3U OS_CPU_SR cpu_sr = 0U; #endif uint32_t stackSizeLocal = stackSize/sizeof(task_stack_t); /* * To provide unified task piority for upper layer, OSA layer makes conversion. * uC/OS-II's highest 4 priorities are reserved for system, so add 4 here. */ INT8U localPriority = PRIORITY_OSA_TO_RTOS(priority); err = OSTaskCreateExt(task, /* Task pointer*/ param, /* Task input parameter*/ &stackMem[stackSizeLocal - 1], /* Pointer to top of stack*/ localPriority, /* Task priority*/ localPriority, /* Task id. should be the same as priority*/ stackMem, /* Pointer to the bottom of the stack*/ stackSizeLocal, /* Size of the stack*/ (void*)0, /* TCB extension not supported by this abstraction*/ usesFloat ? OS_TASK_OPT_SAVE_FP : OS_TASK_OPT_NONE ); if (OS_ERR_NONE != err) { return kStatus_OSA_Error; } #if OS_TASK_NAME_EN > 0u OSTaskNameSet(localPriority, name, &err); if (OS_ERR_NONE != err) { return kStatus_OSA_Error; } #else name = name; #endif OS_ENTER_CRITICAL(); *handler = OSTCBPrioTbl[localPriority]; OS_EXIT_CRITICAL(); return kStatus_OSA_Success; }
/*FUNCTION********************************************************************** * * Function Name : OSA_TaskSetPriority * Description : This function sets task's priority by task handler. * *END**************************************************************************/ osa_status_t OSA_TaskSetPriority(task_handler_t handler, uint16_t priority) { OS_ERR err; OSTaskChangePrio(handler, PRIORITY_OSA_TO_RTOS(priority), &err); if (OS_ERR_NONE == err) { return kStatus_OSA_Success; } else { return kStatus_OSA_Error; } }
/*FUNCTION********************************************************************** * * Function Name : OSA_TaskCreate * Description : This function is used to create a task and make it ready. * Param[in] : threadDef - Definition of the thread. * task_param - Parameter to pass to the new thread. * Return Thread handle of the new thread, or NULL if failed. * *END**************************************************************************/ osaTaskId_t OSA_TaskCreate(osaThreadDef_t *thread_def,osaTaskParam_t task_param) { osaTaskId_t taskId = NULL; task_handler_t task_handler; if (xTaskCreate( (task_t)thread_def->pthread, /* pointer to the task */ (char const*)thread_def->tname, /* task name for kernel awareness debugging */ thread_def->stacksize/sizeof(portSTACK_TYPE), /* task stack size */ (task_param_t)task_param, /* optional task startup argument */ PRIORITY_OSA_TO_RTOS(thread_def->tpriority), /* initial priority */ &task_handler /* optional task handle to create */ ) == pdPASS) { taskId = (osaTaskId_t)task_handler; } return taskId; }
/*FUNCTION********************************************************************** * * Function Name : OSA_TaskCreate * Description : This function is used to create a task and make it ready. * Return kStatus_OSA_Success if register successfully, otherwise return * kStatus_OSA_Error. * *END**************************************************************************/ osa_status_t OSA_TaskCreate(task_t task, uint8_t *name, uint16_t stackSize, task_stack_t *stackMem, uint16_t priority, task_param_t param, bool usesFloat, task_handler_t *handler) { if (xTaskCreate( task, /* pointer to the task */ (char const*)name, /* task name for kernel awareness debugging */ stackSize/sizeof(portSTACK_TYPE), /* task stack size */ param, /* optional task startup argument */ PRIORITY_OSA_TO_RTOS(priority), /* initial priority */ handler /* optional task handle to create */ ) != pdPASS) { return kStatus_OSA_Error; /* error! probably out of memory */ } return kStatus_OSA_Success; }
/*FUNCTION********************************************************************** * * Function Name : OSA_TaskCreate * Description : This function is used to create a task and make it ready. * Return kStatus_OSA_Success if register successfully, otherwise return * kStatus_OSA_Error. * *END**************************************************************************/ osa_status_t OSA_TaskCreate(task_t task, uint8_t *name, uint16_t stackSize, task_stack_t *stackMem, uint16_t priority, task_param_t param, bool usesFloat, task_handler_t *handler) { OS_ERR err; uint32_t stackSizeLocal = stackSize/sizeof(task_stack_t); OS_PRIO localPriority = PRIORITY_OSA_TO_RTOS(priority); OSTaskCreate(*handler, /* Task handler. */ (CPU_CHAR*)name, /* Task name. */ task, /* Task pointer. */ param, /* Task parameter. */ localPriority, /* Task priority. */ stackMem, /* Stack's base. */ 0, /* Stack limit. */ stackSizeLocal, /* Stack size. */ 0, /* Number of messages can be sent to the task. */ 0, /* Default time_quanta. */ 0, /* TCB extension, not used. */ usesFloat ? OS_OPT_TASK_SAVE_FP : 0, &err ); if (OS_ERR_NONE == err) { return kStatus_OSA_Success; } else { return kStatus_OSA_Error; } }
/*FUNCTION********************************************************************** * * Function Name : OSA_TaskSetPriority * Description : This function sets task's priority by task handler. * *END**************************************************************************/ osa_status_t OSA_TaskSetPriority(task_handler_t handler, uint16_t priority) { vTaskPrioritySet(handler, PRIORITY_OSA_TO_RTOS(priority)); return kStatus_OSA_Success; }
/*FUNCTION********************************************************************** * * Function Name : OSA_TaskSetPriority * Description : This function sets task's priority by task handler. * *END**************************************************************************/ osaStatus_t OSA_TaskSetPriority(osaTaskId_t taskId, osaTaskPriority_t taskPriority) { vTaskPrioritySet((task_handler_t)taskId, PRIORITY_OSA_TO_RTOS(taskPriority)); return osaStatus_Success; }
extern uint8_t mqx_interrupt_stack[]; #endif #define TASK_TEMPLATE_LIST_END {0, 0, 0, 0, 0, 0, 0} /* MQX task template list */ const TASK_TEMPLATE_STRUCT MQX_template_list[] = { /* Task: MainTask */ { /* Task number */ MAINTASK_TASK, /* Entry point */ (TASK_FPTR)main_task, /* Stack size */ MAINTASK_TASK_STACK_SIZE, /* Task priority */ (PRIORITY_OSA_TO_RTOS(MAINTASK_TASK_PRIORITY)), /* Task name */ MAINTASK_TASK_NAME, /* Task attributes */ (MQX_AUTO_START_TASK), /* Task parameter */ (uint32_t)(NULL), /* Task time slice */ (uint32_t)(0U) }, /* Task: ddScheduler */ { /* Task number */ DDSCHEDULER_TASK, /* Entry point */ (TASK_FPTR)runScheduler, /* Stack size */ DDSCHEDULER_TASK_STACK_SIZE, /* Task priority */ (PRIORITY_OSA_TO_RTOS(DDSCHEDULER_TASK_PRIORITY)), /* Task name */ DDSCHEDULER_TASK_NAME, /* Task attributes */ (0), /* Task parameter */ (uint32_t)(NULL), /* Task time slice */ (uint32_t)(0U)