6 #include "../System/TimeManager/time_manager.h"
7 #include "../TlmCmd/packet_handler.h"
8 #include "../Library/endian.h"
9 #include "../TlmCmd/common_cmd_packet_util.h"
30 static MEM_ACK MEM_form_packet_(TCP* packet,
33 static TCP_SEQ_FLAG MEM_judge_seq_flag_(uint32_t rp,
36 static void MEM_setup_header_(TCP* packet,
40 TCP_SEQ_FLAG adu_seq_flag,
65 uint32_t begin, end, span;
102 uint8_t category, num_dumps;
106 num_dumps = param[1];
116 return MEM_dump_region_(category, num_dumps);
122 uint8_t category, num_dumps;
128 num_dumps = param[1];
148 return MEM_dump_region_(category, num_dumps);
160 uint8_t category, num_dumps;
166 num_dumps = param[1];
185 MEM_setup_header_(&MEM_ctp_,
195 data = TCP_TLM_get_user_data_head(&MEM_ctp_) + 5;
199 MEM_send_packet_(&MEM_ctp_, num_dumps);
214 data_len = param_len - 4;
220 memcpy((
void*)start_addr, &(param[4]), data_len);
247 uint32_t copy_width, wp;
270 memcpy((uint8_t*)wp, (
const uint8_t*)
memory_dump_.
rp, copy_width);
278 static uint8_t adu_counter_ = 0xff;
279 return ++adu_counter_;
291 ack = MEM_form_packet_(&MEM_ctp_, category);
297 MEM_send_packet_(&MEM_ctp_, num_dumps);
311 static MEM_ACK MEM_form_packet_(TCP* packet,
316 TCP_SEQ_FLAG seq_flag;
337 seq_flag = MEM_judge_seq_flag_(rp, len);
340 MEM_setup_header_(&MEM_ctp_,
349 data = TCP_TLM_get_user_data_head(packet) + 5;
350 memcpy(data, (
const void*)rp, len);
355 static TCP_SEQ_FLAG MEM_judge_seq_flag_(uint32_t rp,
361 return TCP_SEQ_SINGLE;
369 return TCP_SEQ_FIRST;
384 static void MEM_setup_header_(TCP* packet,
388 TCP_SEQ_FLAG adu_seq_flag,
389 uint16_t adu_seq_cnt,
395 TCP_TLM_setup_primary_hdr(packet,
APID_DUMP_TLM, (uint16_t)(data_len + 12));
397 TCP_TLM_set_category(packet, category);
398 TCP_TLM_set_packet_id(packet, (uint8_t)
MEM_TLM_ID);
399 TCP_TLM_set_adu_cnt(packet, adu_cnt);
400 TCP_TLM_set_adu_seq_flag(packet, adu_seq_flag);
403 data = TCP_TLM_get_user_data_head(packet);
404 data[0] = (uint8_t)(adu_seq_cnt >> 8);
405 data[1] = (uint8_t)(adu_seq_cnt);
408 data[0] = (uint8_t)(adu_len >> 16);
409 data[1] = (uint8_t)(adu_len >> 8);
410 data[2] = (uint8_t)(adu_len);
419 for (i = 0; i < num_dumps; ++i)
@ APID_DUMP_TLM
11100010000b: APID for DUMP TLM (FIXME: 現在まともに使ってない)
AppInfo AI_create_app_info(const char *name, void(*initializer)(void), void(*entry_point)(void))
AppInfo を作る
@ CCP_EXEC_UNKNOWN
内部処理用.使わない.
@ CCP_EXEC_ILLEGAL_PARAMETER
コマンド実行時のパラメタエラー
@ CCP_EXEC_ILLEGAL_CONTEXT
コマンド実行時のその他のエラー
uint16_t CCP_get_param_len(const CommonCmdPacket *packet)
CMD パラメタ長を取得
const uint8_t * CCP_get_param_head(const CommonCmdPacket *packet)
先頭のパラメタのポインタを取得
CCP_CmdRet CCP_make_cmd_ret_without_err_code(CCP_EXEC_STS exec_sts)
コマンド返り値である CCP_CmdRet を作成(エラーコード不使用版)
void * ENDIAN_memcpy(void *dest, const void *src, size_t size)
エンディアンを考慮した memcpy
CCP_CmdRet Cmd_MEM_SET_REGION(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_MEM_COPY_REGION_SEQ(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_MEM_LOAD(const CommonCmdPacket *packet)
const MemoryDump *const memory_dump
AppInfo MEM_create_app(void)
static uint8_t MEM_get_next_adu_counter_(void)
CCP_CmdRet Cmd_MEM_SET_DESTINATION(const CommonCmdPacket *packet)
static void MEM_init_(void)
static MemoryDump memory_dump_
PH_ACK PH_analyze_packet(const CommonTlmCmdPacket *packet)
CTCP を解析する
cycle_t TMGR_get_master_total_cycle(void)
現在の total_cycle を返す