C2A_Core
task_dispatcher.h ファイル

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

task_dispatcher.h の依存先関係図:
被依存関係図:

[ソースコード]

データ構造

struct  TaskDsipatcher
 TaskDispatcherの状態 [詳解]
 

列挙型

enum  TDSP_ACK {
  TDSP_SUCCESS , TDSP_DEPLOY_FAILED , TDSP_CYCLE_OVERRUN , TDSP_STEP_OVERRUN ,
  TDSP_TASK_EXEC_FAILED , TDSP_INVAILD_BCT_ID , TDSP_INACTIVE_BCT_ID , TDSP_EMPTY_BC ,
  TDSP_UNKNOWN
}
 TDSPのエラーステータス [詳解]
 

関数

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)
 指定したブロックコマンドを、次にタスクリストに展開するものとして登録するコマンド [詳解]
 

変数

const TaskDsipatcher *const task_dispatcher
 

詳解

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

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

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

列挙型詳解

◆ TDSP_ACK

enum TDSP_ACK

TDSPのエラーステータス

覚え書き
uint8_t
列挙値
TDSP_SUCCESS 
TDSP_DEPLOY_FAILED 

ブロックコマンドのタスクリストへの展開時にエラーが発生

TDSP_CYCLE_OVERRUN 

1サイクル以内にすべてのコマンドを実行し終えなかった

TDSP_STEP_OVERRUN 

コマンドが実行予定のステップ数を過ぎている

TDSP_TASK_EXEC_FAILED 

コマンド実行時にエラーが発生

TDSP_INVAILD_BCT_ID 

実行する BCT_ID が無効だった

TDSP_INACTIVE_BCT_ID 

実行する BCT_ID が無効化されている

TDSP_EMPTY_BC 

実行する BC が空だった

TDSP_UNKNOWN 

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

関数詳解

◆ Cmd_TDSP_SET_TASK_LIST()

CCP_CmdRet Cmd_TDSP_SET_TASK_LIST ( const CommonCmdPacket packet)

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

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

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

◆ 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
extern

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