C2A_Core
event_handler_rule_test.c
[詳解]
1 #pragma section REPRO
6 #include "event_handler_rules.h"
8 #include "../../../TlmCmd/block_command_definitions.h"
9 
11 {
12  EH_RuleSettings settings;
13 
14  // single
15  settings.event.group = EL_GROUP_TEST_EH;
16  settings.event.local = 0;
18  settings.should_match_err_level = 1;
20  settings.condition.count_threshold = 0;
21  settings.condition.time_threshold_ms = 0;
23  settings.is_active = 1;
24  EH_register_rule(EH_RULE_TEST0, &settings);
25 
26  // single, err_level マッチなし
27  settings.event.group = EL_GROUP_TEST_EH;
28  settings.event.local = 1;
30  settings.should_match_err_level = 0;
32  settings.condition.count_threshold = 0;
33  settings.condition.time_threshold_ms = 0;
35  settings.is_active = 1;
36  EH_register_rule(EH_RULE_TEST1, &settings);
37 
38  // continuous
39  settings.event.group = EL_GROUP_TEST_EH;
40  settings.event.local = 2;
42  settings.should_match_err_level = 1;
44  settings.condition.count_threshold = 3;
45  settings.condition.time_threshold_ms = 30 * 1000;
47  settings.is_active = 1;
48  EH_register_rule(EH_RULE_TEST2, &settings);
49 
50  // culmulative
51  settings.event.group = EL_GROUP_TEST_EH;
52  settings.event.local = 3;
54  settings.should_match_err_level = 1;
56  settings.condition.count_threshold = 3;
57  settings.condition.time_threshold_ms = 0;
59  settings.is_active = 1;
60  EH_register_rule(EH_RULE_TEST3, &settings);
61 
62  // single, EH_RULE_TEST0 と 同時 (デフォルト inactive)
63  settings.event.group = EL_GROUP_TEST_EH;
64  settings.event.local = 0;
66  settings.should_match_err_level = 1;
68  settings.condition.count_threshold = 1;
69  settings.condition.time_threshold_ms = 0;
71  settings.is_active = 0;
72  EH_register_rule(EH_RULE_TEST4, &settings);
73 
74  // 多段 Lv.2, Lv.1 は EH_RULE_TEST0 (デフォルト inactive)
76  settings.event.local = EH_RULE_TEST0;
78  settings.should_match_err_level = 1;
80  settings.condition.count_threshold = 2;
81  settings.condition.time_threshold_ms = 0;
83  settings.is_active = 0;
84  EH_register_rule(EH_RULE_TEST5, &settings);
85 
86  // 多段 Lv.3 (デフォルト inactive)
88  settings.event.local = EH_RULE_TEST5;
90  settings.should_match_err_level = 1;
92  settings.condition.count_threshold = 2;
93  settings.condition.time_threshold_ms = 0;
95  settings.is_active = 0;
96  EH_register_rule(EH_RULE_TEST6, &settings);
97 }
98 
99 #pragma section
@ BC_TEST_EH_RESPOND
EH_REGISTER_ACK EH_register_rule(EH_RULE_ID id, const EH_RuleSettings *settings)
ルールの登録
イベント発火型処理を行う
@ EH_RESPONSE_CONDITION_CONTINUOUS
Event 登録後 N 秒以内に再び同じ Event 登録が発生することが M 回連続で発生した場合に EH 対応
@ EH_RESPONSE_CONDITION_CUMULATIVE
Event が M 回登録した場合に EH 対応
@ EH_RESPONSE_CONDITION_SINGLE
Event 登録に対して即座に EH 対応
void EH_load_rule_test(void)
EH の Rule 共通ヘッダ
@ EH_RULE_TEST3
@ EH_RULE_TEST5
@ EH_RULE_TEST1
@ EH_RULE_TEST6
@ EH_RULE_TEST0
@ EH_RULE_TEST2
@ EH_RULE_TEST4
@ EL_CORE_GROUP_EH_MATCH_RULE
EH_Rule でマッチした(詳細は event_handler.h 参照)
Definition: event_logger.h:215
@ EL_ERROR_LEVEL_EH
Definition: event_logger.h:270
@ EL_ERROR_LEVEL_LOW
Definition: event_logger.h:266
EL_GROUP
event_logger の Event Group の user 定義部分
@ EL_GROUP_TEST_EH
EH_register_rule の引数.Rule登録に必要な情報
struct EH_RuleSettings::@8 event
EH に対応する EL_Event
EL_GROUP group
引っ掛ける EL_Event.group
uint32_t time_threshold_ms
uint8_t should_match_err_level
EL_Event の一致に,エラーレベル一致を含めるか?
uint8_t is_active
対応が有効か? 対応後,自動的に無効になる
struct EH_RuleSettings::@9 condition
EH 対応条件
EH_RESPONSE_CONDITION_TYPE type
EH 対応の条件種類
bct_id_t deploy_bct_id
EH 対応に展開する BCT id
uint16_t count_threshold
uint32_t local
引っ掛ける EL_Event.local
EL_ERROR_LEVEL err_level