Skip to content

Commit 29cd618

Browse files
Merge pull request #599 from ut-issl/feature/TSP_set_on_board_subnet_time
on board subnet time の設定のバグを修正
2 parents 6a01a21 + bb354c8 commit 29cd618

File tree

6 files changed

+74
-5
lines changed

6 files changed

+74
-5
lines changed

Drivers/Protocol/common_tlm_cmd_packet_for_driver_super.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,15 @@ DS_ERR_CODE CTP_get_ctp_from_dssc(const DS_StreamConfig* p_stream_config, Common
3636
memcpy(&received_packet->packet, EB90_FRAME_get_packet_head_from_dssc(p_stream_config), (size_t)packet_len);
3737
if (CTP_get_packet_len(received_packet) != packet_len) return DS_ERR_CODE_ERR;
3838
if (!CTP_is_valid_packet(received_packet)) return DS_ERR_CODE_ERR;
39+
40+
// On-Board Subnetwork Time を設定
41+
if (CTP_get_on_board_subnet_time(received_packet) == 0xffffffff)
42+
{
43+
// FIXME: TG_forward_tlm_ ではなくてここでいいか検討
44+
// 可能な限り正確な時間をいれるには,受信直後のここでいれるべき(←→網羅性)
45+
// MOBC - 2nd OBC - 3rd OBC というとき, 2nd OBC でも 0xffffffff ができるようにしている
46+
CTP_set_on_board_subnet_time(received_packet);
47+
}
3948
return DS_ERR_CODE_OK;
4049
}
4150

Examples/2nd_obc_user/src/src_user/TlmCmd/common_tlm_packet.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,30 @@ void CTP_set_apid(CommonTlmPacket* packet, APID apid)
2727
TSP_set_apid(packet, apid);
2828
}
2929

30+
double CTP_get_global_time(const CommonTlmPacket* packet)
31+
{
32+
return TSP_get_global_time(packet);
33+
}
34+
3035
void CTP_set_global_time(CommonTlmPacket* packet)
3136
{
3237
// 何を設定するかはユーザー定義
3338
// TMGR_get_curret_unixtime() で現在の unixtime を入れたり, gps 時刻 を入れたり, など
3439
TSP_set_global_time(packet, 0.0);
3540
}
3641

42+
uint32_t CTP_get_on_board_subnet_time(const CommonTlmPacket* packet)
43+
{
44+
return TSP_get_on_board_subnet_time(packet);
45+
}
46+
47+
void CTP_set_on_board_subnet_time(CommonTlmPacket* packet)
48+
{
49+
// 何を設定するかはユーザー定義
50+
// MOBC では主に TI を,2nd OBC では主に 0xffffffff を
51+
TSP_set_on_board_subnet_time(packet, 0xffffffff);
52+
}
53+
3754
ctp_dest_flags_t CTP_get_dest_flags(const CommonTlmPacket* packet)
3855
{
3956
return TSP_get_dest_flags(packet);

Examples/2nd_obc_user/sync_with_minimum_user.bat

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ call :sync_file ".\src\src_user\TlmCmd\block_command_user_settings.c" "..\minimu
2727
call :sync_file ".\src\src_user\TlmCmd\block_command_user_settings.h" "..\minimum_user\src\src_user\TlmCmd\block_command_user_settings.h"
2828
call :sync_file ".\src\src_user\TlmCmd\common_cmd_packet.c" "..\minimum_user\src\src_user\TlmCmd\common_cmd_packet.c"
2929
call :sync_file ".\src\src_user\TlmCmd\common_tlm_cmd_packet.c" "..\minimum_user\src\src_user\TlmCmd\common_tlm_cmd_packet.c"
30-
call :sync_file ".\src\src_user\TlmCmd\common_tlm_packet.c" "..\minimum_user\src\src_user\TlmCmd\common_tlm_packet.c"
3130

3231
call :sync_file ".\src\src_user\Test\utils\wings_utils.py" "..\minimum_user\src\src_user\Test\utils\wings_utils.py"
3332
call :sync_file ".\src\src_user\Test\pytest.ini" "..\minimum_user\src\src_user\Test\pytest.ini"

Examples/minimum_user/src/src_user/TlmCmd/common_tlm_packet.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*/
77
#include <src_core/TlmCmd/common_tlm_packet.h>
88
#include <src_core/TlmCmd/Ccsds/tlm_space_packet.h>
9+
#include <src_core/System/TimeManager/time_manager.h>
910
#include <string.h>
1011

1112

@@ -27,13 +28,30 @@ void CTP_set_apid(CommonTlmPacket* packet, APID apid)
2728
TSP_set_apid(packet, apid);
2829
}
2930

31+
double CTP_get_global_time(const CommonTlmPacket* packet)
32+
{
33+
return TSP_get_global_time(packet);
34+
}
35+
3036
void CTP_set_global_time(CommonTlmPacket* packet)
3137
{
3238
// 何を設定するかはユーザー定義
3339
// TMGR_get_curret_unixtime() で現在の unixtime を入れたり, gps 時刻 を入れたり, など
3440
TSP_set_global_time(packet, 0.0);
3541
}
3642

43+
uint32_t CTP_get_on_board_subnet_time(const CommonTlmPacket* packet)
44+
{
45+
return TSP_get_on_board_subnet_time(packet);
46+
}
47+
48+
void CTP_set_on_board_subnet_time(CommonTlmPacket* packet)
49+
{
50+
// 何を設定するかはユーザー定義
51+
// MOBC では主に TI を,2nd OBC では主に 0xffffffff を
52+
TSP_set_on_board_subnet_time(packet, (uint32_t)TMGR_get_master_total_cycle());
53+
}
54+
3755
ctp_dest_flags_t CTP_get_dest_flags(const CommonTlmPacket* packet)
3856
{
3957
return TSP_get_dest_flags(packet);

TlmCmd/common_tlm_packet.h

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,37 @@ APID CTP_get_apid(const CommonTlmPacket* packet);
6363
void CTP_set_apid(CommonTlmPacket* packet, APID apid);
6464

6565
/**
66-
* @brief 現在の global_time を設定
66+
* @brief Global Time を取得
67+
* @note 何が設定されているかは user 定義
68+
* @param packet: CTP
69+
* @return Global Time
70+
*/
71+
double CTP_get_global_time(const CommonTlmPacket* packet);
72+
73+
/**
74+
* @brief 現在の Global Time を設定
6775
* @note 何を設定するかは user 定義
6876
* @param[in,out] packet: CTP
6977
* @return void
7078
*/
7179
void CTP_set_global_time(CommonTlmPacket* packet);
7280

81+
/**
82+
* @brief On-Board Subnetwork Time を取得
83+
* @note 何が設定されているかは user 定義
84+
* @param packet: CTP
85+
* @return On-Board Subnetwork Time
86+
*/
87+
uint32_t CTP_get_on_board_subnet_time(const CommonTlmPacket* packet);
88+
89+
/**
90+
* @brief 現在の On-Board Subnetwork Time を設定
91+
* @note 何を設定するかは user 定義
92+
* @param[in,out] packet: CTP
93+
* @return void
94+
*/
95+
void CTP_set_on_board_subnet_time(CommonTlmPacket* packet);
96+
7397
/**
7498
* @brief CTP_DEST_FLAG の & を取った flags を取得
7599
* @param packet: CTP

TlmCmd/telemetry_generator.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ static CCP_CmdRet TG_generate_tlm_(TLM_CODE tlm_id,
254254
TSP_set_tlm_id(&TG_ctp_, tlm_id);
255255
// FIXME: 他の時刻も入れる
256256
CTP_set_global_time(&TG_ctp_);
257-
TSP_set_on_board_subnet_time(&TG_ctp_, (uint32_t)(TMGR_get_master_total_cycle())); // FIXME: 暫定
257+
CTP_set_on_board_subnet_time(&TG_ctp_);
258258
TSP_set_dest_flags(&TG_ctp_, dest_flags);
259259
TSP_set_dest_info(&TG_ctp_, dest_info);
260260

@@ -302,9 +302,11 @@ static CCP_CmdRet TG_forward_tlm_(APID apid,
302302
// {
303303
// CTP_set_global_time(&TG_ctp_);
304304
// }
305-
if (TSP_get_on_board_subnet_time(&TG_ctp_) == 0xffffffff)
305+
if (CTP_get_on_board_subnet_time(&TG_ctp_) == 0xffffffff)
306306
{
307-
TSP_set_on_board_subnet_time(&TG_ctp_, (uint32_t)(TMGR_get_master_total_cycle())); // FIXME: 暫定
307+
// FIXME: 本当は Driver で受信時に上書きするべき? 一応 CTP_get_ctp_from_dssc でも対応
308+
// MOBC - 2nd OBC - 3rd OBC というとき, 2nd OBC でも 0xffffffff ができるようにしている
309+
CTP_set_on_board_subnet_time(&TG_ctp_);
308310
}
309311

310312
TSP_set_dest_flags(&TG_ctp_, dest_flags);

0 commit comments

Comments
 (0)