C2A_Core
tlm_space_packet.c ファイル

CCSDS で規定される Space Packet の テレメ版の実装 [詳解]

#include "tlm_space_packet.h"
#include <stddef.h>
#include <string.h>
tlm_space_packet.c の依存先関係図:

[ソースコード]

マクロ定義

#define TSP_CAST_TO_SP(tsp)   ((const SpacePacket*)(tsp))
 SPへのキャスト. SPのほうが広いので,これは可能 [詳解]
 
#define TSP_CAST_TO_NON_CONST_SP(tsp)   ((SpacePacket*)(tsp))
 SPへのキャスト. SPのほうが広いので,これは可能 [詳解]
 

関数

SP_VER TSP_get_ver (const TlmSpacePacket *tsp)
 Version No を取得 [詳解]
 
void TSP_set_ver (TlmSpacePacket *tsp, SP_VER ver)
 Version No を設定 [詳解]
 
SP_TYPE TSP_get_type (const TlmSpacePacket *tsp)
 Packet Type を取得 [詳解]
 
void TSP_set_type (TlmSpacePacket *tsp, SP_TYPE type)
 Packet Type を設定 [詳解]
 
SP_2ND_HDR_FLAG TSP_get_2nd_hdr_flag (const TlmSpacePacket *tsp)
 Secondary Header Flag を取得 [詳解]
 
void TSP_set_2nd_hdr_flag (TlmSpacePacket *tsp, SP_2ND_HDR_FLAG flag)
 Secondary Header Flag を設定 [詳解]
 
APID TSP_get_apid (const TlmSpacePacket *tsp)
 APID を取得 [詳解]
 
void TSP_set_apid (TlmSpacePacket *tsp, APID apid)
 APID を設定 [詳解]
 
SP_SEQ_FLAG TSP_get_seq_flag (const TlmSpacePacket *tsp)
 Sequence Flag を取得 [詳解]
 
void TSP_set_seq_flag (TlmSpacePacket *tsp, SP_SEQ_FLAG flag)
 Sequence Flag を設定 [詳解]
 
uint16_t TSP_get_seq_count (const TlmSpacePacket *tsp)
 Sequence Count を取得 [詳解]
 
void TSP_set_seq_count (TlmSpacePacket *tsp, uint16_t count)
 Sequence Count を設定 [詳解]
 
uint16_t TSP_get_packet_data_len (const TlmSpacePacket *tsp)
 Packet Data Length を取得 [詳解]
 
void TSP_set_packet_data_len (TlmSpacePacket *tsp, uint16_t len)
 Packet Data Length を設定 [詳解]
 
TSP_2ND_HDR_VER TSP_get_2nd_hdr_ver (const TlmSpacePacket *tsp)
 Secondary Header Version No を取得 [詳解]
 
void TSP_set_2nd_hdr_ver (TlmSpacePacket *tsp, TSP_2ND_HDR_VER ver)
 Secondary Header Version No を設定 [詳解]
 
uint32_t TSP_get_board_time (const TlmSpacePacket *tsp)
 Board Time を取得 [詳解]
 
void TSP_set_board_time (TlmSpacePacket *tsp, uint32_t time)
 Board Time を設定 [詳解]
 
double TSP_get_global_time (const TlmSpacePacket *tsp)
 Global Time を取得 [詳解]
 
void TSP_set_global_time (TlmSpacePacket *tsp, double time)
 Global Time を設定 [詳解]
 
uint32_t TSP_get_on_board_subnet_time (const TlmSpacePacket *tsp)
 On-Board Subnetwork Time を取得 [詳解]
 
void TSP_set_on_board_subnet_time (TlmSpacePacket *tsp, uint32_t time)
 On-Board Subnetwork Time を設定 [詳解]
 
TLM_CODE TSP_get_tlm_id (const TlmSpacePacket *tsp)
 Tlm ID を取得 [詳解]
 
void TSP_set_tlm_id (TlmSpacePacket *tsp, TLM_CODE id)
 Tlm ID を設定 [詳解]
 
ctp_dest_flags_t TSP_get_dest_flags (const TlmSpacePacket *tsp)
 Destination Flags を取得 [詳解]
 
void TSP_set_dest_flags (TlmSpacePacket *tsp, ctp_dest_flags_t flags)
 Destination Flags を設定 [詳解]
 
uint8_t TSP_get_dest_info (const TlmSpacePacket *tsp)
 Dest Info を取得 [詳解]
 
void TSP_set_dest_info (TlmSpacePacket *tsp, uint8_t info)
 Dest Info を設定 [詳解]
 
uint16_t TSP_get_packet_len (const TlmSpacePacket *tsp)
 Packet Length を取得 [詳解]
 
void TSP_set_packet_len (TlmSpacePacket *tsp, uint16_t len)
 Packet Length を設定 [詳解]
 
void TSP_copy_packet (TlmSpacePacket *dest, const TlmSpacePacket *src)
 TlmSpacePacket をコピー [詳解]
 
uint8_t * TSP_get_user_data_head (const TlmSpacePacket *tsp)
 User Data Field の先頭ポインタを取得 [詳解]
 
void TSP_setup_primary_hdr (TlmSpacePacket *tsp, APID apid, uint16_t seq_count, uint16_t packet_len)
 Primary Header を構築 [詳解]
 
void TSP_set_common_hdr (TlmSpacePacket *tsp)
 共通部分の Header を構築 [詳解]
 
void TSP_setup_fill_packet (TlmSpacePacket *tsp, uint16_t fill_size)
 パケット全体を 0x00 クリアし, fill_size に等しいサイズのパケットを生成する [詳解]
 

変数

static const SP_ParamExtractionInfo TSP_pei_2nd_hdr_ver_ = { 6, 0xff, 0, 1}
 
static const SP_ParamExtractionInfo TSP_pei_board_time_ = { 7, 0xff, 0, 4}
 
static const SP_ParamExtractionInfo TSP_pei_tlm_id_ = {11, 0xff, 0, 1}
 
static const SP_ParamExtractionInfo TSP_pei_global_time_ = {12, 0xff, 0, 8}
 
static const SP_ParamExtractionInfo TSP_pei_ob_sn_time_ = {20, 0xff, 0, 4}
 
static const SP_ParamExtractionInfo TSP_pei_dest_flags_ = {24, 0xff, 0, 1}
 
static const SP_ParamExtractionInfo TSP_pei_dest_info_ = {25, 0x0f, 0, 1}
 

詳解

CCSDS で規定される Space Packet の テレメ版の実装

C ではテンプレートが使えないため,別で定義する

覚え書き
詳細は space_packet.h を参照

tlm_space_packet.c に定義があります。

マクロ定義詳解

◆ TSP_CAST_TO_NON_CONST_SP

#define TSP_CAST_TO_NON_CONST_SP (   tsp)    ((SpacePacket*)(tsp))

SPへのキャスト. SPのほうが広いので,これは可能

tlm_space_packet.c13 行目に定義があります。

◆ TSP_CAST_TO_SP

#define TSP_CAST_TO_SP (   tsp)    ((const SpacePacket*)(tsp))

SPへのキャスト. SPのほうが広いので,これは可能

tlm_space_packet.c12 行目に定義があります。

関数詳解

◆ TSP_copy_packet()

void TSP_copy_packet ( TlmSpacePacket dest,
const TlmSpacePacket src 
)

TlmSpacePacket をコピー

覚え書き
高速化のためすすべてではなく必要最低限しかコピーしない
引数
[in,out]destコピー先 TlmSpacePacket
[in]srcコピー元 TlmSpacePacket
戻り値
void

tlm_space_packet.c249 行目に定義があります。

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

◆ TSP_get_2nd_hdr_flag()

SP_2ND_HDR_FLAG TSP_get_2nd_hdr_flag ( const TlmSpacePacket tsp)

Secondary Header Flag を取得

引数
tspTlmSpacePacket
戻り値
SP_2ND_HDR_FLAG

tlm_space_packet.c53 行目に定義があります。

呼び出し関係図:

◆ TSP_get_2nd_hdr_ver()

TSP_2ND_HDR_VER TSP_get_2nd_hdr_ver ( const TlmSpacePacket tsp)

Secondary Header Version No を取得

引数
tspTlmSpacePacket
戻り値
TSP_2ND_HDR_VER

tlm_space_packet.c117 行目に定義があります。

呼び出し関係図:

◆ TSP_get_apid()

APID TSP_get_apid ( const TlmSpacePacket tsp)

APID を取得

引数
tspTlmSpacePacket
戻り値
APID

tlm_space_packet.c65 行目に定義があります。

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

◆ TSP_get_board_time()

uint32_t TSP_get_board_time ( const TlmSpacePacket tsp)

Board Time を取得

引数
tspTlmSpacePacket
戻り値
Board Time

tlm_space_packet.c142 行目に定義があります。

呼び出し関係図:

◆ TSP_get_dest_flags()

ctp_dest_flags_t TSP_get_dest_flags ( const TlmSpacePacket tsp)

Destination Flags を取得

引数
tspTlmSpacePacket
戻り値
Destination Flags

tlm_space_packet.c203 行目に定義があります。

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

◆ TSP_get_dest_info()

uint8_t TSP_get_dest_info ( const TlmSpacePacket tsp)

Dest Info を取得

引数
tspTlmSpacePacket
戻り値
Dest Info

tlm_space_packet.c218 行目に定義があります。

呼び出し関係図:

◆ TSP_get_global_time()

double TSP_get_global_time ( const TlmSpacePacket tsp)

Global Time を取得

引数
tspTlmSpacePacket
戻り値
Global Time

tlm_space_packet.c157 行目に定義があります。

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

◆ TSP_get_on_board_subnet_time()

uint32_t TSP_get_on_board_subnet_time ( const TlmSpacePacket tsp)

On-Board Subnetwork Time を取得

引数
tspTlmSpacePacket
戻り値
On-Board Subnetwork Time

tlm_space_packet.c172 行目に定義があります。

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

◆ TSP_get_packet_data_len()

uint16_t TSP_get_packet_data_len ( const TlmSpacePacket tsp)

Packet Data Length を取得

引数
tspTlmSpacePacket
戻り値
Packet Data Length

tlm_space_packet.c101 行目に定義があります。

呼び出し関係図:

◆ TSP_get_packet_len()

uint16_t TSP_get_packet_len ( const TlmSpacePacket tsp)

Packet Length を取得

引数
tspTlmSpacePacket
戻り値
Packet Length

tlm_space_packet.c237 行目に定義があります。

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

◆ TSP_get_seq_count()

uint16_t TSP_get_seq_count ( const TlmSpacePacket tsp)

Sequence Count を取得

引数
tspTlmSpacePacket
戻り値
Sequence Count

tlm_space_packet.c89 行目に定義があります。

呼び出し関係図:

◆ TSP_get_seq_flag()

SP_SEQ_FLAG TSP_get_seq_flag ( const TlmSpacePacket tsp)

Sequence Flag を取得

引数
tspTlmSpacePacket
戻り値
SP_SEQ_FLAG

tlm_space_packet.c77 行目に定義があります。

呼び出し関係図:

◆ TSP_get_tlm_id()

TLM_CODE TSP_get_tlm_id ( const TlmSpacePacket tsp)

Tlm ID を取得

引数
tspTlmSpacePacket
戻り値
Tlm ID

tlm_space_packet.c187 行目に定義があります。

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

◆ TSP_get_type()

SP_TYPE TSP_get_type ( const TlmSpacePacket tsp)

Packet Type を取得

引数
tspTlmSpacePacket
戻り値
SP_TYPE

tlm_space_packet.c41 行目に定義があります。

呼び出し関係図:

◆ TSP_get_user_data_head()

uint8_t* TSP_get_user_data_head ( const TlmSpacePacket tsp)

User Data Field の先頭ポインタを取得

引数
tspTlmSpacePacket
戻り値
*user_data_head
覚え書き
FIXME: この関数で取得したポインタ経由で tlm のデータをセットする事があるため, const をつけていない 引数の const を外しても良いかも?

tlm_space_packet.c255 行目に定義があります。

被呼び出し関係図:

◆ TSP_get_ver()

SP_VER TSP_get_ver ( const TlmSpacePacket tsp)

Version No を取得

引数
tspTlmSpacePacket
戻り値
SP_VER

tlm_space_packet.c29 行目に定義があります。

呼び出し関係図:

◆ TSP_set_2nd_hdr_flag()

void TSP_set_2nd_hdr_flag ( TlmSpacePacket tsp,
SP_2ND_HDR_FLAG  flag 
)

Secondary Header Flag を設定

引数
[in,out]tspTlmSpacePacket
[in]flagSP_2ND_HDR_FLAG
戻り値
void

tlm_space_packet.c59 行目に定義があります。

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

◆ TSP_set_2nd_hdr_ver()

void TSP_set_2nd_hdr_ver ( TlmSpacePacket tsp,
TSP_2ND_HDR_VER  ver 
)

Secondary Header Version No を設定

引数
[in,out]tspTlmSpacePacket
[in]idTSP_2ND_HDR_VER
戻り値
void

tlm_space_packet.c135 行目に定義があります。

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

◆ TSP_set_apid()

void TSP_set_apid ( TlmSpacePacket tsp,
APID  apid 
)

APID を設定

引数
[in,out]tspTlmSpacePacket
[in]apidAPID
戻り値
void

tlm_space_packet.c71 行目に定義があります。

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

◆ TSP_set_board_time()

void TSP_set_board_time ( TlmSpacePacket tsp,
uint32_t  time 
)

Board Time を設定

引数
[in,out]tspTlmSpacePacket
[in]timeBoard Time
戻り値
void

tlm_space_packet.c151 行目に定義があります。

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

◆ TSP_set_common_hdr()

void TSP_set_common_hdr ( TlmSpacePacket tsp)

共通部分の Header を構築

引数
[in,out]tspTlmSpacePacket
戻り値
void

tlm_space_packet.c272 行目に定義があります。

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

◆ TSP_set_dest_flags()

void TSP_set_dest_flags ( TlmSpacePacket tsp,
ctp_dest_flags_t  flags 
)

Destination Flags を設定

引数
[in,out]tspTlmSpacePacket
[in]flagsDestination Flags
戻り値
void

tlm_space_packet.c212 行目に定義があります。

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

◆ TSP_set_dest_info()

void TSP_set_dest_info ( TlmSpacePacket tsp,
uint8_t  info 
)

Dest Info を設定

引数
[in,out]tspTlmSpacePacket
[in]infoDest Info
戻り値
void

tlm_space_packet.c227 行目に定義があります。

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

◆ TSP_set_global_time()

void TSP_set_global_time ( TlmSpacePacket tsp,
double  time 
)

Global Time を設定

引数
[in,out]tspTlmSpacePacket
[in]timeGlobal Time
戻り値
void

tlm_space_packet.c166 行目に定義があります。

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

◆ TSP_set_on_board_subnet_time()

void TSP_set_on_board_subnet_time ( TlmSpacePacket tsp,
uint32_t  time 
)

On-Board Subnetwork Time を設定

引数
[in,out]tspTlmSpacePacket
[in]timeOn-Board Subnetwork Time
戻り値
void

tlm_space_packet.c181 行目に定義があります。

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

◆ TSP_set_packet_data_len()

void TSP_set_packet_data_len ( TlmSpacePacket tsp,
uint16_t  len 
)

Packet Data Length を設定

覚え書き
Packet Data Length とは PACKET DATA FIELD 長であり,PRIMARY HEADER を含まない, 0 起算の長さ ( https://public.ccsds.org/Pubs/133x0b2e1.pdf )
引数
[in,out]tspTlmSpacePacket
[in]lenPacket Data Length
戻り値
void

tlm_space_packet.c107 行目に定義があります。

呼び出し関係図:

◆ TSP_set_packet_len()

void TSP_set_packet_len ( TlmSpacePacket tsp,
uint16_t  len 
)

Packet Length を設定

引数
[in,out]tspTlmSpacePacket
[in]lenPacket Length
戻り値
void

tlm_space_packet.c243 行目に定義があります。

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

◆ TSP_set_seq_count()

void TSP_set_seq_count ( TlmSpacePacket tsp,
uint16_t  count 
)

Sequence Count を設定

引数
[in,out]tspTlmSpacePacket
[in]countSequence Count
戻り値
void

tlm_space_packet.c95 行目に定義があります。

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

◆ TSP_set_seq_flag()

void TSP_set_seq_flag ( TlmSpacePacket tsp,
SP_SEQ_FLAG  flag 
)

Sequence Flag を設定

引数
[in,out]tspTlmSpacePacket
[in]flagSP_SEQ_FLAG
戻り値
void

tlm_space_packet.c83 行目に定義があります。

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

◆ TSP_set_tlm_id()

void TSP_set_tlm_id ( TlmSpacePacket tsp,
TLM_CODE  id 
)

Tlm ID を設定

引数
[in,out]tspTlmSpacePacket
[in]idTlm ID
戻り値
void

tlm_space_packet.c196 行目に定義があります。

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

◆ TSP_set_type()

void TSP_set_type ( TlmSpacePacket tsp,
SP_TYPE  type 
)

Packet Type を設定

引数
[in,out]tspTlmSpacePacket
[in]typeSP_TYPE
戻り値
void

tlm_space_packet.c47 行目に定義があります。

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

◆ TSP_set_ver()

void TSP_set_ver ( TlmSpacePacket tsp,
SP_VER  ver 
)

Version No を設定

引数
[in,out]tspTlmSpacePacket
[in]verSP_VER
戻り値
void

tlm_space_packet.c35 行目に定義があります。

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

◆ TSP_setup_fill_packet()

void TSP_setup_fill_packet ( TlmSpacePacket tsp,
uint16_t  fill_size 
)

パケット全体を 0x00 クリアし, fill_size に等しいサイズのパケットを生成する

覚え書き
Primary Header Size より小さなパケットは作れないので,その場合は, SP_PRM_HDR_LEN + 1 の長さのパケットを生成する
引数
[in,out]tspTlmSpacePacket
[in]fill_sizepacket size
戻り値
void

tlm_space_packet.c285 行目に定義があります。

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

◆ TSP_setup_primary_hdr()

void TSP_setup_primary_hdr ( TlmSpacePacket tsp,
APID  apid,
uint16_t  seq_count,
uint16_t  packet_len 
)

Primary Header を構築

引数
[in,out]tspTlmSpacePacket
[in]apidAPID
[in]seq_countSequence Count
[in]packet_lenPacket Length
戻り値
void

tlm_space_packet.c263 行目に定義があります。

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

変数詳解

◆ TSP_pei_2nd_hdr_ver_

const SP_ParamExtractionInfo TSP_pei_2nd_hdr_ver_ = { 6, 0xff, 0, 1}
static

tlm_space_packet.c16 行目に定義があります。

◆ TSP_pei_board_time_

const SP_ParamExtractionInfo TSP_pei_board_time_ = { 7, 0xff, 0, 4}
static

tlm_space_packet.c17 行目に定義があります。

◆ TSP_pei_dest_flags_

const SP_ParamExtractionInfo TSP_pei_dest_flags_ = {24, 0xff, 0, 1}
static

tlm_space_packet.c21 行目に定義があります。

◆ TSP_pei_dest_info_

const SP_ParamExtractionInfo TSP_pei_dest_info_ = {25, 0x0f, 0, 1}
static

tlm_space_packet.c22 行目に定義があります。

◆ TSP_pei_global_time_

const SP_ParamExtractionInfo TSP_pei_global_time_ = {12, 0xff, 0, 8}
static

tlm_space_packet.c19 行目に定義があります。

◆ TSP_pei_ob_sn_time_

const SP_ParamExtractionInfo TSP_pei_ob_sn_time_ = {20, 0xff, 0, 4}
static

tlm_space_packet.c20 行目に定義があります。

◆ TSP_pei_tlm_id_

const SP_ParamExtractionInfo TSP_pei_tlm_id_ = {11, 0xff, 0, 1}
static

tlm_space_packet.c18 行目に定義があります。