C2A_Core
DS_StreamConfig 構造体

DriverSuperStream の設定 [詳解]

#include <driver_super.h>

DS_StreamConfig 連携図
[凡例]

フィールド

struct {
   uint8_t   is_enabled_
 
   uint8_t   is_strict_frame_search_
 
   uint8_t *   tx_frame_
 
   uint16_t   tx_frame_size_
 
   int16_t   tx_frame_buffer_size_
 
   DS_StreamRecBuffer *   rx_buffer_
 
   const uint8_t *   rx_header_
 
   uint16_t   rx_header_size_
 
   const uint8_t *   rx_footer_
 
   uint16_t   rx_footer_size_
 
   int16_t   rx_frame_size_
 
   uint16_t   max_rx_frame_size_
 
   int16_t   rx_framelength_pos_
 
   uint16_t   rx_framelength_type_size_
 
   uint16_t   rx_framelength_offset_
 
   ENDIAN_TYPE   rx_framelength_endian_
 
   uint8_t   should_monitor_for_tlm_disruption_
 
   uint32_t   time_threshold_for_tlm_disruption_
 
   DS_ERR_CODE(*   data_analyzer_ )(DS_StreamConfig
      *p_stream_config, void
      *p_driver)
 
settings
 設定値 [詳解]
 
struct {
   DS_StreamSendStatus   send_status_
 フレーム送信状況 [詳解]
 
   DS_StreamRecStatus   rec_status_
 フレーム受信状況 [詳解]
 
   uint32_t   general_cmd_tx_count_
 通常コマンド送信回数 [詳解]
 
   uint32_t   req_tlm_cmd_tx_count_
 テレメ要求コマンド送信回数 [詳解]
 
   uint32_t   req_tlm_cmd_tx_count_after_last_tx_
 
   uint32_t   rx_frame_fix_count_
 フレーム受信確定回数 [詳解]
 
   ObcTime   general_cmd_tx_time_
 通常コマンド最終送信時刻 [詳解]
 
   ObcTime   req_tlm_cmd_tx_time_
 テレメ要求コマンド最終送信時刻 [詳解]
 
   ObcTime   rx_frame_fix_time_
 フレーム確定時刻 [詳解]
 
   DS_ERR_CODE   ret_from_data_analyzer_
 data_analyzer_ の返り値 [詳解]
 
info
 取得値(メトリクス) [詳解]
 
struct {
   uint8_t   is_validation_needed_for_send_
 送信前に設定値の Validation が必要か? [詳解]
 
   uint8_t   is_validation_needed_for_rec_
 受信前に設定値の Validation が必要か? [詳解]
 
internal
 内部処理用 [詳解]
 

詳解

DriverSuperStream の設定

    DS_StreamConfig のメンバはすべての Driver から非公開とし, getter / setter でアクセスする

driver_super.h280 行目に定義があります。

フィールド詳解

◆ data_analyzer_

DS_ERR_CODE(* data_analyzer_) (DS_StreamConfig *p_stream_config, void *p_driver)

受信データの解析関数 p_driver は継承先機器のドライバ構造体など 返り値は DS_ERR_CODE DS_data_analyzer_dummy_

driver_super.h368 行目に定義があります。

◆ general_cmd_tx_count_

uint32_t general_cmd_tx_count_

通常コマンド送信回数

driver_super.h380 行目に定義があります。

◆ general_cmd_tx_time_

ObcTime general_cmd_tx_time_

通常コマンド最終送信時刻

driver_super.h386 行目に定義があります。

◆ 

struct { ... } info

取得値(メトリクス)

◆ 

struct { ... } internal

内部処理用

◆ is_enabled_

uint8_t is_enabled_

有効か? 初期値: 0 (無効)

driver_super.h284 行目に定義があります。

◆ is_strict_frame_search_

uint8_t is_strict_frame_search_

厳格なフレーム探索が有効か? ノイズ発生時や複数 stream 使用時にフレーム受信漏れを完全になくすモード

  • OFFの場合(通常はこちら) ヘッダを見つけて,フレーム候補を見つけた後,次のフレームはフレーム候補から探索する
  • ONの場合 ヘッダを見つけて,フレーム候補を見つけた後,次のフレームは,見つけたヘッダ先頭の次バイトから探索する 実行時間は長くなる 複数 stream やノイズが入ってしまった場合など,本来ヘッダでない部分をヘッダとして認識してしまう場合に有効化すると, 論理的なフレーム受信漏れの確率を限りなく 0 に近づけることができる. ヘッダがあるフレームの場合のみ,有効にできる 初期値: 0 (OFF)

driver_super.h287 行目に定義があります。

◆ is_validation_needed_for_rec_

uint8_t is_validation_needed_for_rec_

受信前に設定値の Validation が必要か?

driver_super.h396 行目に定義があります。

◆ is_validation_needed_for_send_

uint8_t is_validation_needed_for_send_

送信前に設定値の Validation が必要か?

driver_super.h395 行目に定義があります。

◆ max_rx_frame_size_

uint16_t max_rx_frame_size_

受信データ(テレメトリ)の想定される最大フレームサイズ これよりも長いフレームが来た(来そうな)場合は,そのフレーム(候補)は破棄される これにより,ヘッダ内部のフレーム長が巨大な値に化けていた場合などに永遠に受信してしまうことを防ぐことができる rx_frame_size_ が固定長の場合は無視される 初期値: 0xffff

driver_super.h333 行目に定義があります。

◆ rec_status_

DS_StreamRecStatus rec_status_

フレーム受信状況

driver_super.h378 行目に定義があります。

◆ req_tlm_cmd_tx_count_

uint32_t req_tlm_cmd_tx_count_

テレメ要求コマンド送信回数

driver_super.h381 行目に定義があります。

◆ req_tlm_cmd_tx_count_after_last_tx_

uint32_t req_tlm_cmd_tx_count_after_last_tx_

最後にテレメを受信してからのテレメ要求コマンド送信回数 これが 0 でない場合,テレメが最新ではない可能性がある

driver_super.h382 行目に定義があります。

◆ req_tlm_cmd_tx_time_

ObcTime req_tlm_cmd_tx_time_

テレメ要求コマンド最終送信時刻

driver_super.h387 行目に定義があります。

◆ ret_from_data_analyzer_

DS_ERR_CODE ret_from_data_analyzer_

data_analyzer_ の返り値

driver_super.h390 行目に定義があります。

◆ rx_buffer_

DS_StreamRecBuffer* rx_buffer_

受信バッファ stream 初期化時に user がメモリを割り当て,設定する 初期値: NULL

driver_super.h312 行目に定義があります。

◆ rx_footer_

const uint8_t* rx_footer_

受信データのフッタ 初期値: NULL

driver_super.h324 行目に定義があります。

◆ rx_footer_size_

uint16_t rx_footer_size_

受信データのフッタサイズ ヘッダがない場合は0に設定 初期値: 0

driver_super.h326 行目に定義があります。

◆ rx_frame_fix_count_

uint32_t rx_frame_fix_count_

フレーム受信確定回数

driver_super.h384 行目に定義があります。

◆ rx_frame_fix_time_

ObcTime rx_frame_fix_time_

フレーム確定時刻

driver_super.h388 行目に定義があります。

◆ rx_frame_size_

int16_t rx_frame_size_

受信データ(テレメトリ)フレームサイズ 受信データがない場合は 0 に設定 受信データが可変の場合は負数に設定 初期値: 0

driver_super.h329 行目に定義があります。

◆ rx_framelength_endian_

ENDIAN_TYPE rx_framelength_endian_

フレームサイズデータのエンディアン 受信データが可変長の場合のみ使用される 初期値: ENDIAN_TYPE_BIG

driver_super.h359 行目に定義があります。

◆ rx_framelength_offset_

uint16_t rx_framelength_offset_

フレームサイズデータのオフセット値 受信データが可変長の場合のみ使用される フレームサイズデータによる可変長データの解析は「フレームの全サイズ」により行われるが, 機器の中にはヘッダとフッタの分は除いたデータ数としてサイズが表現される場合がある その場合のサイズ調整のために使う フレームサイズデータが「フレームの全サイズ」を示している場合には 0 に設定する 初期値: 0

driver_super.h352 行目に定義があります。

◆ rx_framelength_pos_

int16_t rx_framelength_pos_

受信データ内のフレームサイズデータの存在する場所(先頭から数えて何 byte 目に位置するか.0 起算) 受信データが可変長の場合のみ使用される. フレームサイズデータがない場合には負に設定する. 可変長でかつフレームサイズデータのないフレームは,フッタが設定されている場合は有効である. ただし,フッタの探索が必要なため,実行時間は若干遅くなる. もちろん,ヘッダがあることを推奨する.ヘッダがない場合は,受信したデータの冒頭からフレームとみなす. 受信されるフレーム長が受信前に判明している場合は, ヘッダがない場合のときと同様に,受信前(例えば DS_send_req_tlm_cmd 呼び出し前) に rx_frame_size_ を設定することで,固定長のように扱うことで対応することを推奨する. 初期値: -1

driver_super.h338 行目に定義があります。

◆ rx_framelength_type_size_

uint16_t rx_framelength_type_size_

フレームサイズデータの型サイズ [byte] 受信データが可変長の場合のみ使用される. 例えば uint8 なら 1, uint32 なら 4 初期値: 0

driver_super.h348 行目に定義があります。

◆ rx_header_

const uint8_t* rx_header_

受信データのヘッダ 初期値: NULL

driver_super.h315 行目に定義があります。

◆ rx_header_size_

uint16_t rx_header_size_

受信データのヘッダサイズ ヘッダがない場合は0に設定 この場合,基本的には固定長(rx_frame_size が正)を使う. ヘッダがなく,可変長の場合は,受信前(例えば DS_send_req_tlm_cmd 呼び出し前) に rx_frame_size_ を設定することで固定長のように扱うことで対応する. また,初期化時の Validation を通すためにも,初期値は適切な正数にしておくこと 初期値: 0

driver_super.h317 行目に定義があります。

◆ send_status_

DS_StreamSendStatus send_status_

フレーム送信状況

driver_super.h377 行目に定義があります。

◆ 

struct { ... } settings

設定値

◆ should_monitor_for_tlm_disruption_

uint8_t should_monitor_for_tlm_disruption_

テレメ途絶判定をするか? 初期値: 0

driver_super.h363 行目に定義があります。

◆ time_threshold_for_tlm_disruption_

uint32_t time_threshold_for_tlm_disruption_

テレメ途絶判定の閾値 [ms] 初期値: 60 * 1000

driver_super.h365 行目に定義があります。

◆ tx_frame_

uint8_t* tx_frame_

コマンドフレーム FIXME: tx_frame_buffer_ に rename する? 初期値: NULL

driver_super.h299 行目に定義があります。

◆ tx_frame_buffer_size_

int16_t tx_frame_buffer_size_

与えた tx_frame_ の最大サイズ Drivers/Protocol などで, Util が tx_frame_ を使うときに使用 Protocol を使うときは設定しておくと良い(一部の関数は設定しないと使えない) 未指定の場合は負数とする 初期値: -1

driver_super.h306 行目に定義があります。

◆ tx_frame_size_

uint16_t tx_frame_size_

コマンドフレームサイズ tx_frame_ のうち実際に送信するバイト数 送信データがない場合は 0 初期値: 0

driver_super.h302 行目に定義があります。


この構造体詳解は次のファイルから抽出されました: