C2A_Core
driver_super.h
[詳解]
1 
23 #ifndef DRIVER_SUPER_H_
24 #define DRIVER_SUPER_H_
25 
27 #include <stdint.h>
28 #include "../../Library/endian.h" // パスが不定な自動生成コード類で使えるように
29 #include "../../System/TimeManager/time_manager.h"
30 
31 #define DS_STREAM_MAX (3)
33 #define DS_IF_RX_BUFFER_SIZE (1024)
38 
39 typedef struct DriverSuper DriverSuper;
40 typedef struct DS_StreamConfig DS_StreamConfig;
41 
55 typedef enum
56 {
63 
69 typedef enum
70 {
71  DS_INIT_OK = 0,
75  DS_INIT_UNKNOWN_ERR = 255
77 
83 typedef enum
84 {
85  DS_REC_OK = 0,
89  DS_REC_UNKNOWN_ERR = 255
91 
99 typedef enum
100 {
101  DS_CMD_OK = 0,
106  DS_CMD_UNKNOWN_ERR = 255
108 
115 typedef enum
116 {
118  DS_ERR_CODE_ERR = 1
120 
126 typedef enum
127 {
131 
136 typedef struct
137 {
140 } DS_RecStatus;
141 
147 typedef enum
148 {
155 
160 typedef struct
161 {
164  // 今後詳細情報を拡張するなら,ここに入れる
166 
172 typedef enum
173 {
189 
195 typedef enum
196 {
200 
205 typedef struct
206 {
208  uint16_t fixed_frame_len;
212  // 今後詳細情報を拡張するなら,ここに入れる(ref. EQU Driver Super の DRIVE_Super_rec など)
214 
221 typedef struct
222 {
223  uint8_t* buffer;
224  uint16_t capacity;
225  uint16_t size;
228  uint8_t is_frame_fixed;
229  uint16_t pos_of_last_rec;
231 
239 typedef struct
240 {
241  struct
242  {
255 
256  struct
257  {
259 
260  uint32_t rx_count_;
261  uint32_t rx_call_count_;
262 
264  } info;
265 
266  struct
267  {
268  DS_ERR_CODE (*load_init_setting)(DriverSuper* p_super);
271  } internal;
272 } DS_Config;
273 
281 {
282  struct
283  {
284  uint8_t is_enabled_;
299  uint8_t* tx_frame_;
302  uint16_t tx_frame_size_;
315  const uint8_t* rx_header_;
317  uint16_t rx_header_size_;
324  const uint8_t* rx_footer_;
326  uint16_t rx_footer_size_;
329  int16_t rx_frame_size_;
368  DS_ERR_CODE (*data_analyzer_)(DS_StreamConfig* p_stream_config, void* p_driver);
374 
375  struct
376  {
379 
385 
389 
391  } info;
392 
393  struct
394  {
397  } internal;
398 };
399 // TODO: Protocol 用に data_link_layer_ を追加
400 
407 {
408  // 【継承先まで公開】
410  void* if_config;
411 
413 
419 };
420 
421 
422 // ###### DriverSuper 基本関数 ######
423 
438  void* if_config,
439  DS_StreamRecBuffer* rx_buffer,
440  DS_ERR_CODE (*load_init_setting)(DriverSuper* p_super));
441 
456  void* if_config,
457  DS_StreamRecBuffer* rx_buffers[DS_STREAM_MAX],
458  DS_ERR_CODE (*load_init_setting)(DriverSuper* p_super));
459 
467 
478 
489 
502 
513 DS_ERR_CODE DS_analyze_rec_data(DriverSuper* p_super, uint8_t stream, void* p_driver);
514 
527 DS_ERR_CODE DS_send_general_cmd(DriverSuper* p_super, uint8_t stream);
528 
540 DS_ERR_CODE DS_send_req_tlm_cmd(DriverSuper* p_super, uint8_t stream);
541 
542 
543 // ###### DS_Config Getter/Setter of Settings ######
544 uint16_t DSC_get_rx_buffer_size_in_if_rx(const DriverSuper* p_super);
546  const uint16_t rx_buffer_size_in_if_rx);
552  const uint32_t time_threshold_for_rx_disruption);
553 
554 
555 // ###### DS_Config Getter of Info ######
556 const DS_RecStatus* DSC_get_rec_status(const DriverSuper* p_super);
557 uint32_t DSC_get_rx_count(const DriverSuper* p_super);
558 uint32_t DSC_get_rx_call_count(const DriverSuper* p_super);
559 const ObcTime* DSC_get_rx_time(const DriverSuper* p_super);
560 
562 
563 
564 // ###### DS_StreamConfig Getter/Setter of Settings ######
565 uint8_t DSSC_get_is_enabled(const DS_StreamConfig* p_stream_config);
566 void DSSC_enable(DS_StreamConfig* p_stream_config);
567 void DSSC_disable(DS_StreamConfig* p_stream_config);
568 
569 uint8_t DSSC_get_is_strict_frame_search(const DS_StreamConfig* p_stream_config);
570 void DSSC_enable_strict_frame_search(DS_StreamConfig* p_stream_config);
572 
573 const uint8_t* DSSC_get_tx_frame(DS_StreamConfig* p_stream_config);
575 void DSSC_set_tx_frame(DS_StreamConfig* p_stream_config,
576  uint8_t* tx_frame);
577 uint16_t DSSC_get_tx_frame_size(const DS_StreamConfig* p_stream_config);
578 void DSSC_set_tx_frame_size(DS_StreamConfig* p_stream_config,
579  const uint16_t tx_frame_size);
580 int16_t DSSC_get_tx_frame_buffer_size(DS_StreamConfig* p_stream_config);
581 void DSSC_set_tx_frame_buffer_size(DS_StreamConfig* p_stream_config,
582  const int16_t tx_frame_buffer_size);
583 
584 void DSSC_set_rx_buffer(DS_StreamConfig* p_stream_config,
585  DS_StreamRecBuffer* rx_buffer);
586 void DSSC_set_rx_header(DS_StreamConfig* p_stream_config,
587  const uint8_t* rx_header,
588  const uint16_t rx_header_size);
589 uint16_t DSSC_get_rx_header_size(const DS_StreamConfig* p_stream_config);
590 void DSSC_set_rx_footer(DS_StreamConfig* p_stream_config,
591  const uint8_t* rx_footer,
592  const uint16_t rx_footer_size);
593 uint16_t DSSC_get_rx_footer_size(const DS_StreamConfig* p_stream_config);
594 int16_t DSSC_get_rx_frame_size(const DS_StreamConfig* p_stream_config);
595 void DSSC_set_rx_frame_size(DS_StreamConfig* p_stream_config,
596  const int16_t rx_frame_size);
597 uint16_t DSSC_get_max_rx_frame_size(const DS_StreamConfig* p_stream_config);
598 void DSSC_set_max_rx_frame_size(DS_StreamConfig* p_stream_config,
599  const uint16_t max_rx_frame_size);
600 
601 void DSSC_set_rx_framelength_pos(DS_StreamConfig* p_stream_config,
602  const int16_t rx_framelength_pos);
604  const uint16_t rx_framelength_type_size);
605 void DSSC_set_rx_framelength_offset(DS_StreamConfig* p_stream_config,
606  const uint16_t rx_framelength_offset);
607 void DSSC_set_rx_framelength_endian(DS_StreamConfig* p_stream_config,
608  const ENDIAN_TYPE rx_framelength_endian);
609 
610 uint8_t DSSC_get_should_monitor_for_tlm_disruption(const DS_StreamConfig* p_stream_config);
613 uint32_t DSSC_get_time_threshold_for_tlm_disruption(const DS_StreamConfig* p_stream_config);
615  const uint32_t time_threshold_for_tlm_disruption);
616 
617 void DSSC_set_data_analyzer(DS_StreamConfig* p_stream_config,
618  DS_ERR_CODE (*data_analyzer)(DS_StreamConfig* p_stream_config, void* p_driver));
619 
620 
621 // ###### DS_StreamConfig Getter of Info ######
622 const DS_StreamSendStatus* DSSC_get_send_status(const DS_StreamConfig* p_stream_config);
623 const DS_StreamRecStatus* DSSC_get_rec_status(const DS_StreamConfig* p_stream_config);
624 
625 uint32_t DSSC_get_general_cmd_tx_count(const DS_StreamConfig* p_stream_config);
626 uint32_t DSSC_get_req_tlm_cmd_tx_count(const DS_StreamConfig* p_stream_config);
627 uint32_t DSSC_get_req_tlm_cmd_tx_count_after_last_tx(const DS_StreamConfig* p_stream_config);
628 uint32_t DSSC_get_rx_frame_fix_count(const DS_StreamConfig* p_stream_config);
629 
630 const ObcTime* DSSC_get_general_cmd_tx_time(const DS_StreamConfig* p_stream_config);
631 const ObcTime* DSSC_get_req_tlm_cmd_tx_time(const DS_StreamConfig* p_stream_config);
632 const ObcTime* DSSC_get_rx_frame_fix_time(const DS_StreamConfig* p_stream_config);
633 
635 
637 
638 
639 // ###### Driver 汎用 Util 関数 ######
640 
649  uint8_t* buffer,
650  const uint16_t buffer_capacity);
651 
659 
669 
679 
680 
681 // ###### Driver Stream Config 汎用 Util 関数 ######
682 
694 const uint8_t* DSSC_get_rx_frame(const DS_StreamConfig* p_stream_config);
695 
702 uint16_t DSSC_get_fixed_rx_frame_size(const DS_StreamConfig* p_stream_config);
703 
704 #endif
uint16_t DSSC_get_max_rx_frame_size(const DS_StreamConfig *p_stream_config)
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)
const uint8_t * DSSC_get_tx_frame(DS_StreamConfig *p_stream_config)
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)
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 のみの使用の場合)
Definition: driver_super.c:242
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)
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)
const DS_StreamSendStatus * DSSC_get_send_status(const 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)
DS_STREAM_REC_STATUS_CODE
DS_StreamRecStatus でつかう.テレメ受信の状態遷移を示す
Definition: driver_super.h:173
@ DS_STREAM_REC_STATUS_OTHER_ERR
Definition: driver_super.h:187
@ DS_STREAM_REC_STATUS_RX_ERR
IF_RX でエラー
Definition: driver_super.h:185
@ DS_STREAM_REC_STATUS_FOOTER_MISMATCH
Definition: driver_super.h:182
@ DS_STREAM_REC_STATUS_RX_FRAME_TOO_SHORT
Definition: driver_super.h:184
@ DS_STREAM_REC_STATUS_FINDING_HEADER
Definition: driver_super.h:174
@ DS_STREAM_REC_STATUS_RECEIVING_FOOTER
Definition: driver_super.h:178
@ DS_STREAM_REC_STATUS_VALIDATE_ERR
受信前に validate_config でエラー
Definition: driver_super.h:186
@ DS_STREAM_REC_STATUS_HEADER_MISMATCH
Definition: driver_super.h:181
@ DS_STREAM_REC_STATUS_RX_FRAME_TOO_LONG
Definition: driver_super.h:183
@ DS_STREAM_REC_STATUS_RECEIVING_HEADER
Definition: driver_super.h:175
@ DS_STREAM_REC_STATUS_RECEIVING_DATA
Definition: driver_super.h:177
@ DS_STREAM_REC_STATUS_FIXED_FRAME
Definition: driver_super.h:179
@ DS_STREAM_REC_STATUS_RECEIVING_FRAMELENGTH
可変長フレームでの,フレーム長データを受信中
Definition: driver_super.h:176
@ DS_STREAM_REC_STATUS_DISABLE
Definition: driver_super.h:180
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)
DS_STREAM_TLM_DISRUPTION_STATUS_CODE
Definition: driver_super.h:196
@ DS_STREAM_TLM_DISRUPTION_STATUS_LOST
テレメ途絶検出
Definition: driver_super.h:198
@ DS_STREAM_TLM_DISRUPTION_STATUS_OK
テレメ途絶していない or テレメ途絶判定をしない状態
Definition: driver_super.h:197
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_ を呼び出し,受信データを解析する.
Definition: driver_super.c:486
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 の設定に不整合が生じていないかチェックする
Definition: driver_super.c:319
const DS_StreamRecStatus * DSSC_get_rec_status(const DS_StreamConfig *p_stream_config)
uint16_t DSSC_get_rx_footer_size(const DS_StreamConfig *p_stream_config)
uint32_t DSC_get_rx_call_count(const DriverSuper *p_super)
uint16_t DSSC_get_rx_header_size(const DS_StreamConfig *p_stream_config)
DS_INIT_ERR_CODE
Driver の初期化関数のエラーコード
Definition: driver_super.h:70
@ DS_INIT_UNKNOWN_ERR
UNKNOWN ERR
Definition: driver_super.h:75
@ DS_INIT_PARAMETER_ERR
初期化パラメタエラー
Definition: driver_super.h:73
@ DS_INIT_OTHER_ERR
その他のエラー
Definition: driver_super.h:74
@ DS_INIT_OK
OK
Definition: driver_super.h:71
@ DS_INIT_DS_INIT_ERR
DS_init でのエラー
Definition: driver_super.h:72
#define DS_STREAM_MAX
Definition: driver_super.h:31
const DS_RecStatus * DSC_get_rec_status(const DriverSuper *p_super)
DS_REC_ERR_CODE
Driver の受信関数のエラーコード
Definition: driver_super.h:84
@ DS_REC_OTHER_ERR
その他のエラー
Definition: driver_super.h:88
@ DS_REC_OK
OK
Definition: driver_super.h:85
@ DS_REC_ANALYZE_ERR
DS_analyze_rec_data でのエラー
Definition: driver_super.h:87
@ DS_REC_DS_RECEIVE_ERR
DS_receive でのエラー
Definition: driver_super.h:86
@ DS_REC_UNKNOWN_ERR
UNKNOWN ERR
Definition: driver_super.h:89
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)
DS_ERR_CODE DS_reset(DriverSuper *p_super)
DriverSuper のリセット
Definition: driver_super.c:287
DS_CMD_ERR_CODE
各DIが Driver にコマンドを送るときに,統一的に使うコード
Definition: driver_super.h:100
@ DS_CMD_OK
OKは0であることを保証する
Definition: driver_super.h:101
@ DS_CMD_ILLEGAL_PARAMETER
CCP_EXEC_ILLEGAL_PARAMETER に対応.ヒーターの個数など,HW 依存部は Driver でみる
Definition: driver_super.h:103
@ DS_CMD_ILLEGAL_LENGTH
CCP_EXEC_ILLEGAL_LENGTH に対応.これは基本的にはDIで見るはずなので,使われないことを想定
Definition: driver_super.h:104
@ DS_CMD_UNKNOWN_ERR
Definition: driver_super.h:106
@ DS_CMD_ILLEGAL_CONTEXT
CCP_EXEC_ILLEGAL_CONTEXT に対応.DIでみることも多いはず.HW依存部は Driver でみる
Definition: driver_super.h:102
@ DS_CMD_DRIVER_SUPER_ERR
DriverSuper 側,つまり配送の低レイヤーでエラーが起きた場合
Definition: driver_super.h:105
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)
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)
DS_DRIVER_ERR_CODE
Driver の汎用エラーコード
Definition: driver_super.h:56
@ DS_DRIVER_ERR_CODE_ILLEGAL_PARAMETER
CCP_EXEC_ILLEGAL_PARAMETER に対応
Definition: driver_super.h:59
@ DS_DRIVER_ERR_CODE_ILLEGAL_LENGTH
CCP_EXEC_ILLEGAL_PARAMETER に対応
Definition: driver_super.h:60
@ DS_DRIVER_ERR_CODE_ILLEGAL_CONTEXT
CCP_EXEC_ILLEGAL_CONTEXT に対応
Definition: driver_super.h:58
@ DS_DRIVER_ERR_CODE_OK
OK
Definition: driver_super.h:57
@ DS_DRIVER_ERR_CODE_UNKNOWN_ERR
UNKNOWN ERR
Definition: driver_super.h:61
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)
DS_ERR_CODE
DriverSuper の汎用エラーコード
Definition: driver_super.h:116
@ DS_ERR_CODE_ERR
Definition: driver_super.h:118
@ DS_ERR_CODE_OK
返り値は継承先や IF 先で上書きされるため,OK は 0 であることが必須
Definition: driver_super.h:117
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)
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)
DS_ERR_CODE DS_receive(DriverSuper *p_super)
継承先の機器からテレメトリを受信する
Definition: driver_super.c:355
DS_ERR_CODE DS_clear_rx_buffer(DriverSuper *p_super)
受信バッファをクリアする
Definition: driver_super.c:337
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 を使用する場合)
Definition: driver_super.c:254
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)
DS_STREAM_SEND_STATUS_CODE
DS_StreamSendStatus でつかう.コマンド受信の状態を示す
Definition: driver_super.h:148
@ DS_STREAM_SEND_STATUS_VALIDATE_ERR
送信前に validate_config でエラー
Definition: driver_super.h:152
@ DS_STREAM_SEND_STATUS_DISABLE
Definition: driver_super.h:150
@ DS_STREAM_SEND_STATUS_OTHER_ERR
Definition: driver_super.h:153
@ DS_STREAM_SEND_STATUS_OK
Definition: driver_super.h:149
@ DS_STREAM_SEND_STATUS_TX_ERR
IF_TX でエラー
Definition: driver_super.h:151
DS_RX_DISRUPTION_STATUS_CODE
受信途絶判定コード
Definition: driver_super.h:127
@ DS_RX_DISRUPTION_STATUS_LOST
受信途絶検出
Definition: driver_super.h:129
@ DS_RX_DISRUPTION_STATUS_OK
受信途絶していない or 受信途絶判定をしない状態
Definition: driver_super.h:128
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)
継承先の機器に一般コマンドを発行する
Definition: driver_super.c:496
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)
継承先の機器にテレメ要求コマンドを発行する
Definition: driver_super.c:517
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)
確定したフレームのサイズを取得
void DSSC_set_rx_footer(DS_StreamConfig *p_stream_config, const uint8_t *rx_footer, const uint16_t rx_footer_size)
DriverSuperパラメタのオーバーライド用ヘッダー
ENDIAN_TYPE
エンディアンを定義するため
Definition: endian.h:16
IF_LIST_ENUM
Definition: if_list.h:9
C89 環境用 stdint.h
コマンド返り値
DriverSuper の設定
Definition: driver_super.h:240
uint8_t should_monitor_for_rx_disruption_
Definition: driver_super.h:250
ObcTime rx_time_
なにかしらのデータの受信時刻
Definition: driver_super.h:263
uint32_t time_threshold_for_rx_disruption_
Definition: driver_super.h:252
DS_RecStatus rec_status_
IF受信状況
Definition: driver_super.h:258
uint32_t rx_count_
なにかしらのデータの受信回数
Definition: driver_super.h:260
uint32_t rx_call_count_
DS_receive 呼び出し回数
Definition: driver_super.h:261
uint16_t rx_buffer_size_in_if_rx_
Definition: driver_super.h:243
IF 受信状況
Definition: driver_super.h:137
DS_RX_DISRUPTION_STATUS_CODE rx_disruption_status
受信途絶判定
Definition: driver_super.h:139
int ret_from_if_rx
IF_RX の返り値
Definition: driver_super.h:138
DriverSuperStream の設定
Definition: driver_super.h:281
uint8_t is_validation_needed_for_rec_
受信前に設定値の Validation が必要か?
Definition: driver_super.h:396
uint32_t req_tlm_cmd_tx_count_
テレメ要求コマンド送信回数
Definition: driver_super.h:381
uint16_t rx_framelength_type_size_
Definition: driver_super.h:348
struct DS_StreamConfig::@6 info
取得値(メトリクス)
uint8_t should_monitor_for_tlm_disruption_
Definition: driver_super.h:363
DS_StreamRecBuffer * rx_buffer_
Definition: driver_super.h:312
int16_t rx_framelength_pos_
Definition: driver_super.h:338
uint32_t general_cmd_tx_count_
通常コマンド送信回数
Definition: driver_super.h:380
DS_ERR_CODE ret_from_data_analyzer_
data_analyzer_ の返り値
Definition: driver_super.h:390
int16_t rx_frame_size_
Definition: driver_super.h:329
uint16_t rx_framelength_offset_
Definition: driver_super.h:352
int16_t tx_frame_buffer_size_
Definition: driver_super.h:306
DS_StreamSendStatus send_status_
フレーム送信状況
Definition: driver_super.h:377
uint8_t is_enabled_
Definition: driver_super.h:284
const uint8_t * rx_footer_
Definition: driver_super.h:324
DS_StreamRecStatus rec_status_
フレーム受信状況
Definition: driver_super.h:378
ObcTime req_tlm_cmd_tx_time_
テレメ要求コマンド最終送信時刻
Definition: driver_super.h:387
uint16_t rx_footer_size_
Definition: driver_super.h:326
ObcTime general_cmd_tx_time_
通常コマンド最終送信時刻
Definition: driver_super.h:386
uint8_t * tx_frame_
Definition: driver_super.h:299
uint16_t tx_frame_size_
Definition: driver_super.h:302
uint8_t is_validation_needed_for_send_
送信前に設定値の Validation が必要か?
Definition: driver_super.h:395
DS_ERR_CODE(* data_analyzer_)(DS_StreamConfig *p_stream_config, void *p_driver)
Definition: driver_super.h:368
const uint8_t * rx_header_
Definition: driver_super.h:315
ENDIAN_TYPE rx_framelength_endian_
Definition: driver_super.h:359
uint16_t max_rx_frame_size_
Definition: driver_super.h:333
uint32_t req_tlm_cmd_tx_count_after_last_tx_
Definition: driver_super.h:382
ObcTime rx_frame_fix_time_
フレーム確定時刻
Definition: driver_super.h:388
uint32_t time_threshold_for_tlm_disruption_
Definition: driver_super.h:365
struct DS_StreamConfig::@5 settings
設定値
uint16_t rx_header_size_
Definition: driver_super.h:317
uint8_t is_strict_frame_search_
Definition: driver_super.h:287
uint32_t rx_frame_fix_count_
フレーム受信確定回数
Definition: driver_super.h:384
フレーム受信バッファ
Definition: driver_super.h:222
uint8_t * buffer
バッファ本体となる uint8_t 配列.外部から与える
Definition: driver_super.h:223
uint16_t pos_of_frame_head_candidate
フレーム開始点の候補
Definition: driver_super.h:226
uint16_t pos_of_last_rec
最後に受信したデータを格納した位置
Definition: driver_super.h:229
uint16_t confirmed_frame_len
受信フレームとして受理された pos_of_frame_head_candidate からの長さ(フレーム確定後,これがフレーム長になる)
Definition: driver_super.h:227
uint16_t capacity
buffer のメモリ確保量
Definition: driver_super.h:224
uint8_t is_frame_fixed
このバッファ上でフレームが確定してるか?
Definition: driver_super.h:228
uint16_t size
現在使われているサイズ
Definition: driver_super.h:225
フレーム受信状況
Definition: driver_super.h:206
DS_STREAM_REC_STATUS_CODE status_code
status
Definition: driver_super.h:207
uint32_t count_of_carry_over_failures
Definition: driver_super.h:210
uint16_t fixed_frame_len
フレーム確定したときのフレーム長さ
Definition: driver_super.h:208
DS_STREAM_TLM_DISRUPTION_STATUS_CODE tlm_disruption_status
テレメ途絶判定
Definition: driver_super.h:209
フレーム送信状況
Definition: driver_super.h:161
int ret_from_if_tx
IF_TX の返り値
Definition: driver_super.h:163
DS_STREAM_SEND_STATUS_CODE status_code
status
Definition: driver_super.h:162
DriverSuper の設定 各 IF はこれを継承してつかう.
Definition: driver_super.h:407
IF_LIST_ENUM interface
継承先の機器の使用 IF
Definition: driver_super.h:409
DS_StreamConfig stream_config[DS_STREAM_MAX]
Definition: driver_super.h:414
DS_Config config
DriverSuper の設定
Definition: driver_super.h:412
void * if_config
IF 設定
Definition: driver_super.h:410
OBCの時刻情報を保持する構造体
Definition: obc_time.h:18