C2A_Core
time_manager.h
[詳解]
1 
5 #ifndef TIME_MANAGER_H_
6 #define TIME_MANAGER_H_
7 
8 #include "obc_time.h"
9 #include "../../TlmCmd/common_cmd_packet.h"
10 
11 #define TMGR_DEFAULT_UNIXTIME_EPOCH_FOR_UTL (1577836800.0)
19 typedef enum
20 {
24 
29 typedef struct
30 {
32  struct
33  {
34  double unixtime_at_ti0;
42  } unixtime_info_;
43  struct
44  {
47  } init_info_;
48 } TimeManager;
49 
50 extern const TimeManager* const time_manager;
51 
57 void TMGR_init(void);
58 
64 void TMGR_clear(void);
65 
72 
79 
86 
94 
101 
108 
115 
122 
131 
140 
146 void TMGR_clear_unixtime_info(void);
147 
154 TMGR_ACK TMGR_update_unixtime(const double unixtime, const ObcTime* time);
155 
161 double TMGR_get_unixtime_at_ti0(void);
162 
168 double TMGR_get_utl_unixtime_epoch(void);
169 
176 
182 double TMGR_get_precise_ti_in_sec(const ObcTime* time);
183 
189 double TMGR_get_current_unixtime(void);
190 
196 double TMGR_get_unixtime_from_obc_time(const ObcTime* time);
197 
204 double TMGR_get_unixtime_from_utl_unixtime(const cycle_t utl_unixtime);
205 
212 double TMGR_get_precise_ti_from_unixtime(const double unixtime);
213 
220 ObcTime TMGR_get_obc_time_from_unixtime(const double unixtime);
221 
229 cycle_t TMGR_get_ti_from_utl_unixtime(const cycle_t utl_unixtime);
230 
232 
234 
236 
238 
240 
242 
243 #endif
OBCの時刻情報の定義と演算
uint32_t step_t
Definition: obc_time.h:11
uint32_t cycle_t
Definition: obc_time.h:10
コマンド返り値
Space Packet (コマンド用)
OBCの時刻情報を保持する構造体
Definition: obc_time.h:18
master_clock_ で OBC 時刻情報を保持するとともに, unixtime との紐づけや初期化情報の記録を行う
Definition: time_manager.h:30
uint8_t initializing_flag
Definition: time_manager.h:46
cycle_t ti_at_last_update
"unixtime_info_ を最後に更新した (GPSなどの) 時刻情報" を観測した時点の total_cycle
Definition: time_manager.h:35
double unixtime_at_ti0
master_clock が {0, 0, 0} の時の unixtime
Definition: time_manager.h:34
ObcTime initializing_time
Definition: time_manager.h:45
double utl_unixtime_epoch
Definition: time_manager.h:36
double cycle_correction
Definition: time_manager.h:39
ObcTime master_clock_
Definition: time_manager.h:31
double TMGR_get_utl_unixtime_epoch(void)
utl_unixtime_epoch を取得する
Definition: time_manager.c:153
double TMGR_get_precise_ti_from_unixtime(const double unixtime)
unixtime を TI (cycle単位) に変換する
Definition: time_manager.c:184
TMGR_ACK TMGR_update_unixtime(const double unixtime, const ObcTime *time)
unixtime と TI の紐づき情報を更新する
Definition: time_manager.c:136
uint32_t TMGR_get_master_total_cycle_in_msec(void)
現在の total_cycle をミリ秒単位で返す
Definition: time_manager.c:109
double TMGR_get_unixtime_at_ti0(void)
unixtime_at_ti0 を取得する
Definition: time_manager.c:148
CCP_CmdRet Cmd_TMGR_CLEAR_UNIXTIME_INFO(const CommonCmdPacket *packet)
Definition: time_manager.c:302
const TimeManager *const time_manager
Definition: time_manager.c:14
CCP_CmdRet Cmd_TMGR_SET_CYCLE_CORRECTION(const CommonCmdPacket *packet)
Definition: time_manager.c:286
uint32_t TMGR_get_master_mode_cycle_in_msec(void)
現在の mode_cycle をミリ秒単位で返す
Definition: time_manager.c:114
cycle_t TMGR_get_master_mode_cycle(void)
現在の mode_cycle を返す
Definition: time_manager.c:101
void TMGR_init(void)
TimeManager 構造体を初期化する
Definition: time_manager.c:44
double TMGR_get_precise_cycles_per_sec(void)
OBC のクロック誤差を反映した cycles_per_sec を返す
Definition: time_manager.c:158
void TMGR_count_up_master_clock(void)
master_clock_ をstep刻みでインクリメントする
Definition: time_manager.c:65
cycle_t TMGR_get_master_total_cycle(void)
現在の total_cycle を返す
Definition: time_manager.c:97
ObcTime TMGR_get_obc_time_from_unixtime(const double unixtime)
unixtime を ObcTime に変換する
Definition: time_manager.c:194
void TMGR_down_initializing_flag(void)
C2Aの初期化終了時に呼び出し, 初期化flagを下げ, TMGRをもう一度クリアする
Definition: time_manager.c:72
CCP_CmdRet Cmd_TMGR_UPDATE_UNIXTIME(const CommonCmdPacket *packet)
Definition: time_manager.c:257
CCP_CmdRet Cmd_TMGR_SET_TIME(const CommonCmdPacket *packet)
Definition: time_manager.c:249
CCP_CmdRet Cmd_TMGR_SET_UTL_UNIXTIME_EPOCH(const CommonCmdPacket *packet)
Definition: time_manager.c:278
void TMGR_clear(void)
master_clock_ と unixtime_info_ をクリアし全てゼロにする
Definition: time_manager.c:51
double TMGR_get_unixtime_from_obc_time(const ObcTime *time)
ObcTime を unixtime に変換する
Definition: time_manager.c:174
ObcTime TMGR_get_master_clock(void)
現在の master_clock_ を取得する
Definition: time_manager.c:80
double TMGR_get_unixtime_from_utl_unixtime(const cycle_t utl_unixtime)
UTL_cmdで用いる utl_unixtime を 一般的なunixtimeに変換する
Definition: time_manager.c:179
void TMGR_clear_master_mode_cycle(void)
master_clock_ の mode_cycle をゼロにする
Definition: time_manager.c:57
ObcTime TMGR_get_master_clock_from_boot(void)
初期化にかかった時間も加算した master_clock_ を返す
Definition: time_manager.c:92
void TMGR_clear_unixtime_info(void)
unixtime_info_ を初期化する
Definition: time_manager.c:128
CCP_CmdRet Cmd_TMGR_RESET_CYCLE_CORRECTION(const CommonCmdPacket *packet)
Definition: time_manager.c:294
step_t TMGR_get_master_step(void)
現在の step を返す
Definition: time_manager.c:105
cycle_t TMGR_get_ti_from_utl_unixtime(const cycle_t utl_unixtime)
引数で指定された utl_unixtime に対応する TI を返す
Definition: time_manager.c:211
double TMGR_get_precise_ti_in_sec(const ObcTime *time)
OBC のクロック誤差を反映した正確な ti を秒単位で返す
Definition: time_manager.c:163
TMGR_ACK
Time Manager の汎用返り値
Definition: time_manager.h:20
@ TMGR_ACK_PARAM_ERR
パラメタエラー
Definition: time_manager.h:22
@ TMGR_ACK_OK
正常終了
Definition: time_manager.h:21
double TMGR_get_current_unixtime(void)
現在の unixtime を OBC の ti をもとに計算して返す
Definition: time_manager.c:169