C2A_Core
common_cmd_packet_util.h
[詳解]
1 
5 #ifndef COMMON_CMD_PACKET_UTIL_H_
6 #define COMMON_CMD_PACKET_UTIL_H_
7 
8 #include "common_cmd_packet.h"
9 #include "packet_handler.h"
10 #include "../Applications/timeline_command_dispatcher_id_define.h"
11 #include "block_command_table.h" // for bct_id
13 
19 typedef enum
20 {
24 
25 
33 CCP_CmdRet CCP_make_cmd_ret(CCP_EXEC_STS exec_sts, uint32_t err_code);
34 
41 
51 
62 CCP_UTIL_ACK CCP_form_rtc(CommonCmdPacket* packet, CMD_CODE cmd_id, const uint8_t* param, uint16_t len);
63 
75 CCP_UTIL_ACK CCP_form_tlc(CommonCmdPacket* packet, cycle_t ti, CMD_CODE cmd_id, const uint8_t* param, uint16_t len);
76 
87 CCP_UTIL_ACK CCP_form_rtc_to_other_obc(CommonCmdPacket* packet, APID apid, CMD_CODE cmd_id, const uint8_t* param, uint16_t len);
88 
100 CCP_UTIL_ACK CCP_form_tlc_to_other_obc(CommonCmdPacket* packet, cycle_t ti, APID apid, CMD_CODE cmd_id, const uint8_t* param, uint16_t len);
101 
111 
119 
128 PH_ACK CCP_register_rtc(CMD_CODE cmd_id, const uint8_t* param, uint16_t len);
129 
139 PH_ACK CCP_register_tlc(cycle_t ti, TLCD_ID tlcd_id, CMD_CODE cmd_id, const uint8_t* param, uint16_t len);
140 
152 PH_ACK CCP_register_tlc_asap(cycle_t ti, TLCD_ID tlcd_id, CMD_CODE cmd_id, const uint8_t* param, uint16_t len);
153 
164 CCP_CmdRet CCP_form_and_exec_rtc(CMD_CODE cmd_id, const uint8_t* param, uint16_t len);
165 
176 CCP_CmdRet CCP_form_and_exec_rtc_to_other_obc(APID apid, CMD_CODE cmd_id, const uint8_t* param, uint16_t len);
177 
186 
194 
203 uint8_t* CCP_get_1byte_param_from_packet(const CommonCmdPacket* packet, uint8_t n);
204 
213 uint16_t* CCP_get_2byte_param_from_packet(const CommonCmdPacket* packet, uint8_t n);
214 
223 uint32_t* CCP_get_4byte_param_from_packet(const CommonCmdPacket* packet, uint8_t n);
224 
233 uint64_t* CCP_get_8byte_param_from_packet(const CommonCmdPacket* packet, uint8_t n);
234 
243 uint16_t CCP_get_raw_param_from_packet(const CommonCmdPacket* packet, void* dest, uint16_t max_copy_len);
244 
252 const uint8_t* CCP_get_raw_param_head(const CommonCmdPacket* packet);
253 
260 uint16_t CCP_get_raw_param_len(const CommonCmdPacket* packet);
261 
275 #define CCP_get_param_from_packet(packet, n, type) \
276 (*((type*)( \
277 sizeof(type) == 1 ? \
278 (void*)CCP_get_1byte_param_from_packet(packet, n) : \
279 sizeof(type) == 2 ? \
280 (void*)CCP_get_2byte_param_from_packet(packet, n) : \
281 sizeof(type) == 4 ? \
282 (void*)CCP_get_4byte_param_from_packet(packet, n) : \
283 sizeof(type) == 8 ? \
284 (void*)CCP_get_8byte_param_from_packet(packet, n) : \
285 0)))
286 
297 
306 CCP_UTIL_ACK CCP_get_prepared_param_for_packet(const uint8_t** param_head, uint16_t* len);
307 
315 
323 
331 
339 
347 
355 
363 
371 
379 
387 
395 
403 CCP_UTIL_ACK CCP_prepare_raw_param_for_packet(const uint8_t* param, uint16_t len);
404 
405 #endif
APID
Application Process ID
Definition: apid_define.h:17
AR_APP_ID
Definition: app_registry.h:7
BCTの定義, BCT周りの関数
uint16_t bct_id_t
CCP 関連基本関数の宣言
CCP_EXEC_STS
コマンド実行結果コード
CCP_EXEC_TYPE
コマンド実行種別
uint64_t * CCP_get_8byte_param_from_packet(const CommonCmdPacket *packet, uint8_t n)
CCP packet から,サイズが 8 byte のコマンド引数を取得する
CCP_UTIL_ACK CCP_form_tlc(CommonCmdPacket *packet, cycle_t ti, CMD_CODE cmd_id, const uint8_t *param, uint16_t len)
Timeline command を生成
CCP_UTIL_ACK
CCP Utility の汎用返り値
@ CCP_UTIL_ACK_OK
正常終了
@ CCP_UTIL_ACK_PARAM_ERR
パラメタエラー
CCP_UTIL_ACK CCP_prepare_int64_param_for_packet(int64_t param)
Param Generator で int64_t のパラメタを登録
CCP_UTIL_ACK CCP_prepare_uint32_param_for_packet(uint32_t param)
Param Generator で uint32_t のパラメタを登録
CCP_UTIL_ACK CCP_prepare_int8_param_for_packet(int8_t param)
Param Generator で int8_t のパラメタを登録
CCP_UTIL_ACK CCP_prepare_uint8_param_for_packet(uint8_t param)
Param Generator で uint8_t のパラメタを登録
CCP_UTIL_ACK CCP_prepare_int16_param_for_packet(int16_t param)
Param Generator で int16_t のパラメタを登録
CCP_UTIL_ACK CCP_prepare_uint64_param_for_packet(uint64_t param)
Param Generator で uint64_t のパラメタを登録
uint16_t * CCP_get_2byte_param_from_packet(const CommonCmdPacket *packet, uint8_t n)
CCP packet から,サイズが 2 byte のコマンド引数を取得する
CCP_UTIL_ACK CCP_prepare_int32_param_for_packet(int32_t param)
Param Generator で int32_t のパラメタを登録
CCP_UTIL_ACK CCP_form_tlc_to_other_obc(CommonCmdPacket *packet, cycle_t ti, APID apid, CMD_CODE cmd_id, const uint8_t *param, uint16_t len)
他の OBC のコマンドを TL として生成
CCP_CmdRet CCP_form_and_exec_rtc(CMD_CODE cmd_id, const uint8_t *param, uint16_t len)
Realtime command を生成し,即時実行する
CCP_CmdRet CCP_form_and_exec_block_deploy_cmd(TLCD_ID tl_no, bct_id_t block_no)
BC展開 command を生成し,即時実行する
void CCP_form_app_cmd(CommonCmdPacket *packet, cycle_t ti, AR_APP_ID id)
App 実行 TL コマンドを生成
CCP_UTIL_ACK CCP_prepare_uint16_param_for_packet(uint16_t param)
Param Generator で uint16_t のパラメタを登録
uint32_t * CCP_get_4byte_param_from_packet(const CommonCmdPacket *packet, uint8_t n)
CCP packet から,サイズが 4 byte のコマンド引数を取得する
PH_ACK CCP_register_tlc_asap(cycle_t ti, TLCD_ID tlcd_id, CMD_CODE cmd_id, const uint8_t *param, uint16_t len)
Timeline command を登録 (ASAP 版)
PH_ACK CCP_register_tlc(cycle_t ti, TLCD_ID tlcd_id, CMD_CODE cmd_id, const uint8_t *param, uint16_t len)
Timeline command を登録
CCP_CmdRet CCP_make_cmd_ret(CCP_EXEC_STS exec_sts, uint32_t err_code)
コマンド返り値である CCP_CmdRet を作成
CCP_UTIL_ACK CCP_prepare_bct_id_param_for_packet(bct_id_t param)
Param Generator で bct_id_t のパラメタを登録
CCP_EXEC_TYPE CCP_get_exec_type_from_tlcd_id(TLCD_ID tlcd_id)
TLCD ID から CCP_EXEC_TYPE を取得する
CCP_CmdRet CCP_make_cmd_ret_without_err_code(CCP_EXEC_STS exec_sts)
コマンド返り値である CCP_CmdRet を作成(エラーコード不使用版)
CCP_UTIL_ACK CCP_prepare_double_param_for_packet(double param)
Param Generator で double のパラメタを登録
void CCP_init_param_for_packet(CMD_CODE cmd_id)
Param Generator を初期化
uint8_t * CCP_get_1byte_param_from_packet(const CommonCmdPacket *packet, uint8_t n)
CCP packet から,サイズが 1 byte のコマンド引数を取得する
CCP_UTIL_ACK CCP_prepare_float_param_for_packet(float param)
Param Generator で float のパラメタを登録
CCP_CmdRet CCP_form_and_exec_rtc_to_other_obc(APID apid, CMD_CODE cmd_id, const uint8_t *param, uint16_t len)
他の OBC のコマンドを RT として生成し,即時実行する
uint16_t CCP_get_raw_param_from_packet(const CommonCmdPacket *packet, void *dest, uint16_t max_copy_len)
CCP packet から,RAW コマンド引数を取得する
CCP_UTIL_ACK CCP_form_block_deploy_cmd(CommonCmdPacket *packet, TLCD_ID tl_no, bct_id_t block_no)
BC展開 Realtime command を生成
const uint8_t * CCP_get_raw_param_head(const CommonCmdPacket *packet)
CCP packet から,RAW コマンド引数の先頭ポインタを取得する
CCP_UTIL_ACK CCP_get_prepared_param_for_packet(const uint8_t **param_head, uint16_t *len)
Param Generator から完成した param を取得する
void CCP_convert_rtc_to_tlc(CommonCmdPacket *packet, cycle_t ti)
Realtime Command から Timeline Command へ変換
CCP_UTIL_ACK CCP_form_rtc_to_other_obc(CommonCmdPacket *packet, APID apid, CMD_CODE cmd_id, const uint8_t *param, uint16_t len)
他の OBC のコマンドを RT として生成
CCP_UTIL_ACK CCP_prepare_raw_param_for_packet(const uint8_t *param, uint16_t len)
Param Generator で raw パラメタを登録
PH_ACK CCP_register_rtc(CMD_CODE cmd_id, const uint8_t *param, uint16_t len)
Realtime command を登録
CCP_UTIL_ACK CCP_form_rtc(CommonCmdPacket *packet, CMD_CODE cmd_id, const uint8_t *param, uint16_t len)
Realtime command を生成
uint16_t CCP_get_raw_param_len(const CommonCmdPacket *packet)
CCP packet から,RAW コマンド引数の長さを返す
uint32_t cycle_t
Definition: obc_time.h:10
C2A 全体を流れる Common Packet の配送を制御する
PH_ACK
コマンド返り値
Space Packet (コマンド用)
TLCD_ID
TimeLineを選ぶときに統一的に使うコード