Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
meltingrabbit committed Jan 27, 2022
1 parent a82d13a commit eafb23c
Show file tree
Hide file tree
Showing 10 changed files with 84 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,4 @@ typedef enum
APID_UNKNOWN
} APID;


#endif
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@
#ifndef CMD_SPACE_PACKET_PARAMS_H_
#define CMD_SPACE_PACKET_PARAMS_H_

#undef CSP_MAX_LEN
#undef CSP_2ND_HDR_VER_TO_USE

#define CSP_MAX_LEN (128)
#define CSP_2ND_HDR_VER_TO_USE (CSP_2ND_HDR_VER_1)

#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/**
* @file
* @brief CmdSpacePacket のユーザー設定
*/
#ifndef SPACE_PACKET_LEN_PARAMS_H_
#define SPACE_PACKET_LEN_PARAMS_H_

#undef TSP_MAX_LEN
#undef CSP_MAX_LEN

#define TSP_MAX_LEN (432)
#define CSP_MAX_LEN (128)

#endif
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@
#ifndef TLM_SPACE_PACKET_PARAMS_H_
#define TLM_SPACE_PACKET_PARAMS_H_

#undef TSP_MAX_LEN
#undef TSP_2ND_HDR_VER_TO_USE

#define TSP_MAX_LEN (432)
#define TSP_2ND_HDR_VER_TO_USE (TSP_2ND_HDR_VER_1)

#endif
29 changes: 16 additions & 13 deletions TlmCmd/Ccsds/cmd_space_packet.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,21 @@
#ifndef CMD_SPACE_PACKET_H_
#define CMD_SPACE_PACKET_H_

#include <src_user/Library/stdint.h>
#include "space_packet_len.h"

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

// はじめにバージョン型だけ定義
/**
* @enum CSP_2ND_HDR_VER
Expand All @@ -52,7 +67,6 @@ typedef enum
} CSP_2ND_HDR_VER;


#define CSP_MAX_LEN (128) //!< CmdSpacePacket の最大パケット長.値は適当においている
#define CSP_SND_HDR_LEN (9) //!< Secondary Header 長
#define CSP_2ND_HDR_VER_TO_USE (CSP_2ND_HDR_VER_1) //!< 使う Sec. HDR Ver

Expand All @@ -62,7 +76,7 @@ typedef enum
// TODO: 上に持ってきて,コンパイルが通らないことを確認する!!!!!!!!!!!!!!!!!!
// space_packet.h と相互 include になってしまっているので,最後のここで include する
#include "space_packet.h"
#include <src_core/TlmCmd/common_cmd_packet.h>
#include "../common_cmd_packet.h"

#if CSP_MAX_LEN <= SP_PRM_HDR_LEN
#error CSP_MAX_LEN is too small
Expand All @@ -80,17 +94,6 @@ typedef enum
CSP_CMD_TYPE_UNKNOWN
} CSP_CMD_TYPE;

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


// ******************************
// Primary Header getter/setter
Expand Down
29 changes: 13 additions & 16 deletions TlmCmd/Ccsds/space_packet.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,20 @@
#ifndef SPACE_PACKET_H_
#define SPACE_PACKET_H_

#include "tlm_space_packet.h"
#include "cmd_space_packet.h"
#include <src_user/Library/stdint.h>
#include "space_packet_len.h"

#if TSP_MAX_LEN > CSP_MAX_LEN
#define SP_MAX_LEN TSP_MAX_LEN
#else
#define SP_MAX_LEN CSP_MAX_LEN
#endif
// 相互参照のため,冒頭で定義
/**
* @struct SpacePacket
* @brief Space Packet
*/
typedef struct
{
uint8_t packet[SP_MAX_LEN];
} SpacePacket;

#include "../common_tlm_cmd_packet.h"

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

Expand Down Expand Up @@ -95,15 +101,6 @@ typedef enum
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 SP_ParamExtractionInfo
* @brief packet からデータを抜き取るときのパラメタ
Expand Down
21 changes: 21 additions & 0 deletions TlmCmd/Ccsds/space_packet_len.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/**
* @file
* @brief CCSDS で規定される Space Packet のパケット長情報のヘッダ
* @note space_packet.h と tlm_space_packet.h, cmd_space_packet.h の相互 include 回避のため,分離した
*/
#ifndef SPACE_PACKET_LEN_H_
#define SPACE_PACKET_LEN_H_

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

// TSP_MAX_LEN, CSP_MAX_LEN を再定義
#include <src_user/Settings/TlmCmd/Ccsds/space_packet_len_params.h>

#if TSP_MAX_LEN > CSP_MAX_LEN
#define SP_MAX_LEN TSP_MAX_LEN
#else
#define SP_MAX_LEN CSP_MAX_LEN
#endif

#endif
30 changes: 16 additions & 14 deletions TlmCmd/Ccsds/tlm_space_packet.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,21 @@
#ifndef TLM_SPACE_PACKET_H_
#define TLM_SPACE_PACKET_H_

#include <src_user/Library/stdint.h>
#include "space_packet_len.h"

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

// はじめにバージョン型だけ定義
/**
* @enum TSP_2ND_HDR_VER
Expand All @@ -65,7 +80,6 @@ typedef enum
} TSP_2ND_HDR_VER;


#define TSP_MAX_LEN (432) //!< TlmSpacePacket の最大パケット長.VCDU 分割しないならこれが最大値
#define TSP_SND_HDR_LEN (20) //!< Secondary Header 長
#define TSP_2ND_HDR_VER_TO_USE (TSP_2ND_HDR_VER_1) //!< 使う Sec. HDR Ver

Expand All @@ -75,25 +89,13 @@ typedef enum
// TODO: 上に持ってきて,コンパイルが通らないことを確認する!!!!!!!!!!!!!!!!!!
// space_packet.h と相互 include になってしまっているので,最後のここで include する
#include "space_packet.h"
#include <src_core/TlmCmd/common_tlm_packet.h>
#include "../common_tlm_packet.h"

#if TSP_MAX_LEN <= SP_PRM_HDR_LEN
#error TSP_MAX_LEN is too small
#endif


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


// ******************************
// Primary Header getter/setter
// ******************************
Expand Down
1 change: 1 addition & 0 deletions TlmCmd/common_tlm_cmd_packet.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#ifndef COMMON_TLM_CMD_PACKET_H_
#define COMMON_TLM_CMD_PACKET_H_

#include <src_user/Library/stdint.h>
// ここで, CTCP_MAX_LEN, CommonTlmCmdPacket として使うパケット型を指定する
#include <src_user/Settings/TlmCmd/common_tlm_cmd_packet_define.h>
#include <src_user/Settings/TlmCmd/common_tlm_cmd_packet_params.h>
Expand Down
3 changes: 3 additions & 0 deletions TlmCmd/packet_handler.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ void PH_init(void)
// パケット解析関数
// GSTOSからのパケット以外もすべてここで処理される
// Cmd_GENERATE_TLMとかも.
// FIXME: 外の OBC からコマンドが飛んでくることもあるので,長さが足りているかのチェックを入れる! PH_analyze_tlm_packet, PH_analyze_cmd_packet でも
PH_ACK PH_analyze_packet(const CommonTlmCmdPacket* packet)
{
if (packet == NULL) return PH_UNKNOWN; // FIXME: 返り値変えたい
Expand All @@ -96,6 +97,7 @@ PH_ACK PH_analyze_packet(const CommonTlmCmdPacket* packet)
static PH_ACK PH_analyze_cmd_packet(const CommonCmdPacket* packet)
{
PH_ACK ack;
// FIXME: CommonCmdPacket としての妥当性チェックを入れる!!!
if (packet == NULL) return PH_UNKNOWN; // FIXME: 返り値変えたい

// ユーザー定義部
Expand Down Expand Up @@ -162,6 +164,7 @@ static PH_ACK PH_analyze_block_cmd_(const CommonCmdPacket* packet)
static PH_ACK PH_analyze_tlm_packet(const CommonTlmPacket* packet)
{
CTP_DEST_FLAG flag;
// FIXME: CommonTlmPacket としての妥当性チェックを入れる!!!
if (packet == NULL) return PH_UNKNOWN; // FIXME: 返り値変えたい

flag = CTP_get_dest_flag(packet);
Expand Down

0 comments on commit eafb23c

Please sign in to comment.