Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
meltingrabbit committed Jan 26, 2022
1 parent bf43536 commit 8711e0b
Show file tree
Hide file tree
Showing 6 changed files with 200 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/**
* @file
* @brief SpacePacket のユーザー設定
*/
#ifndef SPACE_PACKET_PARAMS_H_
#define SPACE_PACKET_PARAMS_H_

#undef SP_TLM_MAX_LEN
#undef SP_CMD_MAX_LEN

#define SP_TLM_MAX_LEN (432)
#define SP_CMD_MAX_LEN (128)

#endif
13 changes: 13 additions & 0 deletions TlmCmd/Ccsds/cmd_space_packet.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#pragma section REPRO
/**
* @file
* @brief CCSDS で規定される Space Packet の コマンド版の実装
* @brief C ではテンプレートが使えないため,別で定義する
* @note 詳細は space_packet.h を参照
*/

#include "cmd_space_packet.h"
#include "space_packet.h"


#pragma section
17 changes: 17 additions & 0 deletions TlmCmd/Ccsds/cmd_space_packet.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/**
* @file
* @brief CCSDS で規定される Space Packet の コマンド版の実装
* @brief C ではテンプレートが使えないため,別で定義する
* @note 詳細は space_packet.h を参照
*/
#ifndef CMD_SPACE_PACKET_H_
#define CMD_SPACE_PACKET_H_

// FIXME: 拡張性の高いように, Secondary Heaer の定義などを直していく
// https://github.com/ut-issl/c2a-core/issues/155

#include <src_user/Library/stdint.h>



#endif
126 changes: 126 additions & 0 deletions TlmCmd/Ccsds/space_packet.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,131 @@
#ifndef SPACE_PACKET_H_
#define SPACE_PACKET_H_

#include "tlm_space_packet.h"
#include "cmd_space_packet.h"

#define SP_TLM_MAX_LEN (432) //!< TlmSpacePacket の最大パケット長.VCDU 分割しないならこれが最大値
#define SP_CMD_MAX_LEN (128) //!< CmdSpacePacket の最大パケット長.値は適当においている

// SP_TLM_MAX_LEN, SP_CMD_MAX_LEN を再定義
#include <src_user/Settings/TlmCmd/Ccsds/space_packet_params.h>
// ここで APID を定義する
// 詳細は common_tlm_cmd_packet.h を参照
#include <src_user/Settings/TlmCmd/Ccsds/apid_define.h>

#if SP_TLM_MAX_LEN > SP_CMD_MAX_LEN
#define SP_MAX_LEN SP_TLM_MAX_LEN
#else
#define SP_MAX_LEN SP_CMD_MAX_LEN
#endif

#define SP_PRM_HDR_LEN (6) //!< Packet Primary Header 長


#if SP_TLM_MAX_LEN <= SP_PRM_HDR_LEN
#error SP_TLM_MAX_LEN is too small
#endif
#if SP_CMD_MAX_LEN <= SP_PRM_HDR_LEN
#error SP_CMD_MAX_LEN is too small
#endif








/**
* @enum SP_VER
* @brief Space Packet Version Number
* @note 3 bit
*/
typedef enum
{
SP_VER_1 = 0, //!< 000b: Version-1
SP_VER_UNKNOWN
} SP_VER;

/**
* @enum SP_TYPE
* @brief Space Packet Type
* @note tlm or cmd を規定
* @note 0/1の 1 bit
*/
typedef enum
{
SP_TYPE_TLM = 0, //!< 0b: TELEMETRY
SP_TYPE_CMD = 1 //!< 1b: COMMAND
} SP_TYPE;

/**
* @enum SP_2ND_HDR_FLAG
* @brief Space Packet Secandary Header Flag
* @note Secondary Header の有無
* @note 0/1 の 1 bit
*/
typedef enum
{
SP_2ND_HDR_FLAG_ABSENT = 0, //!< 0b: Secondary Header Absent
SP_2ND_HDR_FLAG_PRESENT = 1 //!< 1b: Secondary Header Present
} SP_2ND_HDR_FLAG;

/**
* @enum SP_SEQ_FLAG
* @brief Space Packet Sequence Flag
* @note 2 bit
// FIXME
// * @note Packet Sequence Flag for each ADU もこれを用いる.
// * その場合, component を segment と読み替える.
*/
typedef enum
{
SP_SEQ_FLAG_CONT = 0, //!< 00b: Continuation component of higher data structure
SP_SEQ_FLAG_FIRST = 1, //!< 01b: First component of higher data structure
SP_SEQ_FLAG_LAST = 2, //!< 10b: Last component of higher data structure
SP_SEQ_FLAG_SINGLE = 3 //!< 11b: Standalone packet
} SP_SEQ_FLAG;






/**
* @struct SpacePacket
* @brief Space Packet
*/
typedef struct
{
uint8_t packet[SP_MAX_LEN];
} SpacePacket;

/**
* @struct TlmSpacePacket
* @brief Space Packet (テレメ用)
* @note C ではテンプレートが使えないため,別で定義する
* https://github.com/ut-issl/c2a-core/issues/204
*/
typedef struct
{
uint8_t packet[SP_TLM_MAX_LEN];
} TlmSpacePacket;

/**
* @struct CmdSpacePacket
* @brief Space Packet (コマンド用)
* @note C ではテンプレートが使えないため,別で定義する
* https://github.com/ut-issl/c2a-core/issues/204
*/
typedef struct
{
uint8_t packet[SP_CMD_MAX_LEN];
} CmdSpacePacket;






#endif
13 changes: 13 additions & 0 deletions TlmCmd/Ccsds/tlm_space_packet.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#pragma section REPRO
/**
* @file
* @brief CCSDS で規定される Space Packet の テレメ版の実装
* @brief C ではテンプレートが使えないため,別で定義する
* @note 詳細は space_packet.h を参照
*/

#include "tlm_space_packet.h"
#include "space_packet.h"


#pragma section
17 changes: 17 additions & 0 deletions TlmCmd/Ccsds/tlm_space_packet.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/**
* @file
* @brief CCSDS で規定される Space Packet の テレメ版の実装
* @brief C ではテンプレートが使えないため,別で定義する
* @note 詳細は space_packet.h を参照
*/
#ifndef TLM_SPACE_PACKET_H_
#define TLM_SPACE_PACKET_H_

// FIXME: 拡張性の高いように, Secondary Heaer の定義などを直していく
// https://github.com/ut-issl/c2a-core/issues/155

#include <src_user/Library/stdint.h>



#endif

0 comments on commit 8711e0b

Please sign in to comment.