Skip to content

Commit

Permalink
Merge pull request #193 from arkedge/feature/rename_vcdu
Browse files Browse the repository at this point in the history
VCDU を AOS transfer frame に rename する
  • Loading branch information
meltingrabbit authored Nov 9, 2023
2 parents 04d1ddb + 1de745e commit 66d5d71
Show file tree
Hide file tree
Showing 21 changed files with 423 additions and 384 deletions.
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,21 @@

注意: これは既存の C2A core update の「リリースの間の Pull Request を眺めてなんとなく察する」という曖昧な操作を緩和していくための試みであり,C2A user に対するお知らせを行う場として使っていくことを意図しています.初めから c2a-core の全変更を取り扱うと不必要に煩雑になるだけになってしまうため,完全な変更内容の一覧についてはこれまで通り [GitHub Releases](https://github.com/arkedge/c2a-core/releases) などから参照してください.

## v4.1.0 (Unreleased)

### Fixed

- [#193](https://github.com/arkedge/c2a-core/pull/193): VCDU を AOS transfer frame に rename する

### Migration Guide
- [#193](https://github.com/arkedge/c2a-core/pull/193): 影響範囲は MOBC のみ
1. `src_user/tlm_cmd/ccsds/vcdu.{c,h}` を消し,`src_user/tlm_cmd/ccsds/aos_transfer_frame.{c,h}``examples/mobc` からコピーする.CMakeLists.txt も修正する.
1. `VCDU``AOSTF` に置換する(TLM DB の csv なども).
1. `vcdu``aostf` に置換する(TLM DB の csv なども).
1. `vcdu.h``aos_transfer_frame.h` に置換する(include の修正).
1. コンパイルが通らないところを直す.想定されるものは以下.
- `VCDU` 構造体 が `AosTransferFrame` 構造体に変わったので,変数定義の型名が変わっているはず.

## v4.0.1 (2023-11-09)

### Fixed
Expand Down
6 changes: 3 additions & 3 deletions applications/memory_dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ CCP_CmdRet Cmd_MEM_DUMP_REGION_SEQ(const CommonCmdPacket* packet)
if (num_dumps >= 8)
{
// パケット生成回数の上限は8回とする。
// 32kbpsでのDL時に8VCDU/secで1秒分の通信量。
// 32kbpsでのDL時に8AOSTF/secで1秒分の通信量。
// これを超える場合は複数回コマンドを送信して対応する。
return CCP_make_cmd_ret_without_err_code(CCP_EXEC_ILLEGAL_PARAMETER);
}
Expand All @@ -132,7 +132,7 @@ CCP_CmdRet Cmd_MEM_DUMP_REGION_RND(const CommonCmdPacket* packet)
if (num_dumps >= 8)
{
// パケット生成回数の上限は8回とする。
// 32kbpsでのDL時に8VCDU/secで1秒分の通信量。
// 32kbpsでのDL時に8AOSTF/secで1秒分の通信量。
// これを超える場合は複数回コマンドを送信して対応する。
return CCP_make_cmd_ret_without_err_code(CCP_EXEC_ILLEGAL_PARAMETER);
}
Expand Down Expand Up @@ -170,7 +170,7 @@ CCP_CmdRet Cmd_MEM_DUMP_SINGLE(const CommonCmdPacket* packet)
if (num_dumps >= 8)
{
// パケット生成回数の上限は8回とする。
// 32kbpsでのDL時に8VCDU/secで1秒分の通信量。
// 32kbpsでのDL時に8AOSTF/secで1秒分の通信量。
// これを超える場合は複数回コマンドを送信して対応する。
return CCP_make_cmd_ret_without_err_code(CCP_EXEC_ILLEGAL_PARAMETER);
}
Expand Down
28 changes: 14 additions & 14 deletions examples/mobc/src/src_user/applications/component_service/csrv_gs.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,21 +123,21 @@ static RESULT CSRV_GS_rt_tlm_packet_handler_app_(void)
{
T2M_ACK ack = T2M_form_m_pdu(&CSRV_GS_rt_tlm_packet_handler_.tc_packet_to_m_pdu,
&PH_rt_tlm_list,
&CSRV_GS_rt_tlm_packet_handler_.vcdu.m_pdu);
&CSRV_GS_rt_tlm_packet_handler_.aostf.m_pdu);
if (ack != T2M_SUCCESS) return RESULT_OK;

// Realtime VCDU カウンタの設定
VCDU_setup_realtime_vcdu_hdr(&CSRV_GS_rt_tlm_packet_handler_.vcdu, CSRV_GS_rt_tlm_packet_handler_.vcdu_counter);
CSRV_GS_rt_tlm_packet_handler_.vcdu_counter = VCDU_calc_next_counter(CSRV_GS_rt_tlm_packet_handler_.vcdu_counter);
// Realtime AOSTF カウンタの設定
AOSTF_setup_realtime_aostf_hdr(&CSRV_GS_rt_tlm_packet_handler_.aostf, CSRV_GS_rt_tlm_packet_handler_.aostf_counter);
CSRV_GS_rt_tlm_packet_handler_.aostf_counter = AOSTF_calc_next_counter(CSRV_GS_rt_tlm_packet_handler_.aostf_counter);

// CLCW の設定
// CMD の VCID と TLM の VCID は独立で関係がない
// TLM の VCID 種別(Realtime, Replay)によらず CLCW を設定して良い
// CLCW が対応する CMD の VCID は CLCW の内部で指定される
VCDU_set_clcw(&CSRV_GS_rt_tlm_packet_handler_.vcdu, GS_form_clcw());
AOSTF_set_clcw(&CSRV_GS_rt_tlm_packet_handler_.aostf, GS_form_clcw());

// 完成した VCDU を RT VCDU として送出
GS_send_vcdu(&gs_driver_, &CSRV_GS_rt_tlm_packet_handler_.vcdu);
// 完成した AOSTF を RT AOSTF として送出
GS_send_aostf(&gs_driver_, &CSRV_GS_rt_tlm_packet_handler_.aostf);
}

return RESULT_OK;
Expand All @@ -158,21 +158,21 @@ static RESULT CSRV_GS_rp_tlm_packet_handler_app_(void)
{
T2M_ACK ack = T2M_form_m_pdu(&CSRV_GS_rp_tlm_packet_handler_.tc_packet_to_m_pdu,
&PH_rp_tlm_list,
&CSRV_GS_rp_tlm_packet_handler_.vcdu.m_pdu);
&CSRV_GS_rp_tlm_packet_handler_.aostf.m_pdu);
if (ack != T2M_SUCCESS) return RESULT_OK;

// Replay VCDU カウンタの設定
VCDU_setup_replay_vcdu_hdr(&CSRV_GS_rp_tlm_packet_handler_.vcdu, CSRV_GS_rp_tlm_packet_handler_.vcdu_counter);
CSRV_GS_rp_tlm_packet_handler_.vcdu_counter = VCDU_calc_next_counter(CSRV_GS_rp_tlm_packet_handler_.vcdu_counter);
// Replay AOSTF カウンタの設定
AOSTF_setup_replay_aostf_hdr(&CSRV_GS_rp_tlm_packet_handler_.aostf, CSRV_GS_rp_tlm_packet_handler_.aostf_counter);
CSRV_GS_rp_tlm_packet_handler_.aostf_counter = AOSTF_calc_next_counter(CSRV_GS_rp_tlm_packet_handler_.aostf_counter);

// CLCW の設定
// CMD の VCIDと TLM の VCID は独立で関係がない
// TLM の VCID 種別(Realtime, Replay) によらず CLCW を設定して良い
// CLCW が対応する CMD の VCID は CLCW の内部で指定される
VCDU_set_clcw(&CSRV_GS_rp_tlm_packet_handler_.vcdu, GS_form_clcw());
AOSTF_set_clcw(&CSRV_GS_rp_tlm_packet_handler_.aostf, GS_form_clcw());

// 完成した VCDU を RP VCDU として送出
GS_send_vcdu(&gs_driver_, &CSRV_GS_rp_tlm_packet_handler_.vcdu);
// 完成した AOSTF を RP AOSTF として送出
GS_send_aostf(&gs_driver_, &CSRV_GS_rp_tlm_packet_handler_.aostf);
}

return RESULT_OK;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

#include "../../component_driver/com/gs.h"
#include "../../tlm_cmd/ccsds/tcp_to_m_pdu.h"
#include "../../tlm_cmd/ccsds/vcdu.h"
#include "../../tlm_cmd/ccsds/aos_transfer_frame.h"
#include <src_core/system/application_manager/app_info.h>

/**
Expand All @@ -19,8 +19,8 @@
typedef struct
{
TcpToMPdu tc_packet_to_m_pdu; //!< PL から取り出した tc_packet を M_PDU に変換する
VCDU vcdu; //!< 送信するVCDU
uint32_t vcdu_counter; //!< VCDU counter
AosTransferFrame aostf; //!< 送信するAOSTF
uint32_t aostf_counter; //!< AOSTF counter
} CSRV_GS_TlmPacketHandler;

extern const GS_Driver* const gs_driver;
Expand Down
28 changes: 14 additions & 14 deletions examples/mobc/src/src_user/component_driver/com/gs.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

// それぞれ AD, BD, BC
static uint8_t GS_rx_header_[GS_RX_HEADER_NUM][GS_RX_HEADER_SIZE];
static uint8_t GS_tx_frame_[VCDU_LEN];
static uint8_t GS_tx_frame_[AOSTF_LEN];

/**
* @brief CCSDS 側 Driver の DS 上での初期化設定
Expand Down Expand Up @@ -114,8 +114,8 @@ CDS_INIT_ERR_CODE GS_init(GS_Driver* gs_driver,
gs_driver->info[i].rx.tctf.bd_rec_status = GS_VALIDATE_ERR_OK;

gs_driver->info[i].tx.send_cycle = 0;
gs_driver->info[i].tx.vcid = VCDU_VCID_UNKNOWN;
gs_driver->info[i].tx.vcdu_counter = 0;
gs_driver->info[i].tx.vcid = AOSTF_VCID_UNKNOWN;
gs_driver->info[i].tx.aostf_counter = 0;
}

gs_driver->ccsds_info.buffer_num = 8;
Expand Down Expand Up @@ -152,7 +152,7 @@ static void GS_load_default_driver_super_init_settings_(ComponentDriverSuper* p_
CDSSC_enable_strict_frame_search(p_stream_config); // 複数ストリームがあり,かつ論理的な受信漏れを0にするため.

CDSSC_set_tx_frame(p_stream_config, GS_tx_frame_); // 全 stream, uart, ccsds に関わらず共通
CDSSC_set_tx_frame_size(p_stream_config, VCDU_LEN); // VCDU を送信
CDSSC_set_tx_frame_size(p_stream_config, AOSTF_LEN); // AOSTF を送信

CDSSC_set_rx_header(p_stream_config, GS_rx_header_[stream], GS_RX_HEADER_SIZE);
CDSSC_set_rx_frame_size(p_stream_config, -1); // 可変長
Expand Down Expand Up @@ -254,21 +254,21 @@ static CDS_ERR_CODE GS_analyze_rec_data_(CDS_StreamConfig* p_stream_config, void
return CDS_ERR_CODE_OK;
}

CDS_CMD_ERR_CODE GS_send_vcdu(GS_Driver* gs_driver, const VCDU* vcdu)
CDS_CMD_ERR_CODE GS_send_aostf(GS_Driver* gs_driver, const AosTransferFrame* aostf)
{
CDS_ERR_CODE ret_ccsds = CDS_ERR_CODE_OK;
CDS_ERR_CODE ret_uart = CDS_ERR_CODE_OK;
size_t vcdu_size = sizeof(VCDU);
size_t aostf_size = sizeof(AosTransferFrame);

// パディングが無ければ元を GS_tx_frame_ にコピーさせる (444Byte) のコピーが無駄
if (vcdu_size == VCDU_LEN)
if (aostf_size == AOSTF_LEN)
{
CDSSC_set_tx_frame(&gs_driver->driver_ccsds.super.stream_config[GS_TX_STREAM], (uint8_t*)vcdu);
CDSSC_set_tx_frame(&gs_driver->driver_uart.super.stream_config[GS_TX_STREAM], (uint8_t*)vcdu);
CDSSC_set_tx_frame(&gs_driver->driver_ccsds.super.stream_config[GS_TX_STREAM], (uint8_t*)aostf);
CDSSC_set_tx_frame(&gs_driver->driver_uart.super.stream_config[GS_TX_STREAM], (uint8_t*)aostf);
}
else
{
VCDU_generate_byte_stream(vcdu, GS_tx_frame_); // 送信元にセット 消したいなぁ...
AOSTF_generate_byte_stream(aostf, GS_tx_frame_); // 送信元にセット 消したいなぁ...
CDSSC_set_tx_frame(&gs_driver->driver_ccsds.super.stream_config[GS_TX_STREAM], GS_tx_frame_);
CDSSC_set_tx_frame(&gs_driver->driver_uart.super.stream_config[GS_TX_STREAM], GS_tx_frame_);
}
Expand All @@ -278,8 +278,8 @@ CDS_CMD_ERR_CODE GS_send_vcdu(GS_Driver* gs_driver, const VCDU* vcdu)
if (gs_driver->ccsds_info.buffer_num)
{
gs_driver->info[GS_PORT_TYPE_CCSDS].tx.send_cycle = TMGR_get_master_total_cycle();
gs_driver->info[GS_PORT_TYPE_CCSDS].tx.vcid = VCDU_get_vcid(vcdu);
gs_driver->info[GS_PORT_TYPE_CCSDS].tx.vcdu_counter = VCDU_get_vcdu_counter(vcdu);
gs_driver->info[GS_PORT_TYPE_CCSDS].tx.vcid = AOSTF_get_vcid(aostf);
gs_driver->info[GS_PORT_TYPE_CCSDS].tx.aostf_counter = AOSTF_get_aostf_counter(aostf);

// DS 側の名称が cmd なだけで送信しているのは TLM
ret_ccsds = CDS_send_general_cmd(&gs_driver->driver_ccsds.super, GS_TX_STREAM);
Expand All @@ -289,8 +289,8 @@ CDS_CMD_ERR_CODE GS_send_vcdu(GS_Driver* gs_driver, const VCDU* vcdu)
if (gs_driver->driver_uart.is_tlm_on)
{
gs_driver->info[GS_PORT_TYPE_UART].tx.send_cycle = TMGR_get_master_total_cycle();
gs_driver->info[GS_PORT_TYPE_UART].tx.vcid = VCDU_get_vcid(vcdu);
gs_driver->info[GS_PORT_TYPE_UART].tx.vcdu_counter = VCDU_get_vcdu_counter(vcdu);
gs_driver->info[GS_PORT_TYPE_UART].tx.vcid = AOSTF_get_vcid(aostf);
gs_driver->info[GS_PORT_TYPE_UART].tx.aostf_counter = AOSTF_get_aostf_counter(aostf);

// DS 側の名称が cmd なだけで送信しているのは TLM
ret_uart = CDS_send_general_cmd(&gs_driver->driver_uart.super, GS_TX_STREAM);
Expand Down
14 changes: 7 additions & 7 deletions examples/mobc/src/src_user/component_driver/com/gs.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include <src_core/hal/uart.h>
#include <src_core/hal/ccsds.h>
#include "../../hal/ccsds_user.h"
#include "../../tlm_cmd/ccsds/vcdu.h"
#include "../../tlm_cmd/ccsds/aos_transfer_frame.h"
#include "gs_validate.h"

#define GS_RX_HEADER_NUM (3)
Expand Down Expand Up @@ -53,8 +53,8 @@ typedef struct
struct
{
cycle_t send_cycle; //!< 最後に送信したときの時刻
VCDU_VCID vcid; //!< 送信した TLM のタイプ
uint32_t vcdu_counter; //!< VCDU counter
AOSTF_VCID vcid; //!< 送信した TLM のタイプ
uint32_t aostf_counter; //!< AOSTF counter
} tx;
} GS_Info;

Expand Down Expand Up @@ -106,13 +106,13 @@ CDS_INIT_ERR_CODE GS_init(GS_Driver* gs_driver,
CDS_REC_ERR_CODE GS_rec_tctf(GS_Driver* gs_driver);

/**
* @brief 地上に向けて TLM を送信. 形式は VCDU
* @brief 地上に向けて TLM を送信. 形式は AOSTF
* @note CDS_send_general_cmd が使われているが, これは DS は MOBC コンポ間を想定しているため, MOBC から見るとコンポに cmd を送信している様に見える, が 今回は MOBC から地上に TLM を送信している
* @note TLM 送信, 形式は VCDU
* @note TLM 送信, 形式は AOSTF
* @param[in] gs_driver: ドライバー
* @param[in] vcdu: 送信する VCDU. 場合によってはそのまま DS に渡すので, local変数ではなくstaticな変数を渡すこと
* @param[in] aostf: 送信する AOSTF. 場合によってはそのまま DS に渡すので, local変数ではなくstaticな変数を渡すこと
* @return CDS_CMD_ERR_CODE: 送信結果
*/
CDS_CMD_ERR_CODE GS_send_vcdu(GS_Driver* gs_driver, const VCDU* vcdu);
CDS_CMD_ERR_CODE GS_send_aostf(GS_Driver* gs_driver, const AosTransferFrame* aostf);

#endif
2 changes: 1 addition & 1 deletion examples/mobc/src/src_user/tlm_cmd/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ set(C2A_SRCS
normal_block_command_definition/nbc_start_hk_tlm.c
normal_block_command_definition/nbc_respond_eh_for_test.c
normal_block_command_definition/nbc_test_bcl.c
ccsds/aos_transfer_frame.c
ccsds/m_pdu.c
ccsds/tc_transfer_frame.c
ccsds/tcp_to_m_pdu.c
ccsds/tc_segment.c
ccsds/vcdu.c
)

if(C2A_BUILD_AS_CXX)
Expand Down
Loading

0 comments on commit 66d5d71

Please sign in to comment.