13 #include "../../TlmCmd/packet_list_util.h"
14 #include "../../TlmCmd/block_command_executor.h"
15 #include "../../TlmCmd/common_cmd_packet_util.h"
16 #include "../ModeManager/mode_manager.h"
17 #include "../TimeManager/time_manager.h"
18 #include "../TimeManager/obc_time_config.h"
19 #include "../EventManager/event_logger.h"
23 #define TDSP_TASK_MAX BCT_MAX_CMD_NUM
39 #include "../../Library/print.h"
44 static void TDSP_print_tdsp_status_(
void);
211 AppInfo TDSP_print_tdsp_status(
void)
217 void TDSP_print_tdsp_status_(
void)
220 Printf(
"TASK: BC %d, ERR (TOTAL, STEP, STS, CODE) = (%10u, %3u, %d, %d)\n",
AppInfo AI_create_app_info(const char *name, void(*initializer)(void), void(*entry_point)(void))
AppInfo を作る
uint8_t BCE_is_active(const bct_id_t block)
BCT の length の getter
uint8_t BCT_get_bc_length(const bct_id_t block)
BCT の length の getter
#define BCT_MAX_BLOCKS
BCのIDの最大数
CommandDispatcher CDIS_init(PacketList *pl)
CDIS の初期化と取得
void CDIS_dispatch_command(CommandDispatcher *cdis)
CDIS に登録されているコマンドキューからコマンドを実行
@ CCP_EXEC_ILLEGAL_PARAMETER
コマンド実行時のパラメタエラー
@ CCP_EXEC_ILLEGAL_CONTEXT
コマンド実行時のその他のエラー
const uint8_t * CCP_get_param_head(const CommonCmdPacket *packet)
先頭のパラメタのポインタを取得
cycle_t CCP_get_ti(const CommonCmdPacket *packet)
TI を取得
CCP_CmdRet CCP_make_cmd_ret_without_err_code(CCP_EXEC_STS exec_sts)
コマンド返り値である CCP_CmdRet を作成(エラーコード不使用版)
EL_ACK EL_record_event(EL_GROUP group, uint32_t local, EL_ERROR_LEVEL err_level, uint32_t note)
イベント (EL_Event) を記録
@ EL_CORE_GROUP_TASK_DISPATCHER
EL_GROUP
event_logger の Event Group の user 定義部分
bct_id_t MM_get_tasklist_id_of_mode(MD_MODEID mode)
mode に対応した TL の BCT ID を取得する
#define OBCT_MAX_CYCLE
最大 cycle 数.つまり TI がいくつでオーバーフローするか
void PL_clear_list(PacketList *pl)
PacketList をクリア
PL_ACK PL_check_tl_cmd(const PacketList *pl, cycle_t time)
PacketList の先頭と time を比較
const PL_Node * PL_get_head(const PacketList *pl)
PacketList の active な先頭 Node を取得
PL_ACK PL_deploy_block_cmd(PacketList *pl, const bct_id_t block, cycle_t start_at)
PacketList 上に BC を展開する
uint16_t PL_count_active_nodes(const PacketList *pl)
PacketList で有効な(実行待ち) Node 数を返す
PL_ACK
PacketList 関連操作のエラーコード
@ PL_TLC_NOT_YET
まだ実行時刻ではない
@ PL_TLC_PAST_TIME
実行時間既に経過
PL_ACK PL_initialize_with_ccp(PL_Node *pl_node_stock, CommonCmdPacket *packet_stock, uint16_t node_num, PacketList *pl)
static に確保された PL_Node 配列と CCP 配列を受け取りその領域を使用して PL を初期化
void Printf(const char *format,...)
uint32_t err_code
各 Cmd ユニークなエラーコード.各 App で定義する enum などを入れることを想定.
CCP_EXEC_STS exec_sts
CCP_EXEC_STS.Cmd の統一的なエラーコード
CDIS_ExecInfo prev_err
最後にエラーが出たコマンド実行情報
CDIS_ExecInfo prev
前回のコマンド実行情報
cycle_t total_cycle
TI のこと. OBC が起動してから(正確には,構造体が初期化されてから)の経過時間
step_t step
内部 step. TimeLine での処理時間分割に使われる
bct_id_t task_list_id
タスクリストに展開するブロックコマンドのID
CommandDispatcher tskd
タスクリストへのポインタと、その他実行情報を保存する構造体
cycle_t activated_at
ブロックコマンドがタスクリストに展開された時のサイクル数
void TDSP_resync_internal_counter(void)
タスクリストの展開時サイクル数を現在のサイクル数に強制的に合わせる
static PacketList TDSP_task_list_
static void TDSP_deploy_block_as_task_list_(void)
task_dispatcher_.task_list_id に登録された BC を TaskListに展開.
void TDSP_initialize(void)
タスク管理を行うTaskDsipatcher構造体(TaskDsipatcher_)の初期化
void TDSP_execute_pl_as_task_list(void)
現在時刻に応じて、TaskList から Cmd を一つ実行する or TaskList を再展開する
TDSP_ACK TDSP_set_task_list_id(bct_id_t id)
指定した BC を TaskList に展開するものとして登録
const TaskDsipatcher *const task_dispatcher
CCP_CmdRet Cmd_TDSP_SET_TASK_LIST(const CommonCmdPacket *packet)
指定したブロックコマンドを、次にタスクリストに展開するものとして登録するコマンド
static TaskDsipatcher task_dispatcher_
task list に設定されたタスクを実行する主体
@ TDSP_STEP_OVERRUN
コマンドが実行予定のステップ数を過ぎている
@ TDSP_DEPLOY_FAILED
ブロックコマンドのタスクリストへの展開時にエラーが発生
@ TDSP_TASK_EXEC_FAILED
コマンド実行時にエラーが発生
@ TDSP_CYCLE_OVERRUN
1サイクル以内にすべてのコマンドを実行し終えなかった
@ TDSP_INVAILD_BCT_ID
実行する BCT_ID が無効だった
@ TDSP_INACTIVE_BCT_ID
実行する BCT_ID が無効化されている
@ TDSP_EMPTY_BC
実行する BC が空だった
cycle_t TMGR_get_master_total_cycle(void)
現在の total_cycle を返す
step_t TMGR_get_master_step(void)
現在の step を返す
void VT100_erase_line(void)