C2A_Core
task_dispatcher.c ファイル

task list に設定されたタスクを実行する主体 [詳解]

task_dispatcher.c の依存先関係図:

[ソースコード]

マクロ定義

#define TDSP_TASK_MAX   BCT_MAX_CMD_NUM
 

関数

static void TDSP_deploy_block_as_task_list_ (void)
 task_dispatcher_.task_list_id に登録された BC を TaskListに展開. [詳解]
 
void TDSP_initialize (void)
 タスク管理を行うTaskDsipatcher構造体(TaskDsipatcher_)の初期化 [詳解]
 
TDSP_ACK TDSP_set_task_list_id (bct_id_t id)
 指定した BC を TaskList に展開するものとして登録 [詳解]
 
void TDSP_execute_pl_as_task_list (void)
 現在時刻に応じて、TaskList から Cmd を一つ実行する or TaskList を再展開する [詳解]
 
void TDSP_resync_internal_counter (void)
 タスクリストの展開時サイクル数を現在のサイクル数に強制的に合わせる [詳解]
 
CCP_CmdRet Cmd_TDSP_SET_TASK_LIST (const CommonCmdPacket *packet)
 指定したブロックコマンドを、次にタスクリストに展開するものとして登録するコマンド [詳解]
 

変数

static TaskDsipatcher task_dispatcher_
 
const TaskDsipatcher *const task_dispatcher = &task_dispatcher_
 
static PacketList TDSP_task_list_
 

詳解

task list に設定されたタスクを実行する主体

覚え書き
これは, RT OS のタスク時分割処理に相当する したがって,これによって, 1 cycle を step 刻みで各 task に振り分けて実行していくことになる

task_dispatcher.c に定義があります。

マクロ定義詳解

◆ TDSP_TASK_MAX

#define TDSP_TASK_MAX   BCT_MAX_CMD_NUM

task_dispatcher.c23 行目に定義があります。

関数詳解

◆ Cmd_TDSP_SET_TASK_LIST()

CCP_CmdRet Cmd_TDSP_SET_TASK_LIST ( const CommonCmdPacket packet)

指定したブロックコマンドを、次にタスクリストに展開するものとして登録するコマンド

task_dispatcher.c190 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ TDSP_deploy_block_as_task_list_()

static void TDSP_deploy_block_as_task_list_ ( void  )
static

task_dispatcher_.task_list_id に登録された BC を TaskListに展開.

覚え書き
実際に BC の内容を読み込み、展開しているのは PL_ACK PL_deploy_block_cmd(args)

task_dispatcher.c73 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ TDSP_execute_pl_as_task_list()

void TDSP_execute_pl_as_task_list ( void  )

現在時刻に応じて、TaskList から Cmd を一つ実行する or TaskList を再展開する

   展開されているタスクリストの実行時刻 (cycle レベル) を比較し, task_list_ に登録されているタスクを順番に実行する.
   1つタスクを消化すると return する. (while(1) で回っているのですぐ戻ってくる.)
   実行 cycle が現在だった場合, 各タスクの step によって実行する, しないを switch に合わせて処理する.
   実際にタスクを処理する場合, CDIS_dispatch_command -> PH_dispatch_command -> CA_execute_cmd の順に実行される(真の Executer は CA_execute_cmd).

task_dispatcher.c93 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ TDSP_initialize()

void TDSP_initialize ( void  )

タスク管理を行うTaskDsipatcher構造体(TaskDsipatcher_)の初期化

覚え書き
データ構造は Packet List

task_dispatcher.c48 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ TDSP_resync_internal_counter()

void TDSP_resync_internal_counter ( void  )

タスクリストの展開時サイクル数を現在のサイクル数に強制的に合わせる

task_dispatcher.c184 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ TDSP_set_task_list_id()

TDSP_ACK TDSP_set_task_list_id ( bct_id_t  id)

指定した BC を TaskList に展開するものとして登録

引数
[in]idBC の id
覚え書き
展開自体は TDSP_deploy_block_as_task_list_ で行う "BC を TaskList に展開" とは src_user\Settings\Modes\TaskLists\tl_initial.c などを参照.

task_dispatcher.c62 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

変数詳解

◆ task_dispatcher

const TaskDsipatcher* const task_dispatcher = &task_dispatcher_

task_dispatcher.c26 行目に定義があります。

◆ task_dispatcher_

TaskDsipatcher task_dispatcher_
static

task_dispatcher.c25 行目に定義があります。

◆ TDSP_task_list_

PacketList TDSP_task_list_
static

task_dispatcher.c29 行目に定義があります。