Skip to content

Commit

Permalink
Merge pull request #386 from ut-issl/feature/add_test_for_comm_with_c2a
Browse files Browse the repository at this point in the history
Pre Release (v3.7.0-beta.0): C2A間通信のテストを追加
  • Loading branch information
meltingrabbit authored Aug 23, 2022
2 parents cfd7781 + 612c214 commit c091d37
Show file tree
Hide file tree
Showing 29 changed files with 868 additions and 363 deletions.
2 changes: 1 addition & 1 deletion Docs/Core/communication.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ https://github.com/ut-issl/c2a-core/blob/b84c3d051a1e15ab62c8f1a9744957daa4a62a3
- TLC: GS から MOBC に届き, MOBC で TLC としてエンキューされる.デキューした後, APID を元に, AOBC へ配送される.配送時, Destination Type は自分宛に上書きされ, AOBC で RTC としてキューイング & 実行される.
- BC: GS から MOBC に届き, MOBC で BC 登録される.BC 展開した後, TL にエンキューされ,デキューした後, APID を元に, AOBC へ配送される.配送時, Destination Type は自分宛に上書きされ, AOBC で RTC としてキューイング & 実行される.
- APID: AOBC, Destination Type: AOBC
- GSC: GS から MOBC に届き, MOBC でエンキューされずに,そのまま AOBC へ配送される.配送時, Destination Type は自分宛に上書きされ, AOBC で GSC としてキューイング & 実行される.
- GSC: GS から MOBC に届き, MOBC でエンキューされずに,そのまま AOBC へ配送される.配送時, Destination Type は自分宛に上書きされ, AOBC で RTC としてキューイング & 実行される.
- TLC: GS から MOBC に届き, MOBC でエンキューされずに,そのまま AOBC へ配送される.配送時, Destination Type は自分宛に上書きされ, AOBC で TLC としてキューイング & 実行される.
- BC: GS から MOBC に届き, MOBC で BC 登録されずに,そのまま AOBC へ配送される.配送時, Destination Type は自分宛に上書きされ, AOBC で BC として登録 & 実行される.
- 地上局 SW での実装まとめ
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ void APP_DBG_flush_screen_(void)
VT100_erase_down();
VT100_reset_cursor();
VT100_erase_line();
Printf("-- C2A SAMPLE Flight S/W (H-ON, F-ON) --\n");
Printf("-- C2A 2nd OBC SAMPLE Flight S/W --\n");
VT100_erase_line();
Printf("BUILD: %s %s\n", __DATE__, __TIME__);
}
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
.# ************************************* #
# = Sample Command File = #
# ************************************* #
.# MOBC と 2nd OBC (AOBC) のサンプル
.#
.# =======================================
# NOP
# =======================================
.MOBC_RT.Cmd_NOP
.AOBC_RT.Cmd_NOP
.#
.# =======================================
# HK の生成
# AOBC > MOBC に AOBC HK が定期送信されている前提
# =======================================
.MOBC_RT.Cmd_BCT_CLEAR_BLOCK 77 # BCT 77 を使用
wait_sec 1
MOBC_BL.Cmd_GENERATE_TLM 1 0x40 0xf0 1 # HK
wait_sec 1
MOBC_BL.Cmd_GENERATE_TLM 3 0x40 0x91 1 # AOBC HK
wait_sec 1
MOBC_BL.Cmd_TLCD_DEPLOY_BLOCK 10 2 77
wait_sec 1
MOBC_RT.Cmd_BCE_ACTIVATE_BLOCK
wait_sec 1
MOBC_RT.Cmd_TLCD_CLEAR_ALL_TIMELINE 2
wait_sec 1
# BCを展開し,TLM出力開始
MOBC_RT.Cmd_TLCD_DEPLOY_BLOCK 2 77
.#
.# =======================================
# AOBC Tlm
# =======================================
.MOBC_RT.Cmd_GENERATE_TLM 0x40 0x90 1 # AOBC AOBC → CNT ERR が出るはず
.AOBC_RT.Cmd_GENERATE_TLM 0x40 0x90 1 # AOBC AOBC
.MOBC_RT.Cmd_GENERATE_TLM 0x40 0x90 1 # AOBC AOBC
.#
.# AOBCリセット
.MOBC_RT.Cmd_AM_INITIALIZE_APP 4 # AR_DI_AOBC
.MOBC_RT.Cmd_GENERATE_TLM 0x40 0x90 1 # AOBC AOBC → CNT ERR が出るはず
.AOBC_RT.Cmd_GENERATE_TLM 0x40 0x90 1 # AOBC AOBC
.MOBC_RT.Cmd_GENERATE_TLM 0x40 0x90 1 # AOBC AOBC
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Component,Name,Target,Code,Params,,,,,,,,,,,,,Danger Flag,Is Restricted,Description,Note
MOBC,,,,Num Params,Param1,,Param2,,Param3,,Param4,,Param5,,Param6,,,,,
AOBC,,,,Num Params,Param1,,Param2,,Param3,,Param4,,Param5,,Param6,,,,,
Comment,,,,,Type,Description,Type,Description,Type,Description,Type,Description,Type,Description,Type,Description,,,,
*,Cmd_EXAMPLE,OBC,,2,uint32_t,address,int32_t,time [ms],,,,,,,,,,,��,�����̐����ƒP�ʂ��������ƁI�i��Ftime [ms]�j
* C2A_CORE,��@�\�R�}���h,,,,,,,,,,,,,,,,,,,
Expand Down

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Empty file.
17 changes: 17 additions & 0 deletions Examples/2nd_obc_user/src/src_user/Test/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# C2A PYTEST (C2A 間通信用)
- C2A におけるテスト一般については, [Examples/minimum_user/src/src_user/Test](../../../../minimum_user/src/src_user/Test) を参照すること.
- ここでは, `minimum_user` (MOBC に相当)と `2nd_obc_user` (非 MOBC に相当.ここでは AOBC とする)を用いた C2A 間通信のテストについて記載する.

## テスト用 SILS 構成
- WINGS に, MOBC と AOBC の両方の TlmCmd DB を登録する.
- WINGS の使い方は WINGS Document を参照すること.
- SILS 環境 [S2E User for C2A Core](https://github.com/ut-issl/s2e-user-for-c2a-core) を 2 セット準備し, MOBC,AOBC それぞれを立ち上げる.
- S2E の使い方は S2E Document を参照すること.
- この時, MOBC の CCSDS ポートは WINGS の仮想ポートに接続(ループバック)し, MOBC の UART ポートは AOBC の UART ポートに接続(ループバック)させる.
- MOBC 側で AOBC への COM ポートへの出力を有効化するために,以下を ON にする.
- https://github.com/ut-issl/c2a-core/blob/2d9af4736342f6aebc004db9fbf9fc2887829e8b/Examples/minimum_user/CMakeLists.txt#L17
- デフォルトでは,以下のようになっている.
- MOBC CCSDS: COM11
- MOBC UART: COM13
- AOBC UART: COM14
- テストを実行する.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"client_id": "hoge_id",
"client_secret": "hoge_secret",
"grant_type": "hoge",
"username": "hoge@fuga",
"password": "piyopiyo"
}
4 changes: 4 additions & 0 deletions Examples/2nd_obc_user/src/src_user/Test/pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[pytest]
markers =
real
sils
4 changes: 4 additions & 0 deletions Examples/2nd_obc_user/src/src_user/Test/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"c2a_src_rel_path": "/../../",
"mobc_c2a_src_rel_path": "/../../../../minimum_user/src"
}
64 changes: 64 additions & 0 deletions Examples/2nd_obc_user/src/src_user/Test/test/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os
import sys
import time
import pytest

ROOT_PATH = "../"
sys.path.append(os.path.dirname(__file__) + "/" + ROOT_PATH + "utils")
import c2a_enum_utils
import wings_utils

c2a_enum = c2a_enum_utils.get_c2a_enum()
mobc_c2a_enum = c2a_enum_utils.get_mobc_c2a_enum()
ope = wings_utils.get_wings_operation()


@pytest.fixture(scope="session", autouse=True)
def increase_hk_frequency():
_increase_hk_frequency()
yield


def _increase_hk_frequency():

ope.send_rt_cmd(
mobc_c2a_enum.Cmd_CODE_TLCD_CLEAR_ALL_TIMELINE,
(2,),
)
time.sleep(0.1)

ope.send_rt_cmd(
mobc_c2a_enum.Cmd_CODE_BCT_CLEAR_BLOCK,
(mobc_c2a_enum.BC_HK_CYCLIC_TLM,),
)
time.sleep(0.1)

for ti in range(1, 10, 2):
ope.send_bl_cmd(
ti,
mobc_c2a_enum.Cmd_CODE_GENERATE_TLM,
(0x40, mobc_c2a_enum.Tlm_CODE_HK, 1),
)
time.sleep(0.1)

ope.send_bl_cmd(
10,
mobc_c2a_enum.Cmd_CODE_TLCD_DEPLOY_BLOCK,
(2, mobc_c2a_enum.BC_HK_CYCLIC_TLM),
)
time.sleep(0.1)

ope.send_rt_cmd(mobc_c2a_enum.Cmd_CODE_BCE_ACTIVATE_BLOCK, ())
time.sleep(0.1)

ope.send_rt_cmd(
mobc_c2a_enum.Cmd_CODE_TLCD_DEPLOY_BLOCK,
(2, mobc_c2a_enum.BC_HK_CYCLIC_TLM),
)


if __name__ == "__main__":
_increase_hk_frequency()
Loading

0 comments on commit c091d37

Please sign in to comment.