Task abstraction layer

This GOAL core module connects the specific operating system to other GOAL components via a generic abstraction layer. The task abstraction layer allows to create and shutdown a task, to configure the task priority and to handle the state machine for the task and requires indication functions containing the special operating system functions. The indication functions are described in Chapter: Platform API.
Task priorities are generalized to the following categories:

  • GOAL_TASK_PRIO_LOWEST

  • GOAL_TASK_PRIO_MEDIUM

  • GOAL_TASK_PRIO_HIGHEST

 

  • GOAL files:

    • goal_task.[h,c]

  • example:

    • …\goal\appl\00410_goal\task

Configuration


The following compiler-defines are available to configure the task abstraction layer:

  • GOAL_CONFIG_TASK:

    • 0: task abstraction layer is disabled (default)

    • 1: task abstraction layer is enabled

Platform API


GOAL requires the following indication function to connect a specific operating system to the task abstraction layer:

Table: goal_tgtTaskCreate()

Prototype

GOAL_STATUS_T goal_tgtTaskCreate(GOAL_TASK_T *pTask)

Description

This indication function allows to create a task specified by the task-handle.

Parameters

pTask

handle for the task

Return values

GOAL return status, see Chapter: GOAL status

Category

mandatory


Table: goal_tgtTaskStart()

Prototype

GOAL_STATUS_T goal_tgtTaskStart(GOAL_TASK_T *pTask)

Description

This indication function allows to start the task specified by the task-handle.

Parameters

pTask

handle for the task

Return values

GOAL return status, see Chapter: GOAL status

Category

mandatory


Table: goal_tgtTaskExit()

Prototype

GOAL_STATUS_T goal_tgtTaskExit(void)

Description

This indication function allows to shutdown the current task.

Parameters

none

Return values

GOAL return status, see Chapter: GOAL status

Category

mandatory

 

Table: goal_tgtTaskMsSleep()

Prototype

GOAL_STATUS_T goal_tgtTaskMsSleep(uint32_t msReq, uint32_t *pMsRem)

Description

This indication function allows to put the current task to sleep.

Parameters



msReq

time in ms to sleep

pMsRem

returns the remaining time in ms if sleep was interrupted and this function is available on the specific operating system

Return values

GOAL return status, see Chapter: GOAL status

Category

mandatory


Table: goal_tgtTaskTestSelf()

Prototype

GOAL_STATUS_T goal_tgtTaskTestSelf(GOAL_TASK_T *pTask)

Description

This indication function allows to check if the ID of the current task matches to the task-handle.

Parameters

pTask

handle for the task

Return values

GOAL return status, see Chapter: GOAL status

Category

mandatory


Table: goal_tgtTaskPrioSet()

Prototype

GOAL_STATUS_T goal_tgtTaskPrioSet(GOAL_TASK_T *pTask, uint32_t prio)

Description

This indication function allows to configure the priority of the specified task.

Parameters



pTask

handle for the task

Prio

desired priority of the task:

  • GOAL_TASK_PRIO_LOWEST

  • GOAL_TASK_PRIO_MEDIUM

  • GOAL_TASK_PRIO_HIGHEST

Return values

GOAL return status, see Chapter: GOAL status

Category

mandatory


Table: goal_tgtTaskSuspend()

Prototype

GOAL_STATUS_T goal_tgtTaskSuspend(GOAL_TASK_T *pTask)

Description

This indication function allows to suspend the execution of the task specified by the task-handle.

Parameters

pTask

handle for the task

Return values

GOAL return status, see Chapter: GOAL status

Category

mandatory


Table: goal_tgtTaskResume()

Prototype

GOAL_STATUS_T goal_tgtTaskResume(GOAL_TASK_T *pTask)

Description

This indication function allows to resume the execution of the task specified by the task-handle.

Parameters

pTask

handle for the task

Return values

GOAL return status, see Chapter: GOAL status

Category

mandatory