C2A_Core
divided_cmd_utility.c ファイル

コマンド分割をサポートするUtil [詳解]

divided_cmd_utility.c の依存先関係図:

[ソースコード]

関数

static void DCU_init_ (void)
 App初期化関数 [詳解]
 
static void DCU_clear_log_ (void)
 ログクリア [詳解]
 
static void DCU_clear_log_element_ (uint8_t log_idx, CMD_CODE cmd_code)
 ログクリア(1要素) [詳解]
 
static DCU_LOG_ACK DCU_search_log_ (CMD_CODE cmd_code, uint8_t *log_idx, uint8_t *sort_key)
 該当コマンドのログを検索し取得する [詳解]
 
static void DCU_move_to_front_in_log_ (CMD_CODE cmd_code)
 該当コマンドのログを,ログの先頭に出す [詳解]
 
static void DCU_create_log_on_front_ (CMD_CODE cmd_code)
 先頭に該当コマンドのログをつくる [詳解]
 
AppInfo DCU_create_app (void)
 
DCU_STATUS DCU_check_in (CMD_CODE cmd_code, uint16_t *exec_counter)
 DCUにチェックインする.分割コマンド実行時,最初に呼び出す関数. [詳解]
 
DCU_ACK DCU_register_next (CMD_CODE cmd_code, const uint8_t *param, uint16_t len)
 次の分割の実行を登録 [詳解]
 
void DCU_report_finish (CMD_CODE cmd_code, CCP_EXEC_STS last_exec_sts)
 DCUに,分割コマンドが実行終了したことを伝える [詳解]
 
void DCU_report_err (CMD_CODE cmd_code, CCP_EXEC_STS last_exec_sts)
 DCUに,途中でエラーが発生したことを伝える [詳解]
 
void DCU_donw_abort_flag (CMD_CODE cmd_code)
 エラー,またはコマンドによって中断ステータスとなっているコマンドを,実行可能状態に戻す [詳解]
 
void DCU_abort_cmd (CMD_CODE cmd_code)
 実行中の分割コマンドを外部から強制的に中断させる [詳解]
 
DCU_LOG_ACK DCU_search_and_get_log (CMD_CODE cmd_code, const DCU_ExecStatus *exec_log)
 ログを探して,指定したコマンドログを取得する [詳解]
 
CCP_CmdRet Cmd_DCU_ABORT_CMD (const CommonCmdPacket *packet)
 実行中の分割コマンドを停止する [詳解]
 
CCP_CmdRet Cmd_DCU_DOWN_ABORT_FLAG (const CommonCmdPacket *packet)
 エラー,またはコマンドによって中断ステータスとなっているコマンドを,実行可能状態に戻す [詳解]
 
CCP_CmdRet Cmd_DCU_CLEAR_LOG (const CommonCmdPacket *packet)
 ログをクリアする [詳解]
 

変数

static DividedCmdUtility divided_cmd_utility_
 
const DividedCmdUtility *const divided_cmd_utility = &divided_cmd_utility_
 
static CommonCmdPacket DCU_packet_
 

詳解

コマンド分割をサポートするUtil

覚え書き
HOW TO USE
  1. 各Cmdにて初めに DCU_check_in を実行し,現在の実行状況を取得する
  2. 実行が終了し 再度再帰させる必要がある場合は DCU_register_next で登録する
  3. すべての処理が終了した場合は DCU_report_finish を実行する
  4. 実行中のエラーは DCU_report_err で報告する.すると中断される
  5. 中断したいときは DCU_abort_cmd を実行する
  6. 中断された状態をリセットする場合は DCU_donw_abort_flag を実行する
telemetry_manager などで使っているので,それを参照のこと

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

関数詳解

◆ Cmd_DCU_ABORT_CMD()

CCP_CmdRet Cmd_DCU_ABORT_CMD ( const CommonCmdPacket packet)

実行中の分割コマンドを停止する

覚え書き
もし,指定した Cmd が実行中ではなくても CCP_EXEC_SUCCESS を返す

divided_cmd_utility.c287 行目に定義があります。

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

◆ Cmd_DCU_CLEAR_LOG()

CCP_CmdRet Cmd_DCU_CLEAR_LOG ( const CommonCmdPacket packet)

ログをクリアする

divided_cmd_utility.c309 行目に定義があります。

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

◆ Cmd_DCU_DOWN_ABORT_FLAG()

CCP_CmdRet Cmd_DCU_DOWN_ABORT_FLAG ( const CommonCmdPacket packet)

エラー,またはコマンドによって中断ステータスとなっているコマンドを,実行可能状態に戻す

覚え書き
もし,指定した Cmd が中断ステータスではなくても CCP_EXEC_SUCCESS を返す

divided_cmd_utility.c298 行目に定義があります。

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

◆ DCU_abort_cmd()

void DCU_abort_cmd ( CMD_CODE  cmd_code)

実行中の分割コマンドを外部から強制的に中断させる

覚え書き
内部エラーは DCU_report_err を使うべきで,基本的には使わないはず
abort からの復帰は,初期化される(途中からの再開は不可)
引数
[in]cmd_code停止させるコマンドの CMD_CODE
戻り値
void

divided_cmd_utility.c260 行目に定義があります。

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

◆ DCU_check_in()

DCU_STATUS DCU_check_in ( CMD_CODE  cmd_code,
uint16_t *  exec_counter 
)

DCUにチェックインする.分割コマンド実行時,最初に呼び出す関数.

引数
[in]cmd_code自身の CMD_CODE
[out]exec_counter次の実行回数が何回目か?
戻り値
DCU_STATUS_FINISHED初回実行である. exec_counter は 0 を返す.
DCU_STATUS_PROGRESS分割2回目以降の実行である
DCU_STATUS_ABORTED_BY_ERRエラーが発生しているので,実行を中止すべき( CCP_EXEC_ILLEGAL_CONTEXT を返すべき )
DCU_STATUS_ABORTED_BY_CMD実行中断コマンドを受信しているので,実行を中止すべき( CCP_EXEC_ILLEGAL_CONTEXT を返すべき )

divided_cmd_utility.c177 行目に定義があります。

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

◆ DCU_clear_log_()

static void DCU_clear_log_ ( void  )
static

ログクリア

引数
void
戻り値
void

divided_cmd_utility.c88 行目に定義があります。

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

◆ DCU_clear_log_element_()

static void DCU_clear_log_element_ ( uint8_t  log_idx,
CMD_CODE  cmd_code 
)
static

ログクリア(1要素)

引数
[in]log_idx消すログ
[in]cmd_code設定するコマンドID
戻り値
void

divided_cmd_utility.c99 行目に定義があります。

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

◆ DCU_create_app()

AppInfo DCU_create_app ( void  )

divided_cmd_utility.c76 行目に定義があります。

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

◆ DCU_create_log_on_front_()

static void DCU_create_log_on_front_ ( CMD_CODE  cmd_code)
static

先頭に該当コマンドのログをつくる

覚え書き
最も古いログが破棄されることに注意
すでにログがあった場合もチェックせずに insert する.すでにチェックされていることを前提とする!!!
引数
[in]cmd_code先頭に作るコマンド
戻り値
void

divided_cmd_utility.c152 行目に定義があります。

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

◆ DCU_donw_abort_flag()

void DCU_donw_abort_flag ( CMD_CODE  cmd_code)

エラー,またはコマンドによって中断ステータスとなっているコマンドを,実行可能状態に戻す

引数
[in]cmd_code実行可能状態に戻すコマンドの CMD_CODE
戻り値
void

divided_cmd_utility.c249 行目に定義があります。

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

◆ DCU_init_()

static void DCU_init_ ( void  )
static

App初期化関数

引数
void
戻り値
void

divided_cmd_utility.c82 行目に定義があります。

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

◆ DCU_move_to_front_in_log_()

static void DCU_move_to_front_in_log_ ( CMD_CODE  cmd_code)
static

該当コマンドのログを,ログの先頭に出す

覚え書き
ログがなければ insert する
引数
[in]cmd_code先頭に出すコマンド
戻り値
void

divided_cmd_utility.c130 行目に定義があります。

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

◆ DCU_register_next()

DCU_ACK DCU_register_next ( CMD_CODE  cmd_code,
const uint8_t *  param,
uint16_t  len 
)

次の分割の実行を登録

引数
[in]cmd_code自身の CMD_CODE
[in]paramコマンドパラメタ
[in]lenパラメタ長
戻り値
DCU_ACK

divided_cmd_utility.c205 行目に定義があります。

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

◆ DCU_report_err()

void DCU_report_err ( CMD_CODE  cmd_code,
CCP_EXEC_STS  last_exec_sts 
)

DCUに,途中でエラーが発生したことを伝える

覚え書き
以後の実行は中断される
引数
[in]cmd_code自身の CMD_CODE
[in]last_exec_stsコマンド実行結果
戻り値
void

divided_cmd_utility.c237 行目に定義があります。

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

◆ DCU_report_finish()

void DCU_report_finish ( CMD_CODE  cmd_code,
CCP_EXEC_STS  last_exec_sts 
)

DCUに,分割コマンドが実行終了したことを伝える

引数
[in]cmd_code自身の CMD_CODE
[in]last_exec_stsコマンド実行結果
戻り値
void

divided_cmd_utility.c225 行目に定義があります。

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

◆ DCU_search_and_get_log()

DCU_LOG_ACK DCU_search_and_get_log ( CMD_CODE  cmd_code,
const DCU_ExecStatus exec_log 
)

ログを探して,指定したコマンドログを取得する

覚え書き
exec_log は divided_cmd_utility の該当のログへのポインタに差し替える.
引数
[in]cmd_code探すコマンド
[out]exec_log取得したログ.constポインタで,参照先を書き換えるため,NULLポインタを渡すのもOK // FIXME: これバグってない?(ダブルポインタにすべき?)
戻り値
DCU_LOG_ACK_OK見つかった
DCU_LOG_ACK_NOT_FOUND見つからず

divided_cmd_utility.c271 行目に定義があります。

呼び出し関係図:

◆ DCU_search_log_()

static DCU_LOG_ACK DCU_search_log_ ( CMD_CODE  cmd_code,
uint8_t *  log_idx,
uint8_t *  sort_key 
)
static

該当コマンドのログを検索し取得する

引数
[in]cmd_code探索するコマンド
[out]log_idxexec_logs におけるログの場所
[out]sort_keyexec_log_order におけるログの場所
戻り値
DCU_LOG_ACK_OK見つかった
DCU_LOG_ACK_NOT_FOUND見つからず

divided_cmd_utility.c109 行目に定義があります。

被呼び出し関係図:

変数詳解

◆ DCU_packet_

CommonCmdPacket DCU_packet_
static

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

◆ divided_cmd_utility

const DividedCmdUtility* const divided_cmd_utility = &divided_cmd_utility_

divided_cmd_utility.c71 行目に定義があります。

◆ divided_cmd_utility_

DividedCmdUtility divided_cmd_utility_
static

divided_cmd_utility.c70 行目に定義があります。