9 #include "../../Library/c2a_round.h"
10 #include "../TaskManager/task_dispatcher.h"
11 #include "../../TlmCmd/common_cmd_packet_util.h"
62 #pragma section _FIX_TMGR
189 if (ti < 0)
return 0;
201 cycle = (
cycle_t)diff_in_cycle;
int c2a_round(double input)
@ CCP_EXEC_ILLEGAL_PARAMETER
コマンド実行時のパラメタエラー
@ CCP_EXEC_ILLEGAL_CONTEXT
コマンド実行時のその他のエラー
CCP_CmdRet CCP_make_cmd_ret(CCP_EXEC_STS exec_sts, uint32_t err_code)
コマンド返り値である CCP_CmdRet を作成
CCP_CmdRet CCP_make_cmd_ret_without_err_code(CCP_EXEC_STS exec_sts)
コマンド返り値である CCP_CmdRet を作成(エラーコード不使用版)
#define CCP_get_param_from_packet(packet, n, type)
CCP packet から,n番目のコマンド引数を取得する
void OBCT_count_up(ObcTime *time)
ObcTimeをstep刻みでインクリメントする
step_t OBCT_get_step(const ObcTime *time)
引数で指定した ObcTime の step を返す
ObcTime OBCT_add(const ObcTime *left, const ObcTime *right)
ObcTime の足し算を行う
ObcTime OBCT_create(cycle_t total_cycle, cycle_t mode_cycle, step_t step)
引数から ObcTime を作成する
cycle_t OBCT_get_total_cycle(const ObcTime *time)
引数で指定した ObcTime の total_cycle を返す
cycle_t OBCT_get_mode_cycle(const ObcTime *time)
引数で指定した ObcTime の mode_cycle を返す
uint32_t OBCT_get_mode_cycle_in_msec(const ObcTime *time)
引数で指定した ObcTime の mode_cycle をミリ秒単位で返す
void OBCT_clear(ObcTime *time)
ObcTime をクリアし全てゼロにする
uint32_t OBCT_get_total_cycle_in_msec(const ObcTime *time)
引数で指定した ObcTime の total_cycle をミリ秒単位で返す
#define OBCT_MAX_CYCLE
最大 cycle 数.つまり TI がいくつでオーバーフローするか
#define OBCT_CYCLES_PER_SEC
1 s で何 cycle か
#define OBCT_STEPS_PER_CYCLE
何 step で 1 cycle か
cycle_t total_cycle
TI のこと. OBC が起動してから(正確には,構造体が初期化されてから)の経過時間
cycle_t mode_cycle
最後に mode を変えてからの経過時間
step_t step
内部 step. TimeLine での処理時間分割に使われる
master_clock_ で OBC 時刻情報を保持するとともに, unixtime との紐づけや初期化情報の記録を行う
uint8_t initializing_flag
cycle_t ti_at_last_update
"unixtime_info_ を最後に更新した (GPSなどの) 時刻情報" を観測した時点の total_cycle
double unixtime_at_ti0
master_clock が {0, 0, 0} の時の unixtime
ObcTime initializing_time
struct TimeManager::@15 unixtime_info_
double utl_unixtime_epoch
struct TimeManager::@16 init_info_
void TDSP_resync_internal_counter(void)
タスクリストの展開時サイクル数を現在のサイクル数に強制的に合わせる
static CCP_CmdRet TMGR_conv_tmgr_ack_to_ccp_cmd_ret_(TMGR_ACK ack)
enum 変換用関数
double TMGR_get_utl_unixtime_epoch(void)
utl_unixtime_epoch を取得する
double TMGR_get_precise_ti_from_unixtime(const double unixtime)
unixtime を TI (cycle単位) に変換する
static TMGR_ACK TMGR_set_master_total_cycle_(cycle_t total_cycle)
TI (master_clock_.total_cycle) の setter
TMGR_ACK TMGR_update_unixtime(const double unixtime, const ObcTime *time)
unixtime と TI の紐づき情報を更新する
uint32_t TMGR_get_master_total_cycle_in_msec(void)
現在の total_cycle をミリ秒単位で返す
double TMGR_get_unixtime_at_ti0(void)
unixtime_at_ti0 を取得する
CCP_CmdRet Cmd_TMGR_CLEAR_UNIXTIME_INFO(const CommonCmdPacket *packet)
const TimeManager *const time_manager
CCP_CmdRet Cmd_TMGR_SET_CYCLE_CORRECTION(const CommonCmdPacket *packet)
uint32_t TMGR_get_master_mode_cycle_in_msec(void)
現在の mode_cycle をミリ秒単位で返す
static TMGR_ACK TMGR_set_utl_unixtime_epoch_(double utl_unixtime_epoch)
time_manager_.unixtime_info_.utl_unixtime_epoch の setter
static TimeManager time_manager_
cycle_t TMGR_get_master_mode_cycle(void)
現在の mode_cycle を返す
void TMGR_init(void)
TimeManager 構造体を初期化する
double TMGR_get_precise_cycles_per_sec(void)
OBC のクロック誤差を反映した cycles_per_sec を返す
void TMGR_count_up_master_clock(void)
master_clock_ をstep刻みでインクリメントする
cycle_t TMGR_get_master_total_cycle(void)
現在の total_cycle を返す
ObcTime TMGR_get_obc_time_from_unixtime(const double unixtime)
unixtime を ObcTime に変換する
void TMGR_down_initializing_flag(void)
C2Aの初期化終了時に呼び出し, 初期化flagを下げ, TMGRをもう一度クリアする
CCP_CmdRet Cmd_TMGR_UPDATE_UNIXTIME(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_TMGR_SET_TIME(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_TMGR_SET_UTL_UNIXTIME_EPOCH(const CommonCmdPacket *packet)
void TMGR_clear(void)
master_clock_ と unixtime_info_ をクリアし全てゼロにする
double TMGR_get_unixtime_from_obc_time(const ObcTime *time)
ObcTime を unixtime に変換する
ObcTime TMGR_get_master_clock(void)
現在の master_clock_ を取得する
double TMGR_get_unixtime_from_utl_unixtime(const cycle_t utl_unixtime)
UTL_cmdで用いる utl_unixtime を 一般的なunixtimeに変換する
void TMGR_clear_master_mode_cycle(void)
master_clock_ の mode_cycle をゼロにする
ObcTime TMGR_get_master_clock_from_boot(void)
初期化にかかった時間も加算した master_clock_ を返す
void TMGR_clear_unixtime_info(void)
unixtime_info_ を初期化する
CCP_CmdRet Cmd_TMGR_RESET_CYCLE_CORRECTION(const CommonCmdPacket *packet)
step_t TMGR_get_master_step(void)
現在の step を返す
cycle_t TMGR_get_ti_from_utl_unixtime(const cycle_t utl_unixtime)
引数で指定された utl_unixtime に対応する TI を返す
static TMGR_ACK TMGR_set_cycle_correction_(double cycle_correction)
time_manager_.unixtime_info_.cycle_correction の setter
double TMGR_get_precise_ti_in_sec(const ObcTime *time)
OBC のクロック誤差を反映した正確な ti を秒単位で返す
double TMGR_get_current_unixtime(void)
現在の unixtime を OBC の ti をもとに計算して返す
OBC時刻のカウントアップと,各種衛星時刻関連処理
#define TMGR_DEFAULT_UNIXTIME_EPOCH_FOR_UTL
TMGR_ACK
Time Manager の汎用返り値
@ TMGR_ACK_PARAM_ERR
パラメタエラー