13-6
Programmer’s Manual
}
Task swapping sequence is A->B->A->A1->A2->B->B1->B2->B1->B->A->A1
When task A is created, it will create subtask A1 and subtask A2. These 2
subtasks wouldn’t be executed until IrptGetData() is called. However,
AdvSendMessage() with SWAP_TASK_BACK_LATER is called before
IrptGetData() so the next task is B. In task B, subtask B1 and subtask B2 are
created. In IrptGetData() of task B2, it will swap back to A as the previous
command is SWAP_TASK_BACK_LATER. Then subtask A1 and subtask A2 will
be executed in sequence. In subtask A2, SWAP_TASK to B is executed so next
task is B. In IrptGetData() of task B, it will swap to B1 as B1 is not executed yA default of 512 byte of memory is allocated for the task’s stack if the input
Then in IrptGetData() of subtask B1, it will swap to subtask B2. In subtask B2,
SWAP_TASK_LATER is called for task B, subtask A1 and subtask B1. As the
system will check for next subtask first, subtask B1 will be swapped in
IrptGetData() of subtask B2. In IrptGetData() of subtask B1, it will swap to B as it
will check for the parent after checking the next subtask. Then it will swap to task A
and then A1 in IrptGetData() of these tasks as AdvSendMessage() is called for
swapping task to A1 in subtask B2. Whenever SWAP_TASK_LATER is called for
subtask in other family, the parent of the other family will be swapped in first.
13.7
Creating a Task
STATUS
TaskCreate
(P_U32
taskId
, P_VOID
procAddr
, S16
xSrc
, S16
ySrc
,
S16
xDest
, S16
yDest
, P_U8
bitmap
)
PPSM needs to know the existence of each application task before the task can
access PPSM resources. The main body of a PPSM system must call this routine
once for each application. PPSM will create the necessary data structure and
memory space required to run the application. An application icon is created for
each application with the coordinates as supplied in the argument list. The
application is put to the foreground whenever this icon is selected. This tool does
not start the execution of the application. It registers the task with PPSM only.Creating a sub-task. Any task can use this tool to create sub-tasks. If the calling
the user does not want to have an application icon, the user should set either
width or height to be zero(
xSrc
=
xDest
or
ySrc
=
yDest
). Hence, there is no
application icon to be created.
By default, a screen is created with the task. PPSM uses the system default
physical size as the dimension for this screen. The default physical size is
specified in the Linker Specification File, as described in
Chapter 34 - Linker
Specification File
.
A 2K byte of memory is allocated for each task as the task’s stack.
13.8
Creating a Task with Specific Task Parameters
STATUS
AdvTaskCreate
(P_U32
taskId,
P_VOID
procAddr,
S16
xSrc,
S16
ySrc,
S16
xDest,
S16
yDest,
S32
stackSize,
U16
newScreen,
U16
screenWidth,
U16
screenHeight,
P_U8
bitmap
)
Creation of a new PPSM task. This tool creates a PPSM application task in the
Personal Portable System Manager
Programmer’s Manual
Task MaTask Management
13-7
same manner as the existing tool TaskCreate(), with the difference that it also
allows the caller to specify the launch icon position and size, the stack memory
required by the application and the screen memory size, if any is required. Two
settings for the panning screen variable, newScreen, are available:
PPSM_SCREEN_NOSCREEN will have no screen.
PPSM_SCREEN_NEW will take the arguments
screenHeight
and creates a new screen for the application task.
However, if either one of the arguments,
screenHeight
, is zero, the default panning screen size taken from
the linker specification file will be used.
argument is negative.
Example 13-3 Create a task
60
.
.
.
66
67
68
69
72
main()
{
U32 SlideTask; /* Task id for slide */
U32 UartDemoTask, TimerTask; /* Task id for uart and reference timer */
/* Create the UART application task with a stack size = 2K,
* and a panning screen with default width & height is required.
*/
if (AdvTaskCreate(&UartDemoTask, (P_VOID) UartDemo, src_x[UART_ICON],
src_y[UART_ICON], dest_x[UART_ICON], dest_y[UART_ICON], 2048,
PPSM_SCREEN_NEW, 0, 0, 0))
return(PPSM_ERROR);
STATUS
SubTaskCreate
U16
numArg
, ...)
,
task is itself a sub-task, the new sub-task will belong to the calling sub-task’s
parent(ie. the calling and the created sub-task will become siblings). If the calling
task has already created more than one sub-task, the new sub-task will be added
to the head of the sub-task list. There is currently no limit on the number of sub-
task a parent task can create.
This routine accepts variable length input argument. These arguments are passed
into the sub-task by PPSM, meaning that the actual sub-task routine can accept
input arguments.
Subtask will be started when the current task has no more messages to be
handled and there is no need to swap to the other task. Subtask will be started in
the IrptGetData() routine in current task.
STATUS
TaskStart
(U32
F
Freescale Semiconductor, Inc.
For More Information On This Product,
Go to: www.freescale.com
n
.