13 #include "../../Library/print.h"
16 #include "../../TlmCmd/common_cmd_packet_util.h"
61 uint16_t rec_data_len);
73 uint16_t rec_data_len);
147 uint16_t rx_frame_size);
208 const uint8_t* buffer,
249 rx_buffers[0] = rx_buffer;
250 return DS_init_streams(p_super, if_config, rx_buffers, load_init_setting);
268 if (rx_buffers[stream] != NULL)
358 uint16_t rec_data_len;
418 else if (ret_rx == 0)
445 rec_data_len = (uint16_t)ret_rx;
463 uint32_t last_tlm_fix_ago;
510 Printf(
"DS: send_general_cmd\n");
532 Printf(
"DS: send_req_tlm_cmd\n");
584 if (ret != 0)
return ret;
594 #ifdef DS_DEBUG_SHOW_REC_DATA
608 if (flag == 0)
return 0;
618 if (rec_data_len <= 0)
return rec_data_len;
620 #ifdef DS_DEBUG_SHOW_REC_DATA
621 Printf(
"DS: Receive data size is %d bytes, as follow:\n", rec_data_len);
622 for (i = 0; i < rec_data_len; i++)
625 if (i % 4 == 3)
Printf(
" ");
635 uint16_t rec_data_len)
647 uint16_t rec_data_len)
720 pickup_func(p_stream_config);
788 if (pickup_data_len > unprocessed_data_len)
790 pickup_data_len = unprocessed_data_len;
843 if (pickup_data_len > unprocessed_data_len)
845 pickup_data_len = unprocessed_data_len;
861 Printf(
"DS: RX frame size is too long\n");
871 Printf(
"DS: RX frame size is too short\n");
887 if (pickup_data_len > unprocessed_data_len)
889 pickup_data_len = unprocessed_data_len;
909 (uint16_t)rx_frame_size);
937 uint8_t* p_footer_last;
938 int32_t body_data_len;
939 uint16_t processed_data_len;
942 uint16_t estimated_rx_frame_end_pos;
947 p_footer_last = (uint8_t*)
memchr(&(buffer->
buffer[memchr_offset]),
949 (size_t)unprocessed_data_len);
951 if (p_footer_last == NULL)
954 processed_data_len = unprocessed_data_len;
959 processed_data_len = (uint16_t)(p_footer_last - &(buffer->
buffer[memchr_offset]) + 1);
968 Printf(
"DS: RX frame size is too long\n");
974 if (p_footer_last == NULL)
981 if (body_data_len < 0)
1016 uint16_t found_header_offset;
1022 Printf(
"DS: RX header is invalid\n");
1033 (
size_t)unprocessed_data_len);
1035 if (p_header == NULL)
1038 Printf(
"DS: RX header not found\n");
1076 Printf(
"DS: RX header is mismatch\n");
1084 uint16_t rx_frame_size)
1089 uint16_t rec_footer_pos;
1110 Printf(
"DS: RX footer is mismatch\n");
1143 for (i = 0; i < size; ++i)
1158 for (i = 0; i < size; ++i)
1311 (void)p_stream_config;
1324 const uint16_t rx_buffer_size_in_if_rx)
1352 const uint32_t time_threshold_for_rx_disruption)
1444 const uint16_t tx_frame_size)
1456 const int16_t tx_frame_buffer_size)
1470 const uint8_t* rx_header,
1471 const uint16_t rx_header_size)
1484 const uint8_t* rx_footer,
1485 const uint16_t rx_footer_size)
1503 const int16_t rx_frame_size)
1515 const uint16_t max_rx_frame_size)
1522 const int16_t rx_framelength_pos)
1529 const uint16_t rx_framelength_type_size)
1536 const uint16_t rx_framelength_offset)
1572 const uint32_t time_threshold_for_tlm_disruption)
1647 const uint16_t buffer_capacity)
1651 stream_rec_buffer->
buffer = buffer;
1652 stream_rec_buffer->
capacity = buffer_capacity;
1661 if (rx_buffers == NULL)
return;
1665 rx_buffers[stream] = NULL;
1734 if (stream_rec_buffer == NULL)
return;
1735 if (stream_rec_buffer->
buffer == NULL)
return;
1737 memset(stream_rec_buffer->
buffer,
1740 stream_rec_buffer->
size = 0;
1751 int32_t move_size = stream_rec_buffer->
size - size;
1753 if (size == 0)
return;
1757 memmove(&stream_rec_buffer->
buffer[0],
1758 &stream_rec_buffer->
buffer[size],
1768 if (stream_rec_buffer->
size > size)
1770 stream_rec_buffer->
size -= size;
1774 stream_rec_buffer->
size = 0;
1799 const uint8_t* buffer,
1802 uint16_t rest_size = stream_rec_buffer->
capacity - stream_rec_buffer->
size;
1805 memcpy(&stream_rec_buffer->
buffer[stream_rec_buffer->
size],
1808 stream_rec_buffer->
size += size;
1817 if (len < 0)
return 0;
1818 return (uint16_t)len;
@ CCP_EXEC_ILLEGAL_LENGTH
コマンド実行時のコマンド引数長エラー
@ 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 を作成
uint16_t DSSC_get_max_rx_frame_size(const DS_StreamConfig *p_stream_config)
void DS_clear_stream_rec_buffer_(DS_StreamRecBuffer *stream_rec_buffer)
DS_StreamRecBuffer のクリア
void DSSC_enable_strict_frame_search(DS_StreamConfig *p_stream_config)
uint8_t * DSSC_get_tx_frame_as_non_const_pointer(DS_StreamConfig *p_stream_config)
void DSSC_disable(DS_StreamConfig *p_stream_config)
static DS_ERR_CODE DS_data_analyzer_dummy_(DS_StreamConfig *p_stream_config, void *p_driver)
const uint8_t * DSSC_get_tx_frame(DS_StreamConfig *p_stream_config)
static void DS_analyze_rx_buffer_(DS_StreamConfig *p_stream_config, uint16_t rec_data_len)
受信フレーム解析関数
DS_ERR_CODE DS_init_stream_rec_buffer(DS_StreamRecBuffer *stream_rec_buffer, uint8_t *buffer, const uint16_t buffer_capacity)
DS_StreamRecBuffer に確保したメモリを与えて初期化する
uint8_t DSSC_get_is_strict_frame_search(const DS_StreamConfig *p_stream_config)
uint32_t DSSC_get_req_tlm_cmd_tx_count_after_last_tx(const DS_StreamConfig *p_stream_config)
static void DS_analyze_rx_buffer_fixed_pickup_(DS_StreamConfig *p_stream_config)
固定長フレーム解析関数(バイト列処理)
DS_ERR_CODE DS_init(DriverSuper *p_super, void *if_config, DS_StreamRecBuffer *rx_buffer, DS_ERR_CODE(*load_init_setting)(DriverSuper *p_super))
継承先の機器より DriverSuper を初期化する(stream 0 のみの使用の場合)
void DSSC_set_rx_frame_size(DS_StreamConfig *p_stream_config, const int16_t rx_frame_size)
void DSSC_set_rx_framelength_type_size(DS_StreamConfig *p_stream_config, const uint16_t rx_framelength_type_size)
DS_ERR_CODE DS_push_to_stream_rec_buffer_(DS_StreamRecBuffer *stream_rec_buffer, const uint8_t *buffer, uint16_t size)
DS_StreamRecBuffer の追記(後ろへの)
uint32_t DSC_get_rx_count(const DriverSuper *p_super)
void DSC_disable_monitor_for_rx_disruption(DriverSuper *p_super)
uint32_t DSSC_get_general_cmd_tx_count(const DS_StreamConfig *p_stream_config)
uint16_t DS_get_unprocessed_size_from_stream_rec_buffer_(DS_StreamRecBuffer *stream_rec_buffer)
DS_StreamRecBuffer の未処理バッファサイズの取得
const DS_StreamSendStatus * DSSC_get_send_status(const DS_StreamConfig *p_stream_config)
static void DS_analyze_rx_buffer_receiving_header_(DS_StreamConfig *p_stream_config)
フレーム解析関数(ヘッダ受信中)
const ObcTime * DSSC_get_req_tlm_cmd_tx_time(const DS_StreamConfig *p_stream_config)
uint32_t DSC_get_time_threshold_for_rx_disruption(const DriverSuper *p_super)
void DSSC_set_rx_framelength_endian(DS_StreamConfig *p_stream_config, const ENDIAN_TYPE rx_framelength_endian)
DS_STREAM_TLM_DISRUPTION_STATUS_CODE DSSC_get_tlm_disruption_status(const DS_StreamConfig *p_stream_config)
uint8_t DSC_get_should_monitor_for_rx_disruption(const DriverSuper *p_super)
void DSSC_set_tx_frame(DS_StreamConfig *p_stream_config, uint8_t *tx_frame)
uint16_t DSC_get_rx_buffer_size_in_if_rx(const DriverSuper *p_super)
uint32_t DSSC_get_req_tlm_cmd_tx_count(const DS_StreamConfig *p_stream_config)
uint8_t DSSC_get_should_monitor_for_tlm_disruption(const DS_StreamConfig *p_stream_config)
DS_ERR_CODE DS_analyze_rec_data(DriverSuper *p_super, uint8_t stream, void *p_driver)
data_analyzer_ を呼び出し,受信データを解析する.
static void DS_analyze_rx_buffer_prepare_buffer_(DS_StreamConfig *p_stream_config, uint16_t rec_data_len)
解析用受信バッファの準備
void DSSC_set_time_threshold_for_tlm_disruption(DS_StreamConfig *p_stream_config, const uint32_t time_threshold_for_tlm_disruption)
DS_ERR_CODE DS_validate_config(DriverSuper *p_super)
DriverSuper の設定に不整合が生じていないかチェックする
const DS_StreamRecStatus * DSSC_get_rec_status(const DS_StreamConfig *p_stream_config)
void DS_confirm_stream_rec_buffer_(DS_StreamRecBuffer *stream_rec_buffer, uint16_t size)
DS_StreamRecBuffer で指定サイズだけバッファを確定させる
uint16_t DSSC_get_rx_footer_size(const DS_StreamConfig *p_stream_config)
static int DS_rx_(DriverSuper *p_super)
継承先の機器からの受信データがあるか確認し,受信する
void DS_drop_from_stream_rec_buffer_(DS_StreamRecBuffer *stream_rec_buffer, uint16_t size)
DS_StreamRecBuffer の前方要素の削除
uint32_t DSC_get_rx_call_count(const DriverSuper *p_super)
uint16_t DSSC_get_rx_header_size(const DS_StreamConfig *p_stream_config)
void DS_move_forward_frame_head_candidate_of_stream_rec_buffer_(DS_StreamRecBuffer *stream_rec_buffer, uint16_t size)
DS_StreamRecBuffer で指定サイズだけフレーム開始点を前進させる
static void DS_analyze_rx_buffer_cueing_buffer_(DS_StreamConfig *p_stream_config)
フレーム解析関数後の繰越データの頭出し
static void DS_analyze_rx_buffer_variable_pickup_with_footer_(DS_StreamConfig *p_stream_config)
可変フレーム解析関数(バイト列処理)
static void DS_analyze_rx_buffer_finding_header_(DS_StreamConfig *p_stream_config)
フレーム解析関数(ヘッダ探索)
const DS_RecStatus * DSC_get_rec_status(const DriverSuper *p_super)
void DSC_enable_monitor_for_rx_disruption(DriverSuper *p_super)
void DSSC_set_tx_frame_buffer_size(DS_StreamConfig *p_stream_config, const int16_t tx_frame_buffer_size)
void DSSC_set_max_rx_frame_size(DS_StreamConfig *p_stream_config, const uint16_t max_rx_frame_size)
static void DS_analyze_rx_buffer_pickup_(DS_StreamConfig *p_stream_config)
フレーム解析関数
DS_ERR_CODE DS_reset(DriverSuper *p_super)
DriverSuper のリセット
static DS_ERR_CODE DS_load_init_setting_dummy_(DriverSuper *p_super)
DS_RX_DISRUPTION_STATUS_CODE DSC_get_rx_disruption_status(const DriverSuper *p_super)
uint32_t DSSC_get_time_threshold_for_tlm_disruption(const DS_StreamConfig *p_stream_config)
static DS_ERR_CODE DS_send_cmd_(DriverSuper *p_super, uint8_t stream)
コマンド送信処理
CCP_CmdRet DS_conv_cmd_err_to_ccp_cmd_ret(DS_CMD_ERR_CODE code)
DS_CMD_ERR_CODE から CCP_CmdRet への変換関数
void DS_nullify_stream_rec_buffers(DS_StreamRecBuffer *rx_buffers[DS_STREAM_MAX])
DS_StreamRecBuffer の要素数 DS_STREAM_MAX の配列を NULL で初期化する
void DSSC_set_rx_buffer(DS_StreamConfig *p_stream_config, DS_StreamRecBuffer *rx_buffer)
static DS_ERR_CODE DS_reset_stream_config_(DS_StreamConfig *p_stream_config)
DS_StreamConfig 構造体の初期化
DS_ERR_CODE DSSC_get_ret_from_data_analyzer(const DS_StreamConfig *p_stream_config)
uint32_t DSSC_get_rx_frame_fix_count(const DS_StreamConfig *p_stream_config)
const ObcTime * DSSC_get_rx_frame_fix_time(const DS_StreamConfig *p_stream_config)
void DSSC_disable_monitor_for_tlm_disruption(DS_StreamConfig *p_stream_config)
void DSSC_set_rx_framelength_offset(DS_StreamConfig *p_stream_config, const uint16_t rx_framelength_offset)
void DSSC_set_tx_frame_size(DS_StreamConfig *p_stream_config, const uint16_t tx_frame_size)
static uint8_t DS_if_rx_buffer_[DS_IF_RX_BUFFER_SIZE]
IF_RX で受信するときの一次バッファ
CCP_CmdRet DS_conv_driver_err_to_ccp_cmd_ret(DS_DRIVER_ERR_CODE code)
DS_DRIVER_ERR_CODE から CCP_CmdRet への変換関数
const ObcTime * DSC_get_rx_time(const DriverSuper *p_super)
static int DS_tx_(DriverSuper *p_super, uint8_t stream)
継承先の機器にコマンドを発行する
int16_t DSSC_get_rx_frame_size(const DS_StreamConfig *p_stream_config)
void DSSC_set_rx_header(DS_StreamConfig *p_stream_config, const uint8_t *rx_header, const uint16_t rx_header_size)
void DSSC_enable_monitor_for_tlm_disruption(DS_StreamConfig *p_stream_config)
static void DS_analyze_rx_buffer_variable_pickup_with_rx_frame_size_(DS_StreamConfig *p_stream_config)
可変フレーム解析関数(バイト列処理)
static void DS_analyze_rx_buffer_receiving_footer_(DS_StreamConfig *p_stream_config, uint16_t rx_frame_size)
フレーム解析関数(フッタ受信中)
DS_ERR_CODE DS_receive(DriverSuper *p_super)
継承先の機器からテレメトリを受信する
DS_ERR_CODE DS_clear_rx_buffer(DriverSuper *p_super)
受信バッファをクリアする
DS_ERR_CODE DS_init_streams(DriverSuper *p_super, void *if_config, DS_StreamRecBuffer *rx_buffers[DS_STREAM_MAX], DS_ERR_CODE(*load_init_setting)(DriverSuper *p_super))
継承先の機器より DriverSuper を初期化する(複数の stream を使用する場合)
void DSSC_set_data_analyzer(DS_StreamConfig *p_stream_config, DS_ERR_CODE(*data_analyzer)(DS_StreamConfig *p_stream_config, void *p_driver))
DS_ERR_CODE DSC_set_rx_buffer_size_in_if_rx(DriverSuper *p_super, const uint16_t rx_buffer_size_in_if_rx)
const ObcTime * DSSC_get_general_cmd_tx_time(const DS_StreamConfig *p_stream_config)
const uint8_t * DSSC_get_rx_frame(const DS_StreamConfig *p_stream_config)
確定したフレームを取得
void DSSC_disable_strict_frame_search(DS_StreamConfig *p_stream_config)
static DS_ERR_CODE DS_validate_stream_config_(const DriverSuper *p_super, DS_StreamConfig *p_stream_config)
DS_StreamConfig 構造体のバリデーション
uint16_t DSSC_get_tx_frame_size(const DS_StreamConfig *p_stream_config)
int16_t DSSC_get_tx_frame_buffer_size(DS_StreamConfig *p_stream_config)
DS_ERR_CODE DS_send_general_cmd(DriverSuper *p_super, uint8_t stream)
継承先の機器に一般コマンドを発行する
uint8_t DSSC_get_is_enabled(const DS_StreamConfig *p_stream_config)
void DSSC_enable(DS_StreamConfig *p_stream_config)
void DSSC_set_rx_framelength_pos(DS_StreamConfig *p_stream_config, const int16_t rx_framelength_pos)
DS_ERR_CODE DS_send_req_tlm_cmd(DriverSuper *p_super, uint8_t stream)
継承先の機器にテレメ要求コマンドを発行する
void DSC_set_time_threshold_for_rx_disruption(DriverSuper *p_super, const uint32_t time_threshold_for_rx_disruption)
uint16_t DSSC_get_fixed_rx_frame_size(const DS_StreamConfig *p_stream_config)
確定したフレームのサイズを取得
static uint32_t DS_analyze_rx_buffer_get_framelength_(DS_StreamConfig *p_stream_config)
フレーム解析中に受信したフレームからフレーム長を取得する関数
void DSSC_set_rx_footer(DS_StreamConfig *p_stream_config, const uint8_t *rx_footer, const uint16_t rx_footer_size)
各制御センサ・アクチュエータ等とのインターフェースドライバ群のスーパークラス
@ DS_STREAM_REC_STATUS_OTHER_ERR
@ DS_STREAM_REC_STATUS_RX_ERR
IF_RX でエラー
@ DS_STREAM_REC_STATUS_FOOTER_MISMATCH
@ DS_STREAM_REC_STATUS_RX_FRAME_TOO_SHORT
@ DS_STREAM_REC_STATUS_FINDING_HEADER
@ DS_STREAM_REC_STATUS_RECEIVING_FOOTER
@ DS_STREAM_REC_STATUS_VALIDATE_ERR
受信前に validate_config でエラー
@ DS_STREAM_REC_STATUS_HEADER_MISMATCH
@ DS_STREAM_REC_STATUS_RX_FRAME_TOO_LONG
@ DS_STREAM_REC_STATUS_RECEIVING_HEADER
@ DS_STREAM_REC_STATUS_RECEIVING_DATA
@ DS_STREAM_REC_STATUS_FIXED_FRAME
@ DS_STREAM_REC_STATUS_RECEIVING_FRAMELENGTH
可変長フレームでの,フレーム長データを受信中
@ DS_STREAM_REC_STATUS_DISABLE
DS_STREAM_TLM_DISRUPTION_STATUS_CODE
@ DS_STREAM_TLM_DISRUPTION_STATUS_LOST
テレメ途絶検出
@ DS_STREAM_TLM_DISRUPTION_STATUS_OK
テレメ途絶していない or テレメ途絶判定をしない状態
DS_CMD_ERR_CODE
各DIが Driver にコマンドを送るときに,統一的に使うコード
@ DS_CMD_ILLEGAL_PARAMETER
CCP_EXEC_ILLEGAL_PARAMETER に対応.ヒーターの個数など,HW 依存部は Driver でみる
@ DS_CMD_ILLEGAL_LENGTH
CCP_EXEC_ILLEGAL_LENGTH に対応.これは基本的にはDIで見るはずなので,使われないことを想定
@ DS_CMD_ILLEGAL_CONTEXT
CCP_EXEC_ILLEGAL_CONTEXT に対応.DIでみることも多いはず.HW依存部は Driver でみる
DS_DRIVER_ERR_CODE
Driver の汎用エラーコード
@ DS_DRIVER_ERR_CODE_ILLEGAL_PARAMETER
CCP_EXEC_ILLEGAL_PARAMETER に対応
@ DS_DRIVER_ERR_CODE_ILLEGAL_LENGTH
CCP_EXEC_ILLEGAL_PARAMETER に対応
@ DS_DRIVER_ERR_CODE_ILLEGAL_CONTEXT
CCP_EXEC_ILLEGAL_CONTEXT に対応
@ DS_DRIVER_ERR_CODE_UNKNOWN_ERR
UNKNOWN ERR
DS_ERR_CODE
DriverSuper の汎用エラーコード
@ DS_ERR_CODE_OK
返り値は継承先や IF 先で上書きされるため,OK は 0 であることが必須
@ DS_STREAM_SEND_STATUS_VALIDATE_ERR
送信前に validate_config でエラー
@ DS_STREAM_SEND_STATUS_DISABLE
@ DS_STREAM_SEND_STATUS_OK
@ DS_STREAM_SEND_STATUS_TX_ERR
IF_TX でエラー
DS_RX_DISRUPTION_STATUS_CODE
受信途絶判定コード
@ DS_RX_DISRUPTION_STATUS_LOST
受信途絶検出
@ DS_RX_DISRUPTION_STATUS_OK
受信途絶していない or 受信途絶判定をしない状態
#define DS_IF_RX_BUFFER_SIZE
@ ENDIAN_TYPE_BIG
big-endian
@ ENDIAN_TYPE_LITTLE
little-endian
int(* IF_RX[])(void *my_if, void *data_v, int buffer_size)
int(* IF_init[])(void *my_if)
int(* IF_TX[])(void *my_if, void *data_v, int data_size)
void * memchr(const void *buf, int c, size_t n)
uint32_t OBCT_diff_in_msec(const ObcTime *before, const ObcTime *after)
ObcTime の引き算をミリ秒単位で行う
void Printf(const char *format,...)
DS_ERR_CODE(* load_init_setting)(DriverSuper *p_super)
uint8_t should_monitor_for_rx_disruption_
ObcTime rx_time_
なにかしらのデータの受信時刻
struct DS_Config::@4 internal
内部処理用
uint32_t time_threshold_for_rx_disruption_
DS_RecStatus rec_status_
IF受信状況
uint32_t rx_count_
なにかしらのデータの受信回数
uint32_t rx_call_count_
DS_receive 呼び出し回数
struct DS_Config::@3 info
取得値(メトリクス)
uint16_t rx_buffer_size_in_if_rx_
struct DS_Config::@2 settings
設定値
DS_RX_DISRUPTION_STATUS_CODE rx_disruption_status
受信途絶判定
int ret_from_if_rx
IF_RX の返り値
uint8_t is_validation_needed_for_rec_
受信前に設定値の Validation が必要か?
uint32_t req_tlm_cmd_tx_count_
テレメ要求コマンド送信回数
uint16_t rx_framelength_type_size_
struct DS_StreamConfig::@7 internal
内部処理用
struct DS_StreamConfig::@6 info
取得値(メトリクス)
uint8_t should_monitor_for_tlm_disruption_
DS_StreamRecBuffer * rx_buffer_
int16_t rx_framelength_pos_
uint32_t general_cmd_tx_count_
通常コマンド送信回数
DS_ERR_CODE ret_from_data_analyzer_
data_analyzer_ の返り値
uint16_t rx_framelength_offset_
int16_t tx_frame_buffer_size_
DS_StreamSendStatus send_status_
フレーム送信状況
const uint8_t * rx_footer_
DS_StreamRecStatus rec_status_
フレーム受信状況
ObcTime req_tlm_cmd_tx_time_
テレメ要求コマンド最終送信時刻
ObcTime general_cmd_tx_time_
通常コマンド最終送信時刻
uint8_t is_validation_needed_for_send_
送信前に設定値の Validation が必要か?
DS_ERR_CODE(* data_analyzer_)(DS_StreamConfig *p_stream_config, void *p_driver)
const uint8_t * rx_header_
ENDIAN_TYPE rx_framelength_endian_
uint16_t max_rx_frame_size_
uint32_t req_tlm_cmd_tx_count_after_last_tx_
ObcTime rx_frame_fix_time_
フレーム確定時刻
uint32_t time_threshold_for_tlm_disruption_
struct DS_StreamConfig::@5 settings
設定値
uint8_t is_strict_frame_search_
uint32_t rx_frame_fix_count_
フレーム受信確定回数
uint8_t * buffer
バッファ本体となる uint8_t 配列.外部から与える
uint16_t pos_of_frame_head_candidate
フレーム開始点の候補
uint16_t pos_of_last_rec
最後に受信したデータを格納した位置
uint16_t confirmed_frame_len
受信フレームとして受理された pos_of_frame_head_candidate からの長さ(フレーム確定後,これがフレーム長になる)
uint16_t capacity
buffer のメモリ確保量
uint8_t is_frame_fixed
このバッファ上でフレームが確定してるか?
DS_STREAM_REC_STATUS_CODE status_code
status
uint32_t count_of_carry_over_failures
uint16_t fixed_frame_len
フレーム確定したときのフレーム長さ
DS_STREAM_TLM_DISRUPTION_STATUS_CODE tlm_disruption_status
テレメ途絶判定
int ret_from_if_tx
IF_TX の返り値
DS_STREAM_SEND_STATUS_CODE status_code
status
DriverSuper の設定 各 IF はこれを継承してつかう.
IF_LIST_ENUM interface
継承先の機器の使用 IF
DS_StreamConfig stream_config[DS_STREAM_MAX]
DS_Config config
DriverSuper の設定
ObcTime TMGR_get_master_clock(void)
現在の master_clock_ を取得する