C2A_Core
space_packet.h ファイル

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

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

[ソースコード]

データ構造

struct  SP_ParamExtractionInfo
 packet からデータを抜き取るときのパラメタ [詳解]
 

マクロ定義

#define SP_PRM_HDR_LEN   (6)
 Packet Primary Header 長 [詳解]
 

列挙型

enum  SP_VER { SP_VER_1 = 0 , SP_VER_UNKNOWN }
 Space Packet Version Number [詳解]
 
enum  SP_TYPE { SP_TYPE_TLM = 0 , SP_TYPE_CMD = 1 }
 Space Packet Type [詳解]
 
enum  SP_2ND_HDR_FLAG { SP_2ND_HDR_FLAG_ABSENT = 0 , SP_2ND_HDR_FLAG_PRESENT = 1 }
 Space Packet Secandary Header Flag [詳解]
 
enum  SP_SEQ_FLAG { SP_SEQ_FLAG_CONT = 0 , SP_SEQ_FLAG_FIRST = 1 , SP_SEQ_FLAG_LAST = 2 , SP_SEQ_FLAG_SINGLE = 3 }
 Space Packet Sequence Flag [詳解]
 

関数

SP_VER SP_get_ver (const SpacePacket *sp)
 Version No を取得 [詳解]
 
void SP_set_ver (SpacePacket *sp, SP_VER ver)
 Version No を設定 [詳解]
 
SP_TYPE SP_get_type (const SpacePacket *sp)
 Packet Type を取得 [詳解]
 
void SP_set_type (SpacePacket *sp, SP_TYPE type)
 Packet Type を設定 [詳解]
 
SP_2ND_HDR_FLAG SP_get_2nd_hdr_flag (const SpacePacket *sp)
 Secondary Header Flag を取得 [詳解]
 
void SP_set_2nd_hdr_flag (SpacePacket *sp, SP_2ND_HDR_FLAG flag)
 Secondary Header Flag を設定 [詳解]
 
APID SP_get_apid (const SpacePacket *sp)
 APID を取得 [詳解]
 
void SP_set_apid (SpacePacket *sp, APID apid)
 APID を設定 [詳解]
 
SP_SEQ_FLAG SP_get_seq_flag (const SpacePacket *sp)
 Sequence Flag を取得 [詳解]
 
void SP_set_seq_flag (SpacePacket *sp, SP_SEQ_FLAG flag)
 Sequence Flag を設定 [詳解]
 
uint16_t SP_get_seq_count (const SpacePacket *sp)
 Sequence Count を取得 [詳解]
 
void SP_set_seq_count (SpacePacket *sp, uint16_t count)
 Sequence Count を設定 [詳解]
 
uint16_t SP_get_packet_data_len (const SpacePacket *sp)
 Packet Data Length を取得 [詳解]
 
void SP_set_packet_data_len (SpacePacket *sp, uint16_t len)
 Packet Data Length を設定 [詳解]
 
uint16_t SP_get_packet_len (const SpacePacket *sp)
 Packet Length を取得 [詳解]
 
void SP_set_packet_len (SpacePacket *sp, uint16_t len)
 Packet Length を設定 [詳解]
 
void SP_copy_packet (SpacePacket *dest, const SpacePacket *src)
 SpacePacket をコピー [詳解]
 
void SP_extract_param_from_packet (const SpacePacket *sp, const SP_ParamExtractionInfo *pei, void *dst)
 packet に格納された param を取得 [詳解]
 
void SP_insert_param_to_packet (SpacePacket *sp, const SP_ParamExtractionInfo *pei, const void *src)
 packet に param を格納 [詳解]
 

詳解

CCSDS で規定される Space Packet の実装

覚え書き
資料: https://sma.jaxa.jp/TechDoc/Docs/JAXA-JERG-2-403.pdf
C2A においては, CommonHogePacket の実体として,以下のように Space Packet を標準とする CommonTlmCmdPacket -> SpacePacket CommonTlmPacket -> TlmSpacePacket CommonCmdPacket -> CmdSpacePacket つまり, C2A Core 実装においては, Space Packet に依存したコードを書いてはならない!(これを include してはならない) FIXME: 完全にできてないので直す
Packet Secondary Header は C2A 独自定義. いくつかのバージョンを用意している
/Docs/Core/communication.md などを参照
packet 構造 |------—+----—+----—+---------------—| | Pos | Pos | size | name | | [octet] | [bit] | [bit] | | |------—+----—+----—+---------------—| | === Primary Header ======================= | |------—+----—+----—+---------------—| | 0 | 0 | 3 | Version No | | 0 | 3 | 1 | Packet Type | | 0 | 4 | 1 | Sec. HDR Flag | | 0 | 5 | 11 | APID | | 2 | 0 | 2 | Sequence Flags | | 2 | 2 | 14 | Sequence Count | | 4 | 0 | 16 | Packet Data Len | |------—+----—+----—+---------------—| | === Secondary Header ===================== | |------—+----—+----—+---------------—| | 6 | 0 | * | User Defined | |------—+----—+----—+---------------—| | === User Data Field ====================== | |------—+----—+----—+---------------—| | * | 0 | * | User Defined | |------—+----—+----—+---------------—|

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

マクロ定義詳解

◆ SP_PRM_HDR_LEN

#define SP_PRM_HDR_LEN   (6)

Packet Primary Header 長

space_packet.h43 行目に定義があります。

列挙型詳解

◆ SP_2ND_HDR_FLAG

Space Packet Secandary Header Flag

覚え書き
Secondary Header の有無
0/1 の 1 bit
列挙値
SP_2ND_HDR_FLAG_ABSENT 

0b: Secondary Header Absent

SP_2ND_HDR_FLAG_PRESENT 

1b: Secondary Header Present

space_packet.h75 行目に定義があります。

◆ SP_SEQ_FLAG

Space Packet Sequence Flag

覚え書き
2 bit
列挙値
SP_SEQ_FLAG_CONT 

00b: Continuation component of higher data structure

SP_SEQ_FLAG_FIRST 

01b: First component of higher data structure

SP_SEQ_FLAG_LAST 

10b: Last component of higher data structure

SP_SEQ_FLAG_SINGLE 

11b: Standalone packet

space_packet.h86 行目に定義があります。

◆ SP_TYPE

enum SP_TYPE

Space Packet Type

覚え書き
tlm or cmd を規定
0/1の 1 bit
列挙値
SP_TYPE_TLM 

0b: TELEMETRY

SP_TYPE_CMD 

1b: COMMAND

space_packet.h63 行目に定義があります。

◆ SP_VER

enum SP_VER

Space Packet Version Number

覚え書き
3 bit
列挙値
SP_VER_1 

000b: Version-1

SP_VER_UNKNOWN 

space_packet.h51 行目に定義があります。

関数詳解

◆ SP_copy_packet()

void SP_copy_packet ( SpacePacket dest,
const SpacePacket src 
)

SpacePacket をコピー

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

space_packet.c165 行目に定義があります。

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

◆ SP_extract_param_from_packet()

void SP_extract_param_from_packet ( const SpacePacket sp,
const SP_ParamExtractionInfo pei,
void *  dst 
)

packet に格納された param を取得

引数
sp[in]SpacePacket
pei[in]SP_ParamExtractionInfo
dst[out]格納先のポインタ
戻り値
void

space_packet.c171 行目に定義があります。

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

◆ SP_get_2nd_hdr_flag()

SP_2ND_HDR_FLAG SP_get_2nd_hdr_flag ( const SpacePacket sp)

Secondary Header Flag を取得

引数
spSpacePacket
戻り値
SP_2ND_HDR_FLAG

space_packet.c66 行目に定義があります。

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

◆ SP_get_apid()

APID SP_get_apid ( const SpacePacket sp)

APID を取得

引数
spSpacePacket
戻り値
APID

space_packet.c82 行目に定義があります。

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

◆ SP_get_packet_data_len()

uint16_t SP_get_packet_data_len ( const SpacePacket sp)

Packet Data Length を取得

引数
spSpacePacket
戻り値
Packet Data Length

space_packet.c128 行目に定義があります。

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

◆ SP_get_packet_len()

uint16_t SP_get_packet_len ( const SpacePacket sp)

Packet Length を取得

引数
spSpacePacket
戻り値
Packet Length

space_packet.c152 行目に定義があります。

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

◆ SP_get_seq_count()

uint16_t SP_get_seq_count ( const SpacePacket sp)

Sequence Count を取得

引数
spSpacePacket
戻り値
Sequence Count

space_packet.c113 行目に定義があります。

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

◆ SP_get_seq_flag()

SP_SEQ_FLAG SP_get_seq_flag ( const SpacePacket sp)

Sequence Flag を取得

引数
spSpacePacket
戻り値
SP_SEQ_FLAG

space_packet.c97 行目に定義があります。

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

◆ SP_get_type()

SP_TYPE SP_get_type ( const SpacePacket sp)

Packet Type を取得

引数
spSpacePacket
戻り値
SP_TYPE

space_packet.c50 行目に定義があります。

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

◆ SP_get_ver()

SP_VER SP_get_ver ( const SpacePacket sp)

Version No を取得

引数
spSpacePacket
戻り値
SP_VER

space_packet.c25 行目に定義があります。

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

◆ SP_insert_param_to_packet()

void SP_insert_param_to_packet ( SpacePacket sp,
const SP_ParamExtractionInfo pei,
const void *  src 
)

packet に param を格納

引数
sp[in,out]SpacePacket
pei[in]SP_ParamExtractionInfo
src[in]格納元のポインタ
戻り値
void

space_packet.c207 行目に定義があります。

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

◆ SP_set_2nd_hdr_flag()

void SP_set_2nd_hdr_flag ( SpacePacket sp,
SP_2ND_HDR_FLAG  flag 
)

Secondary Header Flag を設定

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

space_packet.c75 行目に定義があります。

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

◆ SP_set_apid()

void SP_set_apid ( SpacePacket sp,
APID  apid 
)

APID を設定

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

space_packet.c90 行目に定義があります。

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

◆ SP_set_packet_data_len()

void SP_set_packet_data_len ( SpacePacket sp,
uint16_t  len 
)

Packet Data Length を設定

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

space_packet.c138 行目に定義があります。

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

◆ SP_set_packet_len()

void SP_set_packet_len ( SpacePacket sp,
uint16_t  len 
)

Packet Length を設定

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

space_packet.c158 行目に定義があります。

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

◆ SP_set_seq_count()

void SP_set_seq_count ( SpacePacket sp,
uint16_t  count 
)

Sequence Count を設定

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

space_packet.c122 行目に定義があります。

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

◆ SP_set_seq_flag()

void SP_set_seq_flag ( SpacePacket sp,
SP_SEQ_FLAG  flag 
)

Sequence Flag を設定

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

space_packet.c106 行目に定義があります。

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

◆ SP_set_type()

void SP_set_type ( SpacePacket sp,
SP_TYPE  type 
)

Packet Type を設定

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

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

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

◆ SP_set_ver()

void SP_set_ver ( SpacePacket sp,
SP_VER  ver 
)

Version No を設定

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

space_packet.c43 行目に定義があります。

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