C2A_Core
space_packet.c ファイル

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

#include "space_packet.h"
#include "../../Library/endian.h"
#include <string.h>
space_packet.c の依存先関係図:

[ソースコード]

関数

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 を格納 [詳解]
 

変数

static const SP_ParamExtractionInfo SP_pei_ver_ = { 0, 0xe0, 5, 1}
 
static const SP_ParamExtractionInfo SP_pei_type_ = { 0, 0x10, 4, 1}
 
static const SP_ParamExtractionInfo SP_pei_2nd_hdr_flag_ = { 0, 0x08, 3, 1}
 
static const SP_ParamExtractionInfo SP_pei_apid_ = { 0, 0x07, 0, 2}
 
static const SP_ParamExtractionInfo SP_pei_seq_flag_ = { 2, 0xc0, 6, 1}
 
static const SP_ParamExtractionInfo SP_pei_seq_count_ = { 2, 0x3f, 0, 2}
 
static const SP_ParamExtractionInfo SP_pei_pckt_data_len_ = { 4, 0xff, 0, 2}
 

詳解

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

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

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

関数詳解

◆ 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 行目に定義があります。

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

変数詳解

◆ SP_pei_2nd_hdr_flag_

const SP_ParamExtractionInfo SP_pei_2nd_hdr_flag_ = { 0, 0x08, 3, 1}
static

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

◆ SP_pei_apid_

const SP_ParamExtractionInfo SP_pei_apid_ = { 0, 0x07, 0, 2}
static

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

◆ SP_pei_pckt_data_len_

const SP_ParamExtractionInfo SP_pei_pckt_data_len_ = { 4, 0xff, 0, 2}
static

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

◆ SP_pei_seq_count_

const SP_ParamExtractionInfo SP_pei_seq_count_ = { 2, 0x3f, 0, 2}
static

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

◆ SP_pei_seq_flag_

const SP_ParamExtractionInfo SP_pei_seq_flag_ = { 2, 0xc0, 6, 1}
static

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

◆ SP_pei_type_

const SP_ParamExtractionInfo SP_pei_type_ = { 0, 0x10, 4, 1}
static

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

◆ SP_pei_ver_

const SP_ParamExtractionInfo SP_pei_ver_ = { 0, 0xe0, 5, 1}
static

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