8 #include "../System/TimeManager/time_manager.h"
67 uint8_t dr_partition_mask = 0x1f;
68 uint8_t dest_flags_mask = 0xe0;
117 dr_partition = (uint8_t)(category & dr_partition_mask);
118 dest_flags = (uint8_t)( (category & dest_flags_mask) >> 5 );
129 while (num_dumps != 0)
262 while (dump_num != 0)
316 while (dump_num != 0)
329 static uint16_t adu_counter_ = 0xffff;
332 return 0x3fff & adu_counter_;
APID APID_get_apid_from_uint16(uint16_t apid)
バイト列から APID を取得
APID
Application Process ID
@ CCP_EXEC_ILLEGAL_PARAMETER
コマンド実行時のパラメタエラー
@ CCP_EXEC_ILLEGAL_CONTEXT
コマンド実行時のその他のエラー
CCP_CmdRet CCP_make_cmd_ret(CCP_EXEC_STS exec_sts, uint32_t err_code)
コマンド返り値である CCP_CmdRet を作成
CCP_CmdRet CCP_make_cmd_ret_without_err_code(CCP_EXEC_STS exec_sts)
コマンド返り値である CCP_CmdRet を作成(エラーコード不使用版)
#define CCP_get_param_from_packet(packet, n, type)
CCP packet から,n番目のコマンド引数を取得する
void CTP_set_apid(CommonTlmPacket *packet, APID apid)
APID を設定
void CTP_set_global_time(CommonTlmPacket *packet)
現在の Global Time を設定
uint8_t ctp_dest_flags_t
CTP_DEST_FLAG の & をとったフラグのための型
uint32_t CTP_get_on_board_subnet_time(const CommonTlmPacket *packet)
On-Board Subnetwork Time を取得
@ 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_on_board_subnet_time(CommonTlmPacket *packet)
現在の On-Board Subnetwork Time を設定
APID CTP_get_apid(const CommonTlmPacket *packet)
APID を取得
PH_ACK PH_analyze_tlm_packet(const CommonTlmPacket *packet)
CTP を解析する
C2A 全体を流れる Common Packet の配送を制御する
#define TSP_MAX_LEN
TlmSpacePacket の最大パケット長.VCDU 分割しないならこれが最大値
uint8_t packet[TSP_MAX_LEN]
TF_TLM_FUNC_ACK TF_generate_contents(TLM_CODE tlm_id, uint8_t *packet, uint16_t *len, uint16_t max_len)
テレメを実際に生成する関数
TF_TLM_FUNC_ACK
tlm_func の返り値につかう
@ TF_TLM_FUNC_ACK_SUCCESS
成功
@ TF_TLM_FUNC_ACK_NOT_DEFINED
定義されてないテレメ
CCP_CmdRet Cmd_TG_FORWARD_AS_RT_TLM(const CommonCmdPacket *packet)
RT テレメとして 2nd OBC のテレメを転送
CCP_CmdRet Cmd_TG_FORWARD_TLM(const CommonCmdPacket *packet)
2nd OBC のテレメを転送
CCP_CmdRet Cmd_GENERATE_TLM(const CommonCmdPacket *packet)
static CCP_CmdRet TG_forward_tlm_(APID apid, TLM_CODE tlm_id, ctp_dest_flags_t dest_flags, uint8_t dest_info, uint8_t dump_num)
2nd OBC のテレメを転送
CCP_CmdRet Cmd_TG_GENERATE_ST_TLM(const CommonCmdPacket *packet)
ST テレメを生成
static uint16_t TG_get_next_seq_count_(void)
次のパケットで用いる Sequence Count を取得
CCP_CmdRet Cmd_TG_FORWARD_AS_HP_TLM(const CommonCmdPacket *packet)
HP テレメとして 2nd OBC のテレメを転送
CCP_CmdRet Cmd_TG_FORWARD_AS_ST_TLM(const CommonCmdPacket *packet)
ST テレメとして 2nd OBC のテレメを転送
CCP_CmdRet Cmd_TG_GENERATE_RT_TLM(const CommonCmdPacket *packet)
RT テレメを生成
CCP_CmdRet Cmd_TG_GENERATE_HP_TLM(const CommonCmdPacket *packet)
HP テレメを生成
static CCP_CmdRet TG_generate_tlm_(TLM_CODE tlm_id, ctp_dest_flags_t dest_flags, uint8_t dest_info, uint8_t num_dumps)
自身のテレメを生成
static CommonTlmPacket TG_ctp_
CCP_CmdRet Cmd_TG_GENERATE_TLM(const CommonCmdPacket *packet)
自身の OBC のテレメを生成
cycle_t TMGR_get_master_total_cycle(void)
現在の total_cycle を返す
void TSP_setup_primary_hdr(TlmSpacePacket *tsp, APID apid, uint16_t seq_count, uint16_t packet_len)
Primary Header を構築
void TSP_set_2nd_hdr_ver(TlmSpacePacket *tsp, TSP_2ND_HDR_VER ver)
Secondary Header Version No を設定
void TSP_set_dest_info(TlmSpacePacket *tsp, uint8_t info)
Dest Info を設定
void TSP_set_on_board_subnet_time(TlmSpacePacket *tsp, uint32_t time)
On-Board Subnetwork Time を設定
void TSP_set_board_time(TlmSpacePacket *tsp, uint32_t time)
Board Time を設定
void TSP_set_dest_flags(TlmSpacePacket *tsp, ctp_dest_flags_t flags)
Destination Flags を設定
void TSP_set_tlm_id(TlmSpacePacket *tsp, TLM_CODE id)
Tlm ID を設定
CCSDS で規定される Space Packet の テレメ版の実装
@ TSP_2ND_HDR_VER_1
Version-1
TF_TLM_FUNC_ACK PH_user_telemetry_router(APID apid, TLM_CODE tlm_id, uint8_t *packet, uint16_t *len, uint16_t max_len)
2nd OBC のテレメを転送するために, APID からテレメを判定してルーティングする // FIXME: 命名, router ではない?
packet_handlerのコマンドルーター,コマンドアナライザのユーザー定義部分