11 #include "../System/TimeManager/time_manager.h"
31 #ifdef TLCD_ENABLE_MISSION_TL
45 #ifdef TLCD_ENABLE_MISSION_TL
83 #ifdef TLCD_ENABLE_MISSION_TL
164 #ifdef TLCD_ENABLE_MISSION_TL
165 case CCP_EXEC_TYPE_TL_FOR_MISSION:
168 case CCP_EXEC_TYPE_UTL_FOR_MISSION:
375 #ifdef TLCD_ENABLE_MISSION_TL
376 case CCP_EXEC_TYPE_TL_FOR_MISSION:
377 case CCP_EXEC_TYPE_UTL_FOR_MISSION:
BCT_ACK BCT_register_cmd(const CommonCmdPacket *packet)
Cmd を block_command_table->pos に登録する
CCP_CmdRet CA_execute_cmd(const CommonCmdPacket *packet)
コマンド実行の本体
void CCP_set_ti(CommonCmdPacket *packet, cycle_t ti)
TI を設定
@ CCP_EXEC_UNKNOWN
内部処理用.使わない.
CCP_EXEC_TYPE CCP_get_exec_type(const CommonCmdPacket *packet)
EXEC_TYPE を取得
void CCP_set_dest_type(CommonCmdPacket *packet, CCP_DEST_TYPE type)
DEST_TYPE を設定
APID CCP_get_apid(const CommonCmdPacket *packet)
APID を取得
void CCP_set_exec_type(CommonCmdPacket *packet, CCP_EXEC_TYPE type)
EXEC_TYPE を設定
cycle_t CCP_get_ti(const CommonCmdPacket *packet)
TI を取得
@ CCP_EXEC_TYPE_TL_DEPLOY_BC
@ CCP_EXEC_TYPE_GS
GS : Ground Station Command
@ CCP_EXEC_TYPE_RT
RT : Realtime Command
@ CCP_EXEC_TYPE_BC
BC : Block Command
@ CCP_EXEC_TYPE_TL_DEPLOY_TLM
@ CCP_EXEC_TYPE_UTL
UTL: Unixtime Timeline Command
@ CCP_EXEC_TYPE_TL_FROM_GS
TL : Timeline Command
int CCP_is_valid_packet(const CommonCmdPacket *packet)
有効なパケットかチェックする
void CCP_copy_packet(CommonCmdPacket *dest, const CommonCmdPacket *src)
CommonCmdPacket をコピー
CCP_CmdRet CCP_make_cmd_ret_without_err_code(CCP_EXEC_STS exec_sts)
コマンド返り値である CCP_CmdRet を作成(エラーコード不使用版)
const CommonTlmPacket * CTCP_convert_to_ctp(const CommonTlmCmdPacket *ctcp)
CTCP を CTP に変換(キャスト)
int CTCP_is_valid_packet(const CommonTlmCmdPacket *packet)
有効なパケットかチェックする
CTCP_PACKET_TYPE CTCP_get_packet_type(const CommonTlmCmdPacket *packet)
tlm か cmd かを判断
const CommonCmdPacket * CTCP_convert_to_ccp(const CommonTlmCmdPacket *ctcp)
CTCP を CCP に変換(キャスト)
int CTP_is_valid_packet(const CommonTlmPacket *packet)
有効なパケットかチェックする
ctp_dest_flags_t CTP_get_dest_flags(const CommonTlmPacket *packet)
CTP_DEST_FLAG の & を取った flags を取得
uint8_t ctp_dest_flags_t
CTP_DEST_FLAG の & をとったフラグのための型
CTP_DEST_FLAG
配送先指定.テレメのキューを指定するフラグ.
@ CTP_DEST_FLAG_RT_TLM
00000010b: Realtime Telemetry
@ CTP_DEST_FLAG_HP_TLM
00000001b: High Priority Realtime Telemetry
@ CTP_DEST_FLAG_ST_TLM
00000100b: Stored Telemetry
@ CTP_DEST_FLAG_RP_TLM
00001000b: Replay Telemetry
void CTP_set_dest_flags(CommonTlmPacket *packet, ctp_dest_flags_t flags)
CTP_DEST_FLAG の & を取った flags を設定
static CommonTlmPacket PH_rt_tlm_ctp_stock_[PH_RT_TLM_LIST_MAX]
const PacketList * PH_get_packet_list_from_exec_type(CCP_EXEC_TYPE type)
CCP_EXEC_TYPE から PacketList を取得する
static PH_ACK PH_add_tlm_to_pl(const CommonTlmPacket *packet, PacketList *pl, CTP_DEST_FLAG dest_flag)
static PL_Node PH_rt_tlm_stock_[PH_RT_TLM_LIST_MAX]
PH_ACK PH_analyze_tlm_packet(const CommonTlmPacket *packet)
CTP を解析する
PacketList PH_rt_cmd_list
static PL_Node PH_tl_cmd_gs_stock_[PH_TLC_GS_LIST_MAX]
static CommonCmdPacket PH_tl_cmd_bc_ccp_stock_[PH_TLC_BC_LIST_MAX]
PacketList PH_tl_cmd_list[TLCD_ID_MAX]
static PH_ACK PH_add_block_cmd_(const CommonCmdPacket *packet)
static PL_Node PH_gs_cmd_stock_[PH_GSC_LIST_MAX]
static PH_ACK PH_add_gs_cmd_(const CommonCmdPacket *packet)
static CommonCmdPacket PH_gs_cmd_ccp_stock_[PH_GSC_LIST_MAX]
static PH_ACK PH_add_rt_cmd_(const CommonCmdPacket *packet)
static PH_ACK PH_add_rt_tlm_(const CommonTlmPacket *packet)
PacketList PH_rt_tlm_list
PH_ACK PH_analyze_cmd_packet(const CommonCmdPacket *packet)
CCP を解析する
CCP_CmdRet PH_dispatch_command(const CommonCmdPacket *packet)
CCP をコマンドとして解釈して実行,ないしは別機器へ配送する
static CommonCmdPacket PH_tl_cmd_gs_ccp_stock_[PH_TLC_GS_LIST_MAX]
PH_ACK PH_analyze_packet(const CommonTlmCmdPacket *packet)
CTCP を解析する
void PH_init(void)
Packet Handler を初期化
static PH_ACK PH_add_tl_cmd_(TLCD_ID id, const CommonCmdPacket *packet, cycle_t now)
static PL_Node PH_rt_cmd_stock_[PH_RTC_LIST_MAX]
static PH_ACK PH_add_utl_cmd_(TLCD_ID id, const CommonCmdPacket *packet)
UTL_cmd を TL_cmd に変換して tl_cmd_list に追加する
static PL_Node PH_tl_cmd_tlm_stock_[PH_TLC_TLM_LIST_MAX]
static PL_Node PH_tl_cmd_bc_stock_[PH_TLC_BC_LIST_MAX]
PacketList PH_gs_cmd_list
static CommonCmdPacket PH_tl_cmd_tlm_ccp_stock_[PH_TLC_TLM_LIST_MAX]
static CommonCmdPacket PH_rt_cmd_ccp_stock_[PH_RTC_LIST_MAX]
C2A 全体を流れる Common Packet の配送を制御する
#define PH_RP_TLM_LIST_MAX
@ PH_ACK_TLC_ALREADY_EXISTS
同 TI に既に packet がいる
@ PH_ACK_TLC_PAST_TIME
既に実行時刻を過ぎている
@ PH_ACK_INVALID_PACKET
無効な Packet
@ PH_ACK_TLC_SUCCESS
TL 登録に成功した
@ PH_ACK_PL_LIST_FULL
PL が一杯だった
@ PH_ACK_BC_CMD_TOO_LONG
CMD が BC には長すぎる
@ PH_ACK_BC_INVALID_BLOCK_NO
無効な BC 番号だった
@ PH_ACK_BC_SUCCESS
BC 登録に成功した
@ PH_ACK_BC_ISORATED_CMD
飛ばして BC 登録しようとした
#define PH_TLC_GS_LIST_MAX
#define PH_TLC_BC_LIST_MAX
#define PH_TLC_MIS_LIST_MAX
#define PH_RT_TLM_LIST_MAX
#define PH_ST_TLM_LIST_MAX
#define PH_TLC_TLM_LIST_MAX
const PL_Node * PL_get_tail(const PacketList *pl)
PacketList の active な末端 Node を取得
PL_ACK PL_insert_tl_cmd(PacketList *pl, const CommonCmdPacket *packet, cycle_t now)
CCP が時系列に並ぶように CCP を挿入する
PL_ACK PL_push_back(PacketList *pl, const void *packet)
PacketList の末尾に packet を挿入
PL_ACK
PacketList 関連操作のエラーコード
@ PL_TLC_PAST_TIME
実行時間既に経過
@ PL_LIST_FULL
PacketList が満杯 (inactive 無し)
@ PL_TLC_ALREADY_EXISTS
同時刻に既に Node が存在
PL_ACK PL_initialize_with_ctp(PL_Node *pl_node_stock, CommonTlmPacket *packet_stock, uint16_t node_num, PacketList *pl)
static に確保された PL_Node 配列と CTP 配列を受け取りその領域を使用して PL を初期化
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 を初期化
PacketList の Util.User は基本こちらを使い, PL を直接使わない.
void * packet
片方向リストに格納される packet. どのような型でも良いように, void.(基本的には CTCP, CTP, CCP を想定)
cycle_t TMGR_get_master_total_cycle(void)
現在の total_cycle を返す
cycle_t TMGR_get_ti_from_utl_unixtime(const cycle_t utl_unixtime)
引数で指定された utl_unixtime に対応する TI を返す
TLCD_ID
TimeLineを選ぶときに統一的に使うコード
CCP_CmdRet PH_user_cmd_router(const CommonCmdPacket *packet)
PH の PH_dispatch_command のユーザー処理関数
PH_ACK PH_user_analyze_cmd(const CommonCmdPacket *packet)
PH の analyze_cmd_ のユーザー処理関数
void PH_user_init(void)
PH のユーザー固有部初期化処理
packet_handlerのコマンドルーター,コマンドアナライザのユーザー定義部分