C2A_Core
tlm_space_packet.h
[詳解]
1 
52 #ifndef TLM_SPACE_PACKET_H_
53 #define TLM_SPACE_PACKET_H_
54 
55 // はじめにバージョン型だけ定義
61 typedef enum
62 {
66 
67 
68 #define TSP_SND_HDR_LEN (20)
69 #define TSP_2ND_HDR_VER_TO_USE (TSP_2ND_HDR_VER_1)
70 
71 // TSP_MAX_LEN, TSP_2ND_HDR_VER_TO_USE を再定義
73 
74 // 相互参照問題があるので,この順番で include
75 #include <stdint.h>
76 #include "space_packet_typedef.h"
77 #include "space_packet.h"
78 #include "../common_tlm_packet.h"
79 
80 #if TSP_MAX_LEN <= SP_PRM_HDR_LEN
81 #error TSP_MAX_LEN is too small
82 #endif
83 
84 
85 // ******************************
86 // Primary Header getter/setter
87 // ******************************
88 
95 
102 void TSP_set_ver(TlmSpacePacket* tsp, SP_VER ver);
103 
110 
117 void TSP_set_type(TlmSpacePacket* tsp, SP_TYPE type);
118 
125 
133 
139 APID TSP_get_apid(const TlmSpacePacket* tsp);
140 
147 void TSP_set_apid(TlmSpacePacket* tsp, APID apid);
148 
155 
163 
169 uint16_t TSP_get_seq_count(const TlmSpacePacket* tsp);
170 
177 void TSP_set_seq_count(TlmSpacePacket* tsp, uint16_t count);
178 
184 uint16_t TSP_get_packet_data_len(const TlmSpacePacket* tsp);
185 
194 void TSP_set_packet_data_len(TlmSpacePacket* tsp, uint16_t len);
195 
196 
197 // **************************
198 // 2nd Header getter/setter
199 // **************************
200 
207 
215 
221 uint32_t TSP_get_board_time(const TlmSpacePacket* tsp);
222 
229 void TSP_set_board_time(TlmSpacePacket* tsp, uint32_t time);
230 
236 double TSP_get_global_time(const TlmSpacePacket* tsp);
237 
244 void TSP_set_global_time(TlmSpacePacket* tsp, double time);
245 
251 uint32_t TSP_get_on_board_subnet_time(const TlmSpacePacket* tsp);
252 
259 void TSP_set_on_board_subnet_time(TlmSpacePacket* tsp, uint32_t time);
260 
267 
274 void TSP_set_tlm_id(TlmSpacePacket* tsp, TLM_CODE id);
275 
282 
290 
296 uint8_t TSP_get_dest_info(const TlmSpacePacket* tsp);
297 
304 void TSP_set_dest_info(TlmSpacePacket* tsp, uint8_t info);
305 
306 
307 // ******************
308 // Utility Function
309 // ******************
310 
316 uint16_t TSP_get_packet_len(const TlmSpacePacket* tsp);
317 
324 void TSP_set_packet_len(TlmSpacePacket* tsp, uint16_t len);
325 
333 void TSP_copy_packet(TlmSpacePacket* dest, const TlmSpacePacket* src);
334 
342 uint8_t* TSP_get_user_data_head(const TlmSpacePacket* tsp);
343 
352 void TSP_setup_primary_hdr(TlmSpacePacket* tsp, APID apid, uint16_t seq_count, uint16_t packet_len);
353 
360 
368 void TSP_setup_fill_packet(TlmSpacePacket* tsp, uint16_t fill_size);
369 
370 #endif
APID
Application Process ID
Definition: apid_define.h:17
uint8_t ctp_dest_flags_t
CTP_DEST_FLAG の & をとったフラグのための型
CCSDS で規定される Space Packet の実装
SP_TYPE
Space Packet Type
Definition: space_packet.h:64
SP_2ND_HDR_FLAG
Space Packet Secandary Header Flag
Definition: space_packet.h:76
SP_SEQ_FLAG
Space Packet Sequence Flag
Definition: space_packet.h:87
SP_VER
Space Packet Version Number
Definition: space_packet.h:52
SpacePacket 類 と CommonTlmCmdPacket 類が相互参照するのを回避するためのヘッダ
C89 環境用 stdint.h
Space Packet (テレメ用)
APID TSP_get_apid(const TlmSpacePacket *tsp)
APID を取得
void TSP_set_2nd_hdr_flag(TlmSpacePacket *tsp, SP_2ND_HDR_FLAG flag)
Secondary Header Flag を設定
void TSP_setup_primary_hdr(TlmSpacePacket *tsp, APID apid, uint16_t seq_count, uint16_t packet_len)
Primary Header を構築
SP_VER TSP_get_ver(const TlmSpacePacket *tsp)
Version No を取得
void TSP_set_type(TlmSpacePacket *tsp, SP_TYPE type)
Packet Type を設定
uint8_t TSP_get_dest_info(const TlmSpacePacket *tsp)
Dest Info を取得
void TSP_set_seq_flag(TlmSpacePacket *tsp, SP_SEQ_FLAG flag)
Sequence Flag を設定
uint32_t TSP_get_on_board_subnet_time(const TlmSpacePacket *tsp)
On-Board Subnetwork Time を取得
void TSP_set_2nd_hdr_ver(TlmSpacePacket *tsp, TSP_2ND_HDR_VER ver)
Secondary Header Version No を設定
ctp_dest_flags_t TSP_get_dest_flags(const TlmSpacePacket *tsp)
Destination Flags を取得
uint16_t TSP_get_packet_len(const TlmSpacePacket *tsp)
Packet Length を取得
uint16_t TSP_get_seq_count(const TlmSpacePacket *tsp)
Sequence Count を取得
SP_2ND_HDR_FLAG TSP_get_2nd_hdr_flag(const TlmSpacePacket *tsp)
Secondary Header Flag を取得
double TSP_get_global_time(const TlmSpacePacket *tsp)
Global Time を取得
void TSP_set_dest_info(TlmSpacePacket *tsp, uint8_t info)
Dest Info を設定
void TSP_setup_fill_packet(TlmSpacePacket *tsp, uint16_t fill_size)
パケット全体を 0x00 クリアし, fill_size に等しいサイズのパケットを生成する
void TSP_set_ver(TlmSpacePacket *tsp, SP_VER ver)
Version No を設定
void TSP_set_apid(TlmSpacePacket *tsp, APID apid)
APID を設定
SP_TYPE TSP_get_type(const TlmSpacePacket *tsp)
Packet Type を取得
SP_SEQ_FLAG TSP_get_seq_flag(const TlmSpacePacket *tsp)
Sequence Flag を取得
uint16_t TSP_get_packet_data_len(const TlmSpacePacket *tsp)
Packet Data Length を取得
TLM_CODE TSP_get_tlm_id(const TlmSpacePacket *tsp)
Tlm ID を取得
TSP_2ND_HDR_VER
Secondary Header Version No
@ TSP_2ND_HDR_VER_UNKNOWN
バージョン不定
@ TSP_2ND_HDR_VER_1
Version-1
void TSP_set_global_time(TlmSpacePacket *tsp, double time)
Global Time を設定
void TSP_copy_packet(TlmSpacePacket *dest, const TlmSpacePacket *src)
TlmSpacePacket をコピー
void TSP_set_on_board_subnet_time(TlmSpacePacket *tsp, uint32_t time)
On-Board Subnetwork Time を設定
void TSP_set_common_hdr(TlmSpacePacket *tsp)
共通部分の Header を構築
void TSP_set_packet_data_len(TlmSpacePacket *tsp, uint16_t len)
Packet Data Length を設定
uint32_t TSP_get_board_time(const TlmSpacePacket *tsp)
Board Time を取得
void TSP_set_board_time(TlmSpacePacket *tsp, uint32_t time)
Board Time を設定
void TSP_set_packet_len(TlmSpacePacket *tsp, uint16_t len)
Packet Length を設定
void TSP_set_seq_count(TlmSpacePacket *tsp, uint16_t count)
Sequence Count を設定
TSP_2ND_HDR_VER TSP_get_2nd_hdr_ver(const TlmSpacePacket *tsp)
Secondary Header Version No を取得
void TSP_set_dest_flags(TlmSpacePacket *tsp, ctp_dest_flags_t flags)
Destination Flags を設定
uint8_t * TSP_get_user_data_head(const TlmSpacePacket *tsp)
User Data Field の先頭ポインタを取得
void TSP_set_tlm_id(TlmSpacePacket *tsp, TLM_CODE id)
Tlm ID を設定
TlmSpacePacket のユーザー設定