96 #ifndef EVENT_HANDLER_H_
97 #define EVENT_HANDLER_H_
101 #ifdef EL_IS_ENABLE_TLOG
104 #include "../TimeManager/obc_time.h"
105 #include "../../TlmCmd/block_command_table.h"
108 #define EH_RULE_TLM_PAGE_SIZE (20)
109 #define EH_RULE_TLM_PAGE_MAX (8)
111 #define EH_LOG_TLM_PAGE_SIZE (64)
112 #define EH_LOG_TLM_PAGE_MAX (2)
114 #define EH_MAX_RULE_NUM_OF_EL_ID_DUPLICATES (4)
115 #define EH_MAX_RESPONSE_NUM_DEFAULT (8)
116 #define EH_MAX_CHECK_EVENT_NUM_DEFAULT (64)
118 #define EH_MAX_MULTI_LEVEL_NUM_DEFAULT (4)
131 #define EH_RULE_MAX (EH_RULE_ID)(EH_RULE_TLM_PAGE_SIZE * EH_RULE_TLM_PAGE_MAX)
136 #define EH_LOG_MAX (EH_LOG_TLM_PAGE_SIZE * EH_LOG_TLM_PAGE_MAX)
EH_REGISTER_ACK EH_register_rule(EH_RULE_ID id, const EH_RuleSettings *settings)
ルールの登録
#define EH_LOG_MAX
最大何個の EH 対応ログを保持できるか
const EventHandler *const event_handler
CCP_CmdRet Cmd_EH_SET_REGISTER_RULE_EVENT_PARAM(const CommonCmdPacket *packet)
EH_CHECK_RULE_ACK EH_init_rule_for_multi_level(EH_RULE_ID id)
ルールの初期化 (multi-level)
const EH_Log * EH_get_the_nth_log_from_the_latest(uint16_t n)
EH_LogTable の最新からn番目の対応ログを取得
CCP_CmdRet Cmd_EH_SET_RULE_COUNTER(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_INIT_RULE_BY_EVENT_GROUP_FOR_MULTI_LEVEL(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_CLEAR_LOG(const CommonCmdPacket *packet)
EH_CHECK_RULE_ACK
EH_Rule 登録状況確認用
@ EH_CHECK_RULE_ACK_INVALID_RULE_ID
EH_RULE_ID が不正
@ EH_CHECK_RULE_ACK_OK
正常 or ルール登録済み
@ EH_CHECK_RULE_ACK_UNREGISTERED
ルールが未登録
void EH_activate_rule_by_event_group(EL_GROUP group)
EH_RuleSettings.event.group 指定による一括でのルールの有効化
CCP_CmdRet Cmd_EH_SET_REGISTER_RULE_CONDITION_PARAM(const CommonCmdPacket *packet)
void EH_init_rule_by_event_group(EL_GROUP group)
EH_RuleSettings.event.group 指定による一括でのルールの初期化
EH_CHECK_RULE_ACK EH_init_rule(EH_RULE_ID id)
ルールの初期化
CCP_CmdRet Cmd_EH_SET_MAX_MULTI_LEVEL_NUM(const CommonCmdPacket *packet)
void EH_initialize(void)
event_handler の初期化
void EH_clear_rule_counter_by_event(EL_GROUP group, uint32_t local, EL_ERROR_LEVEL err_level)
EH_Rule の counter を EL_Event 指定で 0 クリア
CCP_CmdRet Cmd_EH_INIT_RULE(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_LOAD_DEFAULT_RULE(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_MATCH_EVENT_COUNTER_TO_EL(const CommonCmdPacket *packet)
新しい EL_Event 発生を検出するためのカウンタを強制的に EL のカウンタに合わせる
CCP_CmdRet Cmd_EH_INIT_RULE_BY_EVENT_GROUP(const CommonCmdPacket *packet)
void EH_match_event_counter_to_el(void)
イベントカウンタを EL のそれに合わせる
CCP_CmdRet Cmd_EH_INACTIVATE_RULE_FOR_MULTI_LEVEL(const CommonCmdPacket *packet)
void EH_execute(void)
event_handler の実行
void EH_activate_rule_by_event_group_for_multi_level(EL_GROUP group)
EH_RuleSettings.event.group 指定による一括でのルールの有効化 (multi-level)
CCP_CmdRet Cmd_EH_ACTIVATE_RULE_BY_EVENT_GROUP_FOR_MULTI_LEVEL(const CommonCmdPacket *packet)
EH_CHECK_RULE_ACK EH_clear_rule_counter(EH_RULE_ID id)
EH_Rule の counter を 0 クリア
CCP_CmdRet Cmd_EH_CLEAR_RULE_COUNTER(const CommonCmdPacket *packet)
EH_CHECK_RULE_ACK EH_set_rule_counter(EH_RULE_ID id, uint16_t counter)
EH_Rule の counter をセット
EH_REGISTER_ACK
EH_register_rule の返り値
@ EH_REGISTER_ACK_ILLEGAL_MULTI_LEVEL
多段 EH 対応での不正な設定
@ EH_REGISTER_ACK_ILLEGAL_RULE_ID
不正な EH_RULE_ID
@ EH_REGISTER_ACK_ILLEGAL_MATCH_FLAG
不正な should_match_err_level
@ EH_REGISTER_ACK_ILLEGAL_GROUP
不正な EL_Event.group
@ EH_REGISTER_ACK_ERR_RULE_OVERWRITE
すでに同じ ID にルールが登録されているため棄却
@ EH_REGISTER_ACK_ILLEGAL_ERROR_LEVEL
不正な EL_Event.err_level
@ EH_REGISTER_ACK_UNKNOWN_ERR
不明なエラー
@ EH_REGISTER_ACK_ERR_FULL
これ以上登録できない
@ EH_REGISTER_ACK_ERR_DUPLICATE_FULL
これ以上, EL_Event の重複した EH_Rule を登録できない
@ EH_REGISTER_ACK_ILLEGAL_CONDITION_TYPE
不正な EH_RESPONSE_CONDITION_TYPE
@ EH_REGISTER_ACK_OK
正常に登録完了
@ EH_REGISTER_ACK_ILLEGAL_BCT_ID
不正な deploy_bct_id
@ EH_REGISTER_ACK_ILLEGAL_COUNT_THRESHOLD
不正な condition.count_threshold
@ EH_REGISTER_ACK_ILLEGAL_ACTIVE_FLAG
不正な is_active
CCP_CmdRet Cmd_EH_SET_PAGE_OF_RULE_SORTED_IDX_FOR_TLM(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_INACTIVATE_RULE_BY_EVENT_GROUP(const CommonCmdPacket *packet)
uint8_t EH_get_rule_is_active(EH_RULE_ID id)
ルールが有効かどうか取得する
CCP_CmdRet Cmd_EH_INIT_RULE_FOR_MULTI_LEVEL(const CommonCmdPacket *packet)
EH_CHECK_RULE_ACK EH_activate_rule(EH_RULE_ID id)
ルールの有効化
void EH_inactivate_rule_by_event_group_for_multi_level(EL_GROUP group)
EH_RuleSettings.event.group 指定による一括でのルールの無効化 (multi-level)
CCP_CmdRet Cmd_EH_SET_MAX_CHECK_EVENT_NUM(const CommonCmdPacket *packet)
void EH_init_rule_by_event_group_for_multi_level(EL_GROUP group)
EH_RuleSettings.event.group 指定による一括でのルールの初期化 (multi-level)
CCP_CmdRet Cmd_EH_SET_MAX_RESPONSE_NUM(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_CLEAR_RULE_COUNTER_BY_EVENT(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_DELETE_RULE(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_INACTIVATE_RULE_BY_EVENT_GROUP_FOR_MULTI_LEVEL(const CommonCmdPacket *packet)
EH_CHECK_RULE_ACK EH_activate_rule_for_multi_level(EH_RULE_ID id)
ルールの有効化 (multi-level)
CCP_CmdRet Cmd_EH_ACTIVATE_RULE_FOR_MULTI_LEVEL(const CommonCmdPacket *packet)
void EH_inactivate_rule_by_event_group(EL_GROUP group)
EH_RuleSettings.event.group 指定による一括でのルールの無効化
CCP_CmdRet Cmd_EH_INACTIVATE_RULE(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_ACTIVATE_RULE_BY_EVENT_GROUP(const CommonCmdPacket *packet)
EH_RESPONSE_CONDITION_TYPE
EL_Event 登録に対して,どのように EH 対応させるかの種類
@ EH_RESPONSE_CONDITION_CONTINUOUS
Event 登録後 N 秒以内に再び同じ Event 登録が発生することが M 回連続で発生した場合に EH 対応
@ EH_RESPONSE_CONDITION_TYPE_MAX
@ EH_RESPONSE_CONDITION_CUMULATIVE
Event が M 回登録した場合に EH 対応
@ EH_RESPONSE_CONDITION_SINGLE
Event 登録に対して即座に EH 対応
EH_CHECK_RULE_ACK EH_inactivate_rule(EH_RULE_ID id)
ルールの無効化
CCP_CmdRet Cmd_EH_REGISTER_RULE(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_ACTIVATE_RULE(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_INIT(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_SET_PAGE_OF_LOG_TABLE_FOR_TLM(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_SET_TARGET_ID_OF_RULE_TABLE_FOR_TLM(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_SET_PAGE_OF_RULE_TABLE_FOR_TLM(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_EH_CLEAR_ALL_RULE(const CommonCmdPacket *packet)
EH_CHECK_RULE_ACK EH_inactivate_rule_for_multi_level(EH_RULE_ID id)
ルールの無効化 (multi-level)
event_handler の各種設定 各パラメタ類の詳細は event_handler.h を参照すること
EL_ERROR_LEVEL
event_logger の エラーレベル
EL_GROUP
event_logger の Event Group の user 定義部分
EL イベントカウンタ. EL のイベント記録情報と照らし合わせて,対応すべきイベントを探索するために使う
uint32_t counter_total
前回 EH_execute 実行時の EL でのイベント記録数
uint8_t current_multi_level
現在処理してる多段 EH 対応レベル
uint8_t max_multi_level_num
uint16_t max_check_event_num
CCP_EXEC_STS deploy_cmd_ack
cycle_t respond_time_in_master_cycle
コマンド経由で EH_Rule を登録するときに使う内部状態変数
EH_RuleSettings settings
登録する EH_RuleSettings
EH_REGISTER_ACK register_ack
EH_register_rule の返り値
EH_RULE_ID rule_id
登録先 EH_RULE_ID
EL_Event に対して対応する EH_Rule
EH_RuleSettings settings
設定値
ObcTime last_event_time
最後に発生した EL_Event の時刻
uint16_t counter
EH 対応までのカウンタ
EH_register_rule の引数.Rule登録に必要な情報
EL_GROUP group
引っ掛ける EL_Event.group
uint32_t time_threshold_ms
uint8_t should_match_err_level
EL_Event の一致に,エラーレベル一致を含めるか?
uint8_t is_active
対応が有効か? 対応後,自動的に無効になる
EH_RESPONSE_CONDITION_TYPE type
EH 対応の条件種類
bct_id_t deploy_bct_id
EH 対応に展開する BCT id
uint32_t local
引っ掛ける EL_Event.local
EL_GROUP group
EH_Rule.event.group
uint8_t duplicate_id
同じ {group. local} の rule がある場合の,重複ID
uint32_t local
EH_Rule.event.local
EH_RULE_ID rule_id
EventHandler.rules の idx
uint16_t registered_rule_num
登録済み rule 数
EH_RULE_ID target_rule_id
EH_ExecSettings exec_settings
実行時設定
EH_ElEventCounter el_event_counter
EH_ElEventCounter
EH_RegisterFromCmd reg_from_cmd
コマンド経由で EH_Rule を登録するときに使う内部状態変数
EH_RuleTable rule_table
EH_Rule のテーブル
EH_LogTable log_table
EH 対応ログテーブル
EH_ExecInfo exec_info
実行時情報
EH_TlmInfo tlm_info
tlmのための情報