C2A_Core
driver_super.h ファイル

各制御センサ・アクチュエータ等とのインターフェースドライバ群のスーパークラス [詳解]

driver_super.h の依存先関係図:
被依存関係図:

[ソースコード]

データ構造

struct  DS_RecStatus
 IF 受信状況 [詳解]
 
struct  DS_StreamSendStatus
 フレーム送信状況 [詳解]
 
struct  DS_StreamRecStatus
 フレーム受信状況 [詳解]
 
struct  DS_StreamRecBuffer
 フレーム受信バッファ [詳解]
 
struct  DS_Config
 DriverSuper の設定 [詳解]
 
struct  DS_StreamConfig
 DriverSuperStream の設定 [詳解]
 
struct  DriverSuper
 DriverSuper の設定 各 IF はこれを継承してつかう. [詳解]
 

マクロ定義

#define DS_STREAM_MAX   (3)
 
#define DS_IF_RX_BUFFER_SIZE   (1024)
 

型定義

typedef struct DriverSuper DriverSuper
 
typedef struct DS_StreamConfig DS_StreamConfig
 

列挙型

enum  DS_DRIVER_ERR_CODE {
  DS_DRIVER_ERR_CODE_OK = 0 , DS_DRIVER_ERR_CODE_ILLEGAL_CONTEXT , DS_DRIVER_ERR_CODE_ILLEGAL_PARAMETER , DS_DRIVER_ERR_CODE_ILLEGAL_LENGTH ,
  DS_DRIVER_ERR_CODE_UNKNOWN_ERR = 255
}
 Driver の汎用エラーコード [詳解]
 
enum  DS_INIT_ERR_CODE {
  DS_INIT_OK = 0 , DS_INIT_DS_INIT_ERR , DS_INIT_PARAMETER_ERR , DS_INIT_OTHER_ERR ,
  DS_INIT_UNKNOWN_ERR = 255
}
 Driver の初期化関数のエラーコード [詳解]
 
enum  DS_REC_ERR_CODE {
  DS_REC_OK = 0 , DS_REC_DS_RECEIVE_ERR , DS_REC_ANALYZE_ERR , DS_REC_OTHER_ERR ,
  DS_REC_UNKNOWN_ERR = 255
}
 Driver の受信関数のエラーコード [詳解]
 
enum  DS_CMD_ERR_CODE {
  DS_CMD_OK = 0 , DS_CMD_ILLEGAL_CONTEXT = 1 , DS_CMD_ILLEGAL_PARAMETER = 2 , DS_CMD_ILLEGAL_LENGTH = 3 ,
  DS_CMD_DRIVER_SUPER_ERR = 4 , DS_CMD_UNKNOWN_ERR = 255
}
 各DIが Driver にコマンドを送るときに,統一的に使うコード [詳解]
 
enum  DS_ERR_CODE { DS_ERR_CODE_OK = 0 , DS_ERR_CODE_ERR = 1 }
 DriverSuper の汎用エラーコード [詳解]
 
enum  DS_RX_DISRUPTION_STATUS_CODE { DS_RX_DISRUPTION_STATUS_OK = 0 , DS_RX_DISRUPTION_STATUS_LOST = 1 }
 受信途絶判定コード [詳解]
 
enum  DS_STREAM_SEND_STATUS_CODE {
  DS_STREAM_SEND_STATUS_OK , DS_STREAM_SEND_STATUS_DISABLE , DS_STREAM_SEND_STATUS_TX_ERR , DS_STREAM_SEND_STATUS_VALIDATE_ERR ,
  DS_STREAM_SEND_STATUS_OTHER_ERR
}
 DS_StreamSendStatus でつかう.コマンド受信の状態を示す [詳解]
 
enum  DS_STREAM_REC_STATUS_CODE {
  DS_STREAM_REC_STATUS_FINDING_HEADER , DS_STREAM_REC_STATUS_RECEIVING_HEADER , DS_STREAM_REC_STATUS_RECEIVING_FRAMELENGTH , DS_STREAM_REC_STATUS_RECEIVING_DATA ,
  DS_STREAM_REC_STATUS_RECEIVING_FOOTER , DS_STREAM_REC_STATUS_FIXED_FRAME , DS_STREAM_REC_STATUS_DISABLE , DS_STREAM_REC_STATUS_HEADER_MISMATCH ,
  DS_STREAM_REC_STATUS_FOOTER_MISMATCH , DS_STREAM_REC_STATUS_RX_FRAME_TOO_LONG , DS_STREAM_REC_STATUS_RX_FRAME_TOO_SHORT , DS_STREAM_REC_STATUS_RX_ERR ,
  DS_STREAM_REC_STATUS_VALIDATE_ERR , DS_STREAM_REC_STATUS_OTHER_ERR
}
 DS_StreamRecStatus でつかう.テレメ受信の状態遷移を示す [詳解]
 
enum  DS_STREAM_TLM_DISRUPTION_STATUS_CODE { DS_STREAM_TLM_DISRUPTION_STATUS_OK = 0 , DS_STREAM_TLM_DISRUPTION_STATUS_LOST = 1 }
 

関数

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 のみの使用の場合) [詳解]
 
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 を使用する場合) [詳解]
 
DS_ERR_CODE DS_reset (DriverSuper *p_super)
 DriverSuper のリセット [詳解]
 
DS_ERR_CODE DS_validate_config (DriverSuper *p_super)
 DriverSuper の設定に不整合が生じていないかチェックする [詳解]
 
DS_ERR_CODE DS_clear_rx_buffer (DriverSuper *p_super)
 受信バッファをクリアする [詳解]
 
DS_ERR_CODE DS_receive (DriverSuper *p_super)
 継承先の機器からテレメトリを受信する [詳解]
 
DS_ERR_CODE DS_analyze_rec_data (DriverSuper *p_super, uint8_t stream, void *p_driver)
 data_analyzer_ を呼び出し,受信データを解析する. [詳解]
 
DS_ERR_CODE DS_send_general_cmd (DriverSuper *p_super, uint8_t stream)
 継承先の機器に一般コマンドを発行する [詳解]
 
DS_ERR_CODE DS_send_req_tlm_cmd (DriverSuper *p_super, uint8_t stream)
 継承先の機器にテレメ要求コマンドを発行する [詳解]
 
uint16_t DSC_get_rx_buffer_size_in_if_rx (const DriverSuper *p_super)
 
DS_ERR_CODE DSC_set_rx_buffer_size_in_if_rx (DriverSuper *p_super, const uint16_t rx_buffer_size_in_if_rx)
 
uint8_t DSC_get_should_monitor_for_rx_disruption (const DriverSuper *p_super)
 
void DSC_enable_monitor_for_rx_disruption (DriverSuper *p_super)
 
void DSC_disable_monitor_for_rx_disruption (DriverSuper *p_super)
 
uint32_t DSC_get_time_threshold_for_rx_disruption (const DriverSuper *p_super)
 
void DSC_set_time_threshold_for_rx_disruption (DriverSuper *p_super, const uint32_t time_threshold_for_rx_disruption)
 
const DS_RecStatusDSC_get_rec_status (const DriverSuper *p_super)
 
uint32_t DSC_get_rx_count (const DriverSuper *p_super)
 
uint32_t DSC_get_rx_call_count (const DriverSuper *p_super)
 
const ObcTimeDSC_get_rx_time (const DriverSuper *p_super)
 
DS_RX_DISRUPTION_STATUS_CODE DSC_get_rx_disruption_status (const DriverSuper *p_super)
 
uint8_t DSSC_get_is_enabled (const DS_StreamConfig *p_stream_config)
 
void DSSC_enable (DS_StreamConfig *p_stream_config)
 
void DSSC_disable (DS_StreamConfig *p_stream_config)
 
uint8_t DSSC_get_is_strict_frame_search (const DS_StreamConfig *p_stream_config)
 
void DSSC_enable_strict_frame_search (DS_StreamConfig *p_stream_config)
 
void DSSC_disable_strict_frame_search (DS_StreamConfig *p_stream_config)
 
const uint8_t * DSSC_get_tx_frame (DS_StreamConfig *p_stream_config)
 
uint8_t * DSSC_get_tx_frame_as_non_const_pointer (DS_StreamConfig *p_stream_config)
 
void DSSC_set_tx_frame (DS_StreamConfig *p_stream_config, uint8_t *tx_frame)
 
uint16_t DSSC_get_tx_frame_size (const DS_StreamConfig *p_stream_config)
 
void DSSC_set_tx_frame_size (DS_StreamConfig *p_stream_config, const uint16_t tx_frame_size)
 
int16_t DSSC_get_tx_frame_buffer_size (DS_StreamConfig *p_stream_config)
 
void DSSC_set_tx_frame_buffer_size (DS_StreamConfig *p_stream_config, const int16_t tx_frame_buffer_size)
 
void DSSC_set_rx_buffer (DS_StreamConfig *p_stream_config, DS_StreamRecBuffer *rx_buffer)
 
void DSSC_set_rx_header (DS_StreamConfig *p_stream_config, const uint8_t *rx_header, const uint16_t rx_header_size)
 
uint16_t DSSC_get_rx_header_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)
 
uint16_t DSSC_get_rx_footer_size (const DS_StreamConfig *p_stream_config)
 
int16_t DSSC_get_rx_frame_size (const DS_StreamConfig *p_stream_config)
 
void DSSC_set_rx_frame_size (DS_StreamConfig *p_stream_config, const int16_t rx_frame_size)
 
uint16_t DSSC_get_max_rx_frame_size (const DS_StreamConfig *p_stream_config)
 
void DSSC_set_max_rx_frame_size (DS_StreamConfig *p_stream_config, const uint16_t max_rx_frame_size)
 
void DSSC_set_rx_framelength_pos (DS_StreamConfig *p_stream_config, const int16_t rx_framelength_pos)
 
void DSSC_set_rx_framelength_type_size (DS_StreamConfig *p_stream_config, const uint16_t rx_framelength_type_size)
 
void DSSC_set_rx_framelength_offset (DS_StreamConfig *p_stream_config, const uint16_t rx_framelength_offset)
 
void DSSC_set_rx_framelength_endian (DS_StreamConfig *p_stream_config, const ENDIAN_TYPE rx_framelength_endian)
 
uint8_t DSSC_get_should_monitor_for_tlm_disruption (const DS_StreamConfig *p_stream_config)
 
void DSSC_enable_monitor_for_tlm_disruption (DS_StreamConfig *p_stream_config)
 
void DSSC_disable_monitor_for_tlm_disruption (DS_StreamConfig *p_stream_config)
 
uint32_t DSSC_get_time_threshold_for_tlm_disruption (const DS_StreamConfig *p_stream_config)
 
void DSSC_set_time_threshold_for_tlm_disruption (DS_StreamConfig *p_stream_config, const uint32_t time_threshold_for_tlm_disruption)
 
void DSSC_set_data_analyzer (DS_StreamConfig *p_stream_config, DS_ERR_CODE(*data_analyzer)(DS_StreamConfig *p_stream_config, void *p_driver))
 
const DS_StreamSendStatusDSSC_get_send_status (const DS_StreamConfig *p_stream_config)
 
const DS_StreamRecStatusDSSC_get_rec_status (const DS_StreamConfig *p_stream_config)
 
uint32_t DSSC_get_general_cmd_tx_count (const DS_StreamConfig *p_stream_config)
 
uint32_t DSSC_get_req_tlm_cmd_tx_count (const DS_StreamConfig *p_stream_config)
 
uint32_t DSSC_get_req_tlm_cmd_tx_count_after_last_tx (const DS_StreamConfig *p_stream_config)
 
uint32_t DSSC_get_rx_frame_fix_count (const DS_StreamConfig *p_stream_config)
 
const ObcTimeDSSC_get_general_cmd_tx_time (const DS_StreamConfig *p_stream_config)
 
const ObcTimeDSSC_get_req_tlm_cmd_tx_time (const DS_StreamConfig *p_stream_config)
 
const ObcTimeDSSC_get_rx_frame_fix_time (const DS_StreamConfig *p_stream_config)
 
DS_STREAM_TLM_DISRUPTION_STATUS_CODE DSSC_get_tlm_disruption_status (const DS_StreamConfig *p_stream_config)
 
DS_ERR_CODE DSSC_get_ret_from_data_analyzer (const 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 に確保したメモリを与えて初期化する [詳解]
 
void DS_nullify_stream_rec_buffers (DS_StreamRecBuffer *rx_buffers[DS_STREAM_MAX])
 DS_StreamRecBuffer の要素数 DS_STREAM_MAX の配列を NULL で初期化する [詳解]
 
CCP_CmdRet DS_conv_driver_err_to_ccp_cmd_ret (DS_DRIVER_ERR_CODE code)
 DS_DRIVER_ERR_CODE から CCP_CmdRet への変換関数 [詳解]
 
CCP_CmdRet DS_conv_cmd_err_to_ccp_cmd_ret (DS_CMD_ERR_CODE code)
 DS_CMD_ERR_CODE から CCP_CmdRet への変換関数 [詳解]
 
const uint8_t * DSSC_get_rx_frame (const DS_StreamConfig *p_stream_config)
 確定したフレームを取得 [詳解]
 
uint16_t DSSC_get_fixed_rx_frame_size (const DS_StreamConfig *p_stream_config)
 確定したフレームのサイズを取得 [詳解]
 

詳解

各制御センサ・アクチュエータ等とのインターフェースドライバ群のスーパークラス

    DriverSuper Class は
    各制御センサ・アクチュエータ等とのインターフェースを実現し,
    初期化,コマンド発行,テレメトリリクエスト,テレメトリ受信,テレメトリ解析などを行う,ドライバ群のスーパークラスです.
    個々の機器のインターフェースドライバに継承させて使用します.
覚え書き
DS_StreamRecBuffer で与える受信バッファサイズについて このバッファに受信データを格納していき,フレームを確定していく. したがって,最低限のバッファサイズは,
  • 非同期通信の場合: 受信フレーム最大長 x 2 以上
  • 同期通信の場合: 受信フレーム最大長 以上 が望ましい. メモリに余力がある場合,さらに
  • rx_buffer_size_in_if_rx_ (or DS_IF_RX_BUFFER_SIZE) x 2 以上 があると,さらに受信漏れを防ぐことができる.
バッファのサイズ設定について
  • DS_StreamRecBuffer のサイズは rx_buffer_size_in_if_rx_ よりも大きい必要がある
  • rx_buffer_size_in_if_rx_ のサイズは,実際の OBC のハードウェアバッファサイズと等しくすると最も効率が良い
  • DS_IF_RX_BUFFER_SIZE はすべてのドライバの rx_buffer_size_in_if_rx_ 以上の値にする(最大値にすると良い)

driver_super.h に定義があります。

マクロ定義詳解

◆ DS_IF_RX_BUFFER_SIZE

#define DS_IF_RX_BUFFER_SIZE   (1024)

IF_RX で受信するときの一次バッファ IF_RX から受信できる最大数を規定する OBC の物理的な信号ラインのバッファサイズ以上とするともっともパフォーマンスが出る

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

◆ DS_STREAM_MAX

#define DS_STREAM_MAX   (3)

DS_StreamConfig の最大数 uint8_t を想定

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

型定義詳解

◆ DriverSuper

typedef struct DriverSuper DriverSuper

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

◆ DS_StreamConfig

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

列挙型詳解

◆ DS_CMD_ERR_CODE

各DIが Driver にコマンドを送るときに,統一的に使うコード

覚え書き
uint8_t を想定
DI の Cmd の返り値である CCP_EXEC_STS との整合性を多少意識している
CCP_EXEC_STS への変換は DS_conv_cmd_err_to_ccp_cmd_ret を用いる
列挙値
DS_CMD_OK 

OKは0であることを保証する

DS_CMD_ILLEGAL_CONTEXT 

CCP_EXEC_ILLEGAL_CONTEXT に対応.DIでみることも多いはず.HW依存部は Driver でみる

DS_CMD_ILLEGAL_PARAMETER 

CCP_EXEC_ILLEGAL_PARAMETER に対応.ヒーターの個数など,HW 依存部は Driver でみる

DS_CMD_ILLEGAL_LENGTH 

CCP_EXEC_ILLEGAL_LENGTH に対応.これは基本的にはDIで見るはずなので,使われないことを想定

DS_CMD_DRIVER_SUPER_ERR 

DriverSuper 側,つまり配送の低レイヤーでエラーが起きた場合

DS_CMD_UNKNOWN_ERR 

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

◆ DS_DRIVER_ERR_CODE

Driver の汎用エラーコード

    Driver 内の各種 setter 等の関数返り値で使われることを想定
覚え書き
uint8_t を想定
初期化関数呼び出し時については, DS_INIT_ERR_CODE を用いること
受信関数呼び出し時については, DS_REC_ERR_CODE を用いること
接続先機器へ送るCmd呼び出し時については, DS_CMD_ERR_CODE を用いること
DI の Cmd の返り値である CCP_EXEC_STS との整合性を多少意識している
CCP_EXEC_STS への変換は DS_conv_driver_err_to_ccp_cmd_ret を用いる
より詳細なエラー情報を返したい場合は, Driver ごとに独自 enum を定義して良い
列挙値
DS_DRIVER_ERR_CODE_OK 

OK

DS_DRIVER_ERR_CODE_ILLEGAL_CONTEXT 

CCP_EXEC_ILLEGAL_CONTEXT に対応

DS_DRIVER_ERR_CODE_ILLEGAL_PARAMETER 

CCP_EXEC_ILLEGAL_PARAMETER に対応

DS_DRIVER_ERR_CODE_ILLEGAL_LENGTH 

CCP_EXEC_ILLEGAL_PARAMETER に対応

DS_DRIVER_ERR_CODE_UNKNOWN_ERR 

UNKNOWN ERR

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

◆ DS_ERR_CODE

DriverSuper の汎用エラーコード

覚え書き
uint8_t を想定
DriverSuper で用い, Drive では用いない
列挙値
DS_ERR_CODE_OK 

返り値は継承先や IF 先で上書きされるため,OK は 0 であることが必須

DS_ERR_CODE_ERR 

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

◆ DS_INIT_ERR_CODE

Driver の初期化関数のエラーコード

覚え書き
uint8_t を想定
列挙値
DS_INIT_OK 

OK

DS_INIT_DS_INIT_ERR 

DS_init でのエラー

DS_INIT_PARAMETER_ERR 

初期化パラメタエラー

DS_INIT_OTHER_ERR 

その他のエラー

DS_INIT_UNKNOWN_ERR 

UNKNOWN ERR

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

◆ DS_REC_ERR_CODE

Driver の受信関数のエラーコード

覚え書き
uint8_t を想定
列挙値
DS_REC_OK 

OK

DS_REC_DS_RECEIVE_ERR 

DS_receive でのエラー

DS_REC_ANALYZE_ERR 

DS_analyze_rec_data でのエラー

DS_REC_OTHER_ERR 

その他のエラー

DS_REC_UNKNOWN_ERR 

UNKNOWN ERR

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

◆ DS_RX_DISRUPTION_STATUS_CODE

受信途絶判定コード

覚え書き
uint8_t を想定
列挙値
DS_RX_DISRUPTION_STATUS_OK 

受信途絶していない or 受信途絶判定をしない状態

DS_RX_DISRUPTION_STATUS_LOST 

受信途絶検出

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

◆ DS_STREAM_REC_STATUS_CODE

DS_StreamRecStatus でつかう.テレメ受信の状態遷移を示す

覚え書き
uint8_tを想定
列挙値
DS_STREAM_REC_STATUS_FINDING_HEADER 
DS_STREAM_REC_STATUS_RECEIVING_HEADER 
DS_STREAM_REC_STATUS_RECEIVING_FRAMELENGTH 

可変長フレームでの,フレーム長データを受信中

DS_STREAM_REC_STATUS_RECEIVING_DATA 
DS_STREAM_REC_STATUS_RECEIVING_FOOTER 
DS_STREAM_REC_STATUS_FIXED_FRAME 
DS_STREAM_REC_STATUS_DISABLE 
DS_STREAM_REC_STATUS_HEADER_MISMATCH 
DS_STREAM_REC_STATUS_FOOTER_MISMATCH 
DS_STREAM_REC_STATUS_RX_FRAME_TOO_LONG 
DS_STREAM_REC_STATUS_RX_FRAME_TOO_SHORT 
DS_STREAM_REC_STATUS_RX_ERR 

IF_RX でエラー

DS_STREAM_REC_STATUS_VALIDATE_ERR 

受信前に validate_config でエラー

DS_STREAM_REC_STATUS_OTHER_ERR 

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

◆ DS_STREAM_SEND_STATUS_CODE

DS_StreamSendStatus でつかう.コマンド受信の状態を示す

覚え書き
uint8_t を想定
列挙値
DS_STREAM_SEND_STATUS_OK 
DS_STREAM_SEND_STATUS_DISABLE 
DS_STREAM_SEND_STATUS_TX_ERR 

IF_TX でエラー

DS_STREAM_SEND_STATUS_VALIDATE_ERR 

送信前に validate_config でエラー

DS_STREAM_SEND_STATUS_OTHER_ERR 

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

◆ DS_STREAM_TLM_DISRUPTION_STATUS_CODE

列挙値
DS_STREAM_TLM_DISRUPTION_STATUS_OK 

テレメ途絶していない or テレメ途絶判定をしない状態

DS_STREAM_TLM_DISRUPTION_STATUS_LOST 

テレメ途絶検出

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

関数詳解

◆ DS_analyze_rec_data()

DS_ERR_CODE DS_analyze_rec_data ( DriverSuper p_super,
uint8_t  stream,
void *  p_driver 
)

data_analyzer_ を呼び出し,受信データを解析する.

    DS_receive にてデータを受信した後, DSSC_get_rec_status(p_stream_config)->status_code が DS_STREAM_REC_STATUS_FIXED_FRAME ならば呼び出す.
引数
p_superDriverSuper 構造体へのポインタ
streamどの stream_config を使用するか.stream は 0-MAX なので,継承先で ENUM など宣言して使いやすくすればいいと思う.
p_driver継承先機器のドライバ構造体など.data_analyzer_ の第二引数.
戻り値
DS_ERR_CODE: data_analyzer_ の返り値をそのまま返す
覚え書き
data_analyzer_ の返り値は, ret_from_data_analyzer_ にも保存される.

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

被呼び出し関係図:

◆ DS_clear_rx_buffer()

DS_ERR_CODE DS_clear_rx_buffer ( DriverSuper p_super)

受信バッファをクリアする

    例えば,ヘッダなしテレメの場合,途中でゴミデータが入ると以後すべてのフレームがずれてしまう.
    そのようなとき(CRC エラーがでるとか,受信データが明らかにおかしい場合)に,buffer を一度クリアし,
    次に届くデータからフレーム解析を先頭から行うようにするために用いる.
引数
p_superDriverSuper 構造体へのポインタ
戻り値
DS_ERR_CODE

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

呼び出し関係図:
被呼び出し関係図:

◆ DS_conv_cmd_err_to_ccp_cmd_ret()

CCP_CmdRet DS_conv_cmd_err_to_ccp_cmd_ret ( DS_CMD_ERR_CODE  code)

DS_CMD_ERR_CODE から CCP_CmdRet への変換関数

    DI から Driver の関数を呼び出したときのエラーコードの変換に用いる
覚え書き
汎用 Util 関数
引数
DS_CMD_ERR_CODE
戻り値
CCP_CmdRet

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

呼び出し関係図:
被呼び出し関係図:

◆ DS_conv_driver_err_to_ccp_cmd_ret()

CCP_CmdRet DS_conv_driver_err_to_ccp_cmd_ret ( DS_DRIVER_ERR_CODE  code)

DS_DRIVER_ERR_CODE から CCP_CmdRet への変換関数

    DI から Driver の関数を呼び出したときのエラーコードの変換に用いる
覚え書き
汎用 Util 関数
引数
DS_DRIVER_ERR_CODE
戻り値
CCP_CmdRet

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

呼び出し関係図:

◆ DS_init()

DS_ERR_CODE DS_init ( DriverSuper p_super,
void *  if_config,
DS_StreamRecBuffer rx_buffer,
DS_ERR_CODE(*)(DriverSuper *p_super)  load_init_setting 
)

継承先の機器より DriverSuper を初期化する(stream 0 のみの使用の場合)

    DriverSuper 構造体を継承先 Driver 構造体のメンバとして定義(継承)し,ポインタを渡すことでポートを初期化する.
    そして,構造体内の初期化が必要な変数を初期化する.
    デフォルト値の上書きは load_init_setting で行う
覚え書き
DriverSuper を使用する時は起動時に必ず実施すること
引数
p_super初期化する DriverSuper 構造体へのポインタ
if_config初期化する Driverで用いられている IF の config 構造体
rx_buffer初期化する DriverSuper の stream 0 で用いられるフレーム受信バッファ
load_init_settingDriverSuper の初期設定ロード関数ポインタ
戻り値
DS_ERR_CODE

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

呼び出し関係図:
被呼び出し関係図:

◆ DS_init_stream_rec_buffer()

DS_ERR_CODE DS_init_stream_rec_buffer ( DS_StreamRecBuffer stream_rec_buffer,
uint8_t *  buffer,
const uint16_t  buffer_capacity 
)

DS_StreamRecBuffer に確保したメモリを与えて初期化する

引数
[out]stream_rec_buffer初期化する DS_StreamRecBuffer
[in]buffer与えるメモリ領域
[in]buffer_capacity与えるメモリサイズ
戻り値
DS_ERR_CODE

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

呼び出し関係図:
被呼び出し関係図:

◆ DS_init_streams()

DS_ERR_CODE DS_init_streams ( DriverSuper p_super,
void *  if_config,
DS_StreamRecBuffer rx_buffers[DS_STREAM_MAX],
DS_ERR_CODE(*)(DriverSuper *p_super)  load_init_setting 
)

継承先の機器より DriverSuper を初期化する(複数の stream を使用する場合)

    DriverSuper 構造体を継承先 Driver 構造体のメンバとして定義(継承)し,ポインタを渡すことでポートを初期化する.
    そして,構造体内の初期化が必要な変数を初期化する.
    デフォルト値の上書きは load_init_setting で行う
覚え書き
DriverSuper を使用する時は起動時に必ず実施すること
引数
p_super初期化する DriverSuper 構造体へのポインタ
if_config初期化する Driverで用いられている IF の config 構造体
rx_buffers初期化する DriverSuper で用いられるフレーム受信バッファ.使用しない stream は NULL を設定しておく
load_init_settingDriverSuper の初期設定ロード関数ポインタ
戻り値
DS_ERR_CODE

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

呼び出し関係図:
被呼び出し関係図:

◆ DS_nullify_stream_rec_buffers()

void DS_nullify_stream_rec_buffers ( DS_StreamRecBuffer rx_buffers[DS_STREAM_MAX])

DS_StreamRecBuffer の要素数 DS_STREAM_MAX の配列を NULL で初期化する

覚え書き
DS_init_streams の引数を作るのに使う
引数
[out]rx_buffers初期化する DS_StreamRecBuffer の配列
戻り値
void

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

被呼び出し関係図:

◆ DS_receive()

DS_ERR_CODE DS_receive ( DriverSuper p_super)

継承先の機器からテレメトリを受信する

    フレームを確定させて,rx_frame_ にいれるまで.解析 (data_analyzer_) はしないのでドライバで DS_analyze_rec_data を呼び出すこと
    これは,同じ stream でもテレメ内部の ID などで解析を変えたいときなどが想定されるため
覚え書き
継承先の機器のデータ出力周期より早い周期で定期的に実行すること
引数
p_superDriverSuper 構造体へのポインタ
戻り値
DS_ERR_CODE_OKIF_RX でのエラーなし
DS_ERR_CODE_ERRIF_RX でのエラーあり
覚え書き
受信状況やエラー情報は rec_status_ に格納されている

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

呼び出し関係図:
被呼び出し関係図:

◆ DS_reset()

DS_ERR_CODE DS_reset ( DriverSuper p_super)

DriverSuper のリセット

覚え書き
DS_init 内で呼ばれている.
引数
p_superDriverSuper 構造体へのポインタ
戻り値
DS_ERR_CODE

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

呼び出し関係図:
被呼び出し関係図:

◆ DS_send_general_cmd()

DS_ERR_CODE DS_send_general_cmd ( DriverSuper p_super,
uint8_t  stream 
)

継承先の機器に一般コマンドを発行する

    このコマンドを送ったことによってレスポンスが返ってくることを想定していない(その場合は DS_send_req_tlm_cmd を使う)
覚え書き
この関数の実行前に,tx_frame, tx_frame_size の設定が必要である
これは基底クラスなため,アノマリ発行は行わない.継承先で返り値を見て適切にアノマリ発行すること
引数
p_superDriverSuper 構造体へのポインタ
streamどのstream_config を使用するか.stream は 0-MAX なので,継承先で ENUM など宣言して使いやすくすればいいと思う.
戻り値
DS_ERR_CODE_OK正常終了
DS_ERR_CODE_ERRIF_TX でのエラーあり
覚え書き
受信状況やエラー情報は send_status_ に格納されている

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

呼び出し関係図:
被呼び出し関係図:

◆ DS_send_req_tlm_cmd()

DS_ERR_CODE DS_send_req_tlm_cmd ( DriverSuper p_super,
uint8_t  stream 
)

継承先の機器にテレメ要求コマンドを発行する

    テレメについては DS_receive で受け取る.
覚え書き
この関数の実行前に,tx_frame, tx_frame_sizeの設定が必要である
引数
p_superDriverSuper 構造体へのポインタ
streamどのstream_config を使用するか.stream は 0-MAX なので,継承先で ENUM など宣言して使いやすくすればいいと思う.
戻り値
DS_ERR_CODE_OK正常終了
DS_ERR_CODE_ERRIF_TX でのエラーあり
覚え書き
受信状況やエラー情報は send_status_ に格納されている

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

呼び出し関係図:
被呼び出し関係図:

◆ DS_validate_config()

DS_ERR_CODE DS_validate_config ( DriverSuper p_super)

DriverSuper の設定に不整合が生じていないかチェックする

    Driver の設定を変えた場合は毎回呼び出すことを推奨する
覚え書き
DS_init 内で呼ばれている.
内部の管理フラグを変更しているので, p_super に厳密な const 性はない
引数
p_superDriverSuper 構造体へのポインタ
戻り値
DS_ERR_CODE

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

呼び出し関係図:
被呼び出し関係図:

◆ DSC_disable_monitor_for_rx_disruption()

void DSC_disable_monitor_for_rx_disruption ( DriverSuper p_super)

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

◆ DSC_enable_monitor_for_rx_disruption()

void DSC_enable_monitor_for_rx_disruption ( DriverSuper p_super)

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

◆ DSC_get_rec_status()

const DS_RecStatus* DSC_get_rec_status ( const DriverSuper p_super)

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

被呼び出し関係図:

◆ DSC_get_rx_buffer_size_in_if_rx()

uint16_t DSC_get_rx_buffer_size_in_if_rx ( const DriverSuper p_super)

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

◆ DSC_get_rx_call_count()

uint32_t DSC_get_rx_call_count ( const DriverSuper p_super)

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

◆ DSC_get_rx_count()

uint32_t DSC_get_rx_count ( const DriverSuper p_super)

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

◆ DSC_get_rx_disruption_status()

DS_RX_DISRUPTION_STATUS_CODE DSC_get_rx_disruption_status ( const DriverSuper p_super)

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

◆ DSC_get_rx_time()

const ObcTime* DSC_get_rx_time ( const DriverSuper p_super)

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

◆ DSC_get_should_monitor_for_rx_disruption()

uint8_t DSC_get_should_monitor_for_rx_disruption ( const DriverSuper p_super)

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

◆ DSC_get_time_threshold_for_rx_disruption()

uint32_t DSC_get_time_threshold_for_rx_disruption ( const DriverSuper p_super)

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

◆ DSC_set_rx_buffer_size_in_if_rx()

DS_ERR_CODE DSC_set_rx_buffer_size_in_if_rx ( DriverSuper p_super,
const uint16_t  rx_buffer_size_in_if_rx 
)

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

◆ DSC_set_time_threshold_for_rx_disruption()

void DSC_set_time_threshold_for_rx_disruption ( DriverSuper p_super,
const uint32_t  time_threshold_for_rx_disruption 
)

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

◆ DSSC_disable()

void DSSC_disable ( DS_StreamConfig p_stream_config)

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

◆ DSSC_disable_monitor_for_tlm_disruption()

void DSSC_disable_monitor_for_tlm_disruption ( DS_StreamConfig p_stream_config)

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

◆ DSSC_disable_strict_frame_search()

void DSSC_disable_strict_frame_search ( DS_StreamConfig p_stream_config)

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

◆ DSSC_enable()

void DSSC_enable ( DS_StreamConfig p_stream_config)

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

被呼び出し関係図:

◆ DSSC_enable_monitor_for_tlm_disruption()

void DSSC_enable_monitor_for_tlm_disruption ( DS_StreamConfig p_stream_config)

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

◆ DSSC_enable_strict_frame_search()

void DSSC_enable_strict_frame_search ( DS_StreamConfig p_stream_config)

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

被呼び出し関係図:

◆ DSSC_get_fixed_rx_frame_size()

uint16_t DSSC_get_fixed_rx_frame_size ( const DS_StreamConfig p_stream_config)

確定したフレームのサイズを取得

引数
p_stream_config[in]DriverSuper 構造体の DS_StreamConfig
戻り値
フレーム確定時確定したフレームサイズ
フレーム未確定時0

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

◆ DSSC_get_general_cmd_tx_count()

uint32_t DSSC_get_general_cmd_tx_count ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_general_cmd_tx_time()

const ObcTime* DSSC_get_general_cmd_tx_time ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_is_enabled()

uint8_t DSSC_get_is_enabled ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_is_strict_frame_search()

uint8_t DSSC_get_is_strict_frame_search ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_max_rx_frame_size()

uint16_t DSSC_get_max_rx_frame_size ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_rec_status()

const DS_StreamRecStatus* DSSC_get_rec_status ( const DS_StreamConfig p_stream_config)

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

被呼び出し関係図:

◆ DSSC_get_req_tlm_cmd_tx_count()

uint32_t DSSC_get_req_tlm_cmd_tx_count ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_req_tlm_cmd_tx_count_after_last_tx()

uint32_t DSSC_get_req_tlm_cmd_tx_count_after_last_tx ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_req_tlm_cmd_tx_time()

const ObcTime* DSSC_get_req_tlm_cmd_tx_time ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_ret_from_data_analyzer()

DS_ERR_CODE DSSC_get_ret_from_data_analyzer ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_rx_footer_size()

uint16_t DSSC_get_rx_footer_size ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_rx_frame()

const uint8_t* DSSC_get_rx_frame ( const DS_StreamConfig p_stream_config)

確定したフレームを取得

引数
p_stream_config[in]DriverSuper 構造体の DS_StreamConfig
戻り値
フレーム確定時受信フレーム先頭ポインタ
フレーム未確定時rx_buffer_.pos_of_frame_head_candidate
覚え書き
フレームサイズは DSSC_get_fixed_rx_frame_size で取得可能
rx_buffer_ (DS_StreamRecBuffer) には,前回確定したフレームが入っているが,次回の DS_receive 呼び出しで失われる. したがって,次回の DS_receive 呼び出し時までに内容を吸い出しておくこと
基本的には, rx_buffer_.pos_of_frame_head_candidate は rx_buffer_.buffer 先頭に頭出しされているはず. したがって,ここで取得したポインタを rx_buffer_.capacity 以上読み込まない場合は,問題ない.

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

被呼び出し関係図:

◆ DSSC_get_rx_frame_fix_count()

uint32_t DSSC_get_rx_frame_fix_count ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_rx_frame_fix_time()

const ObcTime* DSSC_get_rx_frame_fix_time ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_rx_frame_size()

int16_t DSSC_get_rx_frame_size ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_rx_header_size()

uint16_t DSSC_get_rx_header_size ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_send_status()

const DS_StreamSendStatus* DSSC_get_send_status ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_should_monitor_for_tlm_disruption()

uint8_t DSSC_get_should_monitor_for_tlm_disruption ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_time_threshold_for_tlm_disruption()

uint32_t DSSC_get_time_threshold_for_tlm_disruption ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_tlm_disruption_status()

DS_STREAM_TLM_DISRUPTION_STATUS_CODE DSSC_get_tlm_disruption_status ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_get_tx_frame()

const uint8_t* DSSC_get_tx_frame ( DS_StreamConfig p_stream_config)

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

◆ DSSC_get_tx_frame_as_non_const_pointer()

uint8_t* DSSC_get_tx_frame_as_non_const_pointer ( DS_StreamConfig p_stream_config)

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

被呼び出し関係図:

◆ DSSC_get_tx_frame_buffer_size()

int16_t DSSC_get_tx_frame_buffer_size ( DS_StreamConfig p_stream_config)

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

被呼び出し関係図:

◆ DSSC_get_tx_frame_size()

uint16_t DSSC_get_tx_frame_size ( const DS_StreamConfig p_stream_config)

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

◆ DSSC_set_data_analyzer()

void DSSC_set_data_analyzer ( DS_StreamConfig p_stream_config,
DS_ERR_CODE(*)(DS_StreamConfig *p_stream_config, void *p_driver)  data_analyzer 
)

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

被呼び出し関係図:

◆ DSSC_set_max_rx_frame_size()

void DSSC_set_max_rx_frame_size ( DS_StreamConfig p_stream_config,
const uint16_t  max_rx_frame_size 
)

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

被呼び出し関係図:

◆ DSSC_set_rx_buffer()

void DSSC_set_rx_buffer ( DS_StreamConfig p_stream_config,
DS_StreamRecBuffer rx_buffer 
)

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

被呼び出し関係図:

◆ DSSC_set_rx_footer()

void DSSC_set_rx_footer ( DS_StreamConfig p_stream_config,
const uint8_t *  rx_footer,
const uint16_t  rx_footer_size 
)

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

被呼び出し関係図:

◆ DSSC_set_rx_frame_size()

void DSSC_set_rx_frame_size ( DS_StreamConfig p_stream_config,
const int16_t  rx_frame_size 
)

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

被呼び出し関係図:

◆ DSSC_set_rx_framelength_endian()

void DSSC_set_rx_framelength_endian ( DS_StreamConfig p_stream_config,
const ENDIAN_TYPE  rx_framelength_endian 
)

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

◆ DSSC_set_rx_framelength_offset()

void DSSC_set_rx_framelength_offset ( DS_StreamConfig p_stream_config,
const uint16_t  rx_framelength_offset 
)

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

被呼び出し関係図:

◆ DSSC_set_rx_framelength_pos()

void DSSC_set_rx_framelength_pos ( DS_StreamConfig p_stream_config,
const int16_t  rx_framelength_pos 
)

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

被呼び出し関係図:

◆ DSSC_set_rx_framelength_type_size()

void DSSC_set_rx_framelength_type_size ( DS_StreamConfig p_stream_config,
const uint16_t  rx_framelength_type_size 
)

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

被呼び出し関係図:

◆ DSSC_set_rx_header()

void DSSC_set_rx_header ( DS_StreamConfig p_stream_config,
const uint8_t *  rx_header,
const uint16_t  rx_header_size 
)

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

被呼び出し関係図:

◆ DSSC_set_time_threshold_for_tlm_disruption()

void DSSC_set_time_threshold_for_tlm_disruption ( DS_StreamConfig p_stream_config,
const uint32_t  time_threshold_for_tlm_disruption 
)

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

◆ DSSC_set_tx_frame()

void DSSC_set_tx_frame ( DS_StreamConfig p_stream_config,
uint8_t *  tx_frame 
)

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

被呼び出し関係図:

◆ DSSC_set_tx_frame_buffer_size()

void DSSC_set_tx_frame_buffer_size ( DS_StreamConfig p_stream_config,
const int16_t  tx_frame_buffer_size 
)

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

被呼び出し関係図:

◆ DSSC_set_tx_frame_size()

void DSSC_set_tx_frame_size ( DS_StreamConfig p_stream_config,
const uint16_t  tx_frame_size 
)

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

被呼び出し関係図: