C2A_Core
event_handler.h ファイル

イベント発火型処理を行う [詳解]

event_handler.h の依存先関係図:
被依存関係図:

[ソースコード]

データ構造

struct  EH_RuleSettings
 EH_register_rule の引数.Rule登録に必要な情報 [詳解]
 
struct  EH_Rule
 EL_Event に対して対応する EH_Rule [詳解]
 
struct  EH_RuleTable
 EH_Rule のテーブル [詳解]
 
struct  EH_RuleSortedIndex
 
struct  EH_Log
 EH 対応のログ [詳解]
 
struct  EH_LogTable
 EH 対応のログテーブル [詳解]
 
struct  EH_ElEventCounter
 EL イベントカウンタ. EL のイベント記録情報と照らし合わせて,対応すべきイベントを探索するために使う [詳解]
 
struct  EH_ExecSettings
 EH 実行時設定 [詳解]
 
struct  EH_ExecInfo
 EH 実行時情報 [詳解]
 
struct  EH_RegisterFromCmd
 コマンド経由で EH_Rule を登録するときに使う内部状態変数 [詳解]
 
struct  EH_TlmInfo
 tlmのページネーションの情報保持 [詳解]
 
struct  EventHandler
 EventHandler のInfo構造体 [詳解]
 

マクロ定義

#define EH_RULE_TLM_PAGE_SIZE   (20)
 event_handler のルールテーブルの1テレメトリパケット(=1ページ)に格納されるルール数(ページネーション用) [詳解]
 
#define EH_RULE_TLM_PAGE_MAX   (8)
 event_handler のルールテーブルのページ数(ページネーション用) [詳解]
 
#define EH_LOG_TLM_PAGE_SIZE   (64)
 EH対応のログテーブルの1テレメトリパケット(=1ページ)に格納されるログ数(ページネーション用) [詳解]
 
#define EH_LOG_TLM_PAGE_MAX   (2)
 EH対応のログテーブルのページ数(ページネーション用) [詳解]
 
#define EH_MAX_RULE_NUM_OF_EL_ID_DUPLICATES   (4)
 EL_Event の ID が重複した EH_Rule を最大何個まで重複させてよいか (uint8_t を想定) [詳解]
 
#define EH_MAX_RESPONSE_NUM_DEFAULT   (8)
 一度の実行で対応する最大数(初期値) (uint8_t を想定) [詳解]
 
#define EH_MAX_CHECK_EVENT_NUM_DEFAULT   (64)
 
#define EH_MAX_MULTI_LEVEL_NUM_DEFAULT   (4)
 多段の EH 対応の設定可能な最大段数(初期値) (uint8_t を想定) [詳解]
 
#define EH_RULE_MAX   (EH_RULE_ID)(EH_RULE_TLM_PAGE_SIZE * EH_RULE_TLM_PAGE_MAX)
 
#define EH_LOG_MAX   (EH_LOG_TLM_PAGE_SIZE * EH_LOG_TLM_PAGE_MAX)
 最大何個の EH 対応ログを保持できるか [詳解]
 

列挙型

enum  EH_REGISTER_ACK {
  EH_REGISTER_ACK_OK = 0 , EH_REGISTER_ACK_ERR_FULL , EH_REGISTER_ACK_ERR_RULE_OVERWRITE , EH_REGISTER_ACK_ERR_DUPLICATE_FULL ,
  EH_REGISTER_ACK_ILLEGAL_RULE_ID , EH_REGISTER_ACK_ILLEGAL_GROUP , EH_REGISTER_ACK_ILLEGAL_ERROR_LEVEL , EH_REGISTER_ACK_ILLEGAL_MATCH_FLAG ,
  EH_REGISTER_ACK_ILLEGAL_CONDITION_TYPE , EH_REGISTER_ACK_ILLEGAL_COUNT_THRESHOLD , EH_REGISTER_ACK_ILLEGAL_BCT_ID , EH_REGISTER_ACK_ILLEGAL_ACTIVE_FLAG ,
  EH_REGISTER_ACK_ILLEGAL_MULTI_LEVEL , EH_REGISTER_ACK_UNKNOWN_ERR
}
 EH_register_rule の返り値 [詳解]
 
enum  EH_CHECK_RULE_ACK { EH_CHECK_RULE_ACK_OK = 0 , EH_CHECK_RULE_ACK_INVALID_RULE_ID , EH_CHECK_RULE_ACK_UNREGISTERED }
 EH_Rule 登録状況確認用 [詳解]
 
enum  EH_RESPONSE_CONDITION_TYPE { EH_RESPONSE_CONDITION_SINGLE , EH_RESPONSE_CONDITION_CONTINUOUS , EH_RESPONSE_CONDITION_CUMULATIVE , EH_RESPONSE_CONDITION_TYPE_MAX }
 EL_Event 登録に対して,どのように EH 対応させるかの種類 [詳解]
 

関数

void EH_initialize (void)
 event_handler の初期化 [詳解]
 
void EH_execute (void)
 event_handler の実行 [詳解]
 
EH_REGISTER_ACK EH_register_rule (EH_RULE_ID id, const EH_RuleSettings *settings)
 ルールの登録 [詳解]
 
EH_CHECK_RULE_ACK EH_init_rule (EH_RULE_ID id)
 ルールの初期化 [詳解]
 
EH_CHECK_RULE_ACK EH_init_rule_for_multi_level (EH_RULE_ID id)
 ルールの初期化 (multi-level) [詳解]
 
void EH_init_rule_by_event_group (EL_GROUP group)
 EH_RuleSettings.event.group 指定による一括でのルールの初期化 [詳解]
 
void EH_init_rule_by_event_group_for_multi_level (EL_GROUP group)
 EH_RuleSettings.event.group 指定による一括でのルールの初期化 (multi-level) [詳解]
 
EH_CHECK_RULE_ACK EH_activate_rule (EH_RULE_ID id)
 ルールの有効化 [詳解]
 
EH_CHECK_RULE_ACK EH_inactivate_rule (EH_RULE_ID id)
 ルールの無効化 [詳解]
 
EH_CHECK_RULE_ACK EH_activate_rule_for_multi_level (EH_RULE_ID id)
 ルールの有効化 (multi-level) [詳解]
 
EH_CHECK_RULE_ACK EH_inactivate_rule_for_multi_level (EH_RULE_ID id)
 ルールの無効化 (multi-level) [詳解]
 
void EH_activate_rule_by_event_group (EL_GROUP group)
 EH_RuleSettings.event.group 指定による一括でのルールの有効化 [詳解]
 
void EH_inactivate_rule_by_event_group (EL_GROUP group)
 EH_RuleSettings.event.group 指定による一括でのルールの無効化 [詳解]
 
void EH_activate_rule_by_event_group_for_multi_level (EL_GROUP group)
 EH_RuleSettings.event.group 指定による一括でのルールの有効化 (multi-level) [詳解]
 
void EH_inactivate_rule_by_event_group_for_multi_level (EL_GROUP group)
 EH_RuleSettings.event.group 指定による一括でのルールの無効化 (multi-level) [詳解]
 
uint8_t EH_get_rule_is_active (EH_RULE_ID id)
 ルールが有効かどうか取得する [詳解]
 
EH_CHECK_RULE_ACK EH_set_rule_counter (EH_RULE_ID id, uint16_t counter)
 EH_Rule の counter をセット [詳解]
 
EH_CHECK_RULE_ACK EH_clear_rule_counter (EH_RULE_ID id)
 EH_Rule の counter を 0 クリア [詳解]
 
void EH_clear_rule_counter_by_event (EL_GROUP group, uint32_t local, EL_ERROR_LEVEL err_level)
 EH_Rule の counter を EL_Event 指定で 0 クリア [詳解]
 
void EH_match_event_counter_to_el (void)
 イベントカウンタを EL のそれに合わせる [詳解]
 
const EH_LogEH_get_the_nth_log_from_the_latest (uint16_t n)
 EH_LogTable の最新からn番目の対応ログを取得 [詳解]
 
CCP_CmdRet Cmd_EH_INIT (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_CLEAR_ALL_RULE (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_LOAD_DEFAULT_RULE (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_SET_REGISTER_RULE_EVENT_PARAM (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_SET_REGISTER_RULE_CONDITION_PARAM (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_REGISTER_RULE (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_DELETE_RULE (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_INIT_RULE (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_INIT_RULE_FOR_MULTI_LEVEL (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_ACTIVATE_RULE (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_INACTIVATE_RULE (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_ACTIVATE_RULE_FOR_MULTI_LEVEL (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_INACTIVATE_RULE_FOR_MULTI_LEVEL (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_SET_RULE_COUNTER (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_CLEAR_RULE_COUNTER (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_CLEAR_RULE_COUNTER_BY_EVENT (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_CLEAR_LOG (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_SET_MAX_RESPONSE_NUM (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_SET_MAX_CHECK_EVENT_NUM (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_SET_MAX_MULTI_LEVEL_NUM (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_SET_PAGE_OF_RULE_TABLE_FOR_TLM (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_SET_PAGE_OF_RULE_SORTED_IDX_FOR_TLM (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_MATCH_EVENT_COUNTER_TO_EL (const CommonCmdPacket *packet)
 新しい EL_Event 発生を検出するためのカウンタを強制的に EL のカウンタに合わせる [詳解]
 
CCP_CmdRet Cmd_EH_INIT_RULE_BY_EVENT_GROUP (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_INIT_RULE_BY_EVENT_GROUP_FOR_MULTI_LEVEL (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_ACTIVATE_RULE_BY_EVENT_GROUP (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_INACTIVATE_RULE_BY_EVENT_GROUP (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_ACTIVATE_RULE_BY_EVENT_GROUP_FOR_MULTI_LEVEL (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_EH_INACTIVATE_RULE_BY_EVENT_GROUP_FOR_MULTI_LEVEL (const CommonCmdPacket *packet)
 

変数

const EventHandler *const event_handler
 

詳解

イベント発火型処理を行う

覚え書き
event_logger の情報を元に指定した BC (対応 BC) を展開する (Event 発火に応じて対応を行う)
EH のベストプラクティス
  • いろんな箇所で FDIR を組むと,何が発動しているかわかりにくかったり,ログが散逸するので, できる限りすべての対応を EH で行うと良い
    • EH で対応を行う,ということは,以下のログが必ず取れている,ということになる
      • EH 対応をトリガするための Event 発行ログ (Event)
      • EH にマッチしたという Event ログ (Event)
      • EH 対応したという EH 対応ログと対応結果
    • ただし, EH 対応を行うためには, Block Cmd を消費するため,メモリ制約の厳しい OBC の場合は,難しい可能性もある
      • その場合は, EH_RESPONSE_CONDITION_SINGLE のもの(つまり,ステートレスな対応)を優先して, App 内部でハードコードすることを推奨する
      • EH_RESPONSE_CONDITION_SINGLE でないものは,カウンタを実装しなくてはいけないため, EH で処理するほうが望ましい
  • init, activate と inactivate
    • その EH Rule を 使う前に, init or activate することをおすすめする
    • init 時に,内部のカウンタ (EH_Rule.counter) がリセットされるため, EH_RESPONSE_CONDITION_CONTINUOUS, EH_RESPONSE_CONDITION_CUMULATIVE において適切な状態からスタートできる
    • モード線維持の SL や,コンポーネントを ON する BC などで init cmd を仕込ませておくと良い
    • 一方で,内部処理でカウンタをリセットせずに再度 EH Rule を有効化したい場合は, activate を用いる
      • 多段 EH 対応時に, Lv.1 で使う対応 BC を Lv.2 でも呼び出したりする場合に,カウンタをリセットしたくないことがある
  • 対応 BC 展開後の activate について
    • EH Rule がマッチし,対応 BC が展開された時,その EH_RULE_ID は自動的に inactivate される
    • そのため,常に対応し続けたいような Rule については,その対応 BC のどこか(基本的には不感時間などを考慮して末尾など)で activate (or init) する cmd を仕込ませておくと良い
  • EH_clear_rule_counter_by_event は適切に使うととても便利(詳細はこの関数の doxygen コメントを参照)
多段の EH 対応の組み方 多段の EH を組む場合, EH_RuleSettings.event.group: EL_CORE_GROUP_EH_MATCH_RULE EH_RuleSettings.event.local: 下位の EH_RULE_ID EH_RuleSettings.event.err_level: EL_ERROR_LEVEL_EH を指定する. そうすると,上位のルールがマッチした場合,該当するルール対応は実行されなくなる 例えば, UART 不通を考える 設定として
  • UART 不通が発生したら EL_UART Event を発行する (Event Logger)
  • EL_UART が 5 回発生したら UART ドライバリセットを行う EH_Rule1 を設定する
  • EH_Rule1 の対応 BC で EH_Rule1 を再度有効化するようにする
  • EH_Rule1 のマッチ (group: EL_CORE_GROUP_EH_MATCH_RULE, local: EH_Rule1 の EH_RULE_ID) が 3 回発生したら UART 回路リセットを行う EH_Rule2 を設定する とした場合,
  1. EL_UART が 5 回発生したら, EH_Rule1 が発火
  2. EL_UART が 10 回発生したら, EH_Rule1 が発火
  3. EL_UART が 15 回発生したら, EH_Rule1 は発火せずに, EH_Rule2 が発火
  4. EL_UART が 20 回発生したら, EH_Rule1 が発火
  5. ... というようになる このように, EL_CORE_GROUP_EH_MATCH_RULE で発火する EH_Rule は上位ルールとして解釈,実行され, 上位ルールが実行されるときは,下位ルールは実行されなくなる. また,これは 2 段のみならず, 3 段以上も可能である. この手法を応用すると,ルールのオーバーライドできる. 例えば,設定として
  • UART不通が発生したら EL_UART を発行する
  • EL_UART が 5 回発生したら UART ドライバリセットを行う EH_Rule1 を設定する
  • EH_Rule1 の対応 BC で EH_Rule1 を再度有効化するようにする
  • EH_Rule1 のマッチ (group: EL_CORE_GROUP_EH_MATCH_RULE, local: EH_Rule1 の EH_RULE_ID) が 1 回発生したら UART 回路リセットを行う EH_Rule2 を設定する とすると,
  • EL_UART が 5 回発生したら, EH_Rule1 は発火せずに, EH_Rule2 が発火 となるので,実質的に, EH_Rule2 で EH_Rule1 をオーバーライドすることができる. このように,下位のルールを,上位の発火条件を変えることで,柔軟にオーバーライドできる.
上記の多段の EH 対応の場合に発行される EH Event は,次のようになる. group / local / err_level / note の順に記す.また,時系列降順でしるす(上が新しい)
  1. EL_UART が 5 回発生したら, EH_Rule1 が発火 EL_CORE_GROUP_EH_MATCH_RULE / EH_Rule1 / EH / err_level
  2. EL_UART が 10 回発生したら, EH_Rule1 が発火 EL_CORE_GROUP_EH_MATCH_RULE / EH_Rule1 / EH / err_level
  3. EL_UART が 15 回発生したら, EH_Rule1 は発火せずに, EH_Rule2 が発火 EL_CORE_GROUP_EH_RESPOND_WITH_HIGHER_LEVEL_RULE / EH_Rule1 / EH / 1 EL_CORE_GROUP_EH_MATCH_RULE / EH_Rule2 / EH / err_level EL_CORE_GROUP_EH_MATCH_RULE / EH_Rule1 / EH / err_level
  4. EL_UART が 20 回発生したら, EH_Rule1 が発火 EL_CORE_GROUP_EH_MATCH_RULE / EH_Rule1 / EH / err_level
  5. EL_UART が 25 回発生したら, EH_Rule1 が発火 EL_CORE_GROUP_EH_MATCH_RULE / EH_Rule1 / EH / err_level
  6. EL_UART が 30 回発生したら, EH_Rule1 は発火せずに, EH_Rule2 も発火せずに, EH_Rule3 が発火 EL_CORE_GROUP_EH_RESPOND_WITH_HIGHER_LEVEL_RULE / EH_Rule1 / EH / 1 EL_CORE_GROUP_EH_RESPOND_WITH_HIGHER_LEVEL_RULE / EH_Rule2 / EH / 1 EL_CORE_GROUP_EH_MATCH_RULE / EH_Rule3 / EH / err_level EL_CORE_GROUP_EH_MATCH_RULE / EH_Rule2 / EH / err_level EL_CORE_GROUP_EH_MATCH_RULE / EH_Rule1 / EH / err_level
多段の EH 対応のため, EL_ERROR_LEVEL_EH の Event をルールに設定することは, 多段対応時 (つまり group == EL_CORE_GROUP_EH_MATCH_RULE) を除いてできない
by_event_group 関数について 複数の EH_Rule が同じ 対応 BC を設定している場合,その BC ではそのすべての EH_Rule を再度 activate させないといけない. それを1つ1つ指定するのはめんどくさいし,漏れが起きやすいので,それらの EH_Rule.settings で共通の event.group を指定しまとめ, event.group 単位で操作できるようにしたもの. なお, group での操作によって,想定外の EH_Rule まで操作されないように注意すること
EH での Event 発行は以下
  • EL_CORE_GROUP_EVENT_HANDLER
    • EH に関する様々なエラー
    • local id は EH_EL_LOCAL_ID
  • EL_CORE_GROUP_EH_MATCH_RULE
    • EH_Rule にマッチ
    • local id は EH_RULE_ID
  • EL_CORE_GROUP_EH_RESPOND_WITH_HIGHER_LEVEL_RULE
    • EH_Rule にマッチしたが,さらに上位の EH_Rule のマッチ条件を満たしたため,発火はキャンセルされた(上位で発火される)
    • local id は EH_RULE_ID

event_handler.h に定義があります。

マクロ定義詳解

◆ EH_LOG_MAX

#define EH_LOG_MAX   (EH_LOG_TLM_PAGE_SIZE * EH_LOG_TLM_PAGE_MAX)

最大何個の EH 対応ログを保持できるか

event_handler.h136 行目に定義があります。

◆ EH_LOG_TLM_PAGE_MAX

#define EH_LOG_TLM_PAGE_MAX   (2)

EH対応のログテーブルのページ数(ページネーション用)

event_handler.h112 行目に定義があります。

◆ EH_LOG_TLM_PAGE_SIZE

#define EH_LOG_TLM_PAGE_SIZE   (64)

EH対応のログテーブルの1テレメトリパケット(=1ページ)に格納されるログ数(ページネーション用)

event_handler.h111 行目に定義があります。

◆ EH_MAX_CHECK_EVENT_NUM_DEFAULT

#define EH_MAX_CHECK_EVENT_NUM_DEFAULT   (64)

一度の実行でチェックする event_logger の event log の最大値(初期値) (uint16_t を想定) TL内での実行時間を調整するために設定する.

event_handler.h117 行目に定義があります。

◆ EH_MAX_MULTI_LEVEL_NUM_DEFAULT

#define EH_MAX_MULTI_LEVEL_NUM_DEFAULT   (4)

多段の EH 対応の設定可能な最大段数(初期値) (uint8_t を想定)

event_handler.h118 行目に定義があります。

◆ EH_MAX_RESPONSE_NUM_DEFAULT

#define EH_MAX_RESPONSE_NUM_DEFAULT   (8)

一度の実行で対応する最大数(初期値) (uint8_t を想定)

event_handler.h115 行目に定義があります。

◆ EH_MAX_RULE_NUM_OF_EL_ID_DUPLICATES

#define EH_MAX_RULE_NUM_OF_EL_ID_DUPLICATES   (4)

EL_Event の ID が重複した EH_Rule を最大何個まで重複させてよいか (uint8_t を想定)

event_handler.h114 行目に定義があります。

◆ EH_RULE_MAX

#define EH_RULE_MAX   (EH_RULE_ID)(EH_RULE_TLM_PAGE_SIZE * EH_RULE_TLM_PAGE_MAX)

最大何個のルール ( EL_Event - EH_Rule 対応) を保持できるか 基本的に, EH_RULE_ID として使うので,キャストする enum上で定義しないのは, EH_Rule の最大値を,初期に定義する数よりも多くしたいため また,この値は, Rule 未定義値(ないしは初期値)としても使う

event_handler.h135 行目に定義があります。

◆ EH_RULE_TLM_PAGE_MAX

#define EH_RULE_TLM_PAGE_MAX   (8)

event_handler のルールテーブルのページ数(ページネーション用)

event_handler.h109 行目に定義があります。

◆ EH_RULE_TLM_PAGE_SIZE

#define EH_RULE_TLM_PAGE_SIZE   (20)

event_handler のルールテーブルの1テレメトリパケット(=1ページ)に格納されるルール数(ページネーション用)

event_handler.h108 行目に定義があります。

列挙型詳解

◆ EH_CHECK_RULE_ACK

EH_Rule 登録状況確認用

覚え書き
EH_{in}activate_rule の返り値などにも用いる
uint8_t を想定
列挙値
EH_CHECK_RULE_ACK_OK 

正常 or ルール登録済み

EH_CHECK_RULE_ACK_INVALID_RULE_ID 

EH_RULE_ID が不正

EH_CHECK_RULE_ACK_UNREGISTERED 

ルールが未登録

event_handler.h167 行目に定義があります。

◆ EH_REGISTER_ACK

EH_register_rule の返り値

覚え書き
uint8_t を想定
列挙値
EH_REGISTER_ACK_OK 

正常に登録完了

EH_REGISTER_ACK_ERR_FULL 

これ以上登録できない

EH_REGISTER_ACK_ERR_RULE_OVERWRITE 

すでに同じ ID にルールが登録されているため棄却

EH_REGISTER_ACK_ERR_DUPLICATE_FULL 

これ以上, EL_Event の重複した EH_Rule を登録できない

EH_REGISTER_ACK_ILLEGAL_RULE_ID 

不正な EH_RULE_ID

EH_REGISTER_ACK_ILLEGAL_GROUP 

不正な EL_Event.group

EH_REGISTER_ACK_ILLEGAL_ERROR_LEVEL 

不正な EL_Event.err_level

EH_REGISTER_ACK_ILLEGAL_MATCH_FLAG 

不正な should_match_err_level

EH_REGISTER_ACK_ILLEGAL_CONDITION_TYPE 

不正な EH_RESPONSE_CONDITION_TYPE

EH_REGISTER_ACK_ILLEGAL_COUNT_THRESHOLD 

不正な condition.count_threshold

EH_REGISTER_ACK_ILLEGAL_BCT_ID 

不正な deploy_bct_id

EH_REGISTER_ACK_ILLEGAL_ACTIVE_FLAG 

不正な is_active

EH_REGISTER_ACK_ILLEGAL_MULTI_LEVEL 

多段 EH 対応での不正な設定

EH_REGISTER_ACK_UNKNOWN_ERR 

不明なエラー

event_handler.h143 行目に定義があります。

◆ EH_RESPONSE_CONDITION_TYPE

EL_Event 登録に対して,どのように EH 対応させるかの種類

覚え書き
uint8_t を想定
列挙値
EH_RESPONSE_CONDITION_SINGLE 

Event 登録に対して即座に EH 対応

EH_RESPONSE_CONDITION_CONTINUOUS 

Event 登録後 N 秒以内に再び同じ Event 登録が発生することが M 回連続で発生した場合に EH 対応

EH_RESPONSE_CONDITION_CUMULATIVE 

Event が M 回登録した場合に EH 対応

EH_RESPONSE_CONDITION_TYPE_MAX 

event_handler.h179 行目に定義があります。

関数詳解

◆ Cmd_EH_ACTIVATE_RULE()

CCP_CmdRet Cmd_EH_ACTIVATE_RULE ( const CommonCmdPacket packet)

event_handler.c1604 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_ACTIVATE_RULE_BY_EVENT_GROUP()

CCP_CmdRet Cmd_EH_ACTIVATE_RULE_BY_EVENT_GROUP ( const CommonCmdPacket packet)

event_handler.c1824 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_ACTIVATE_RULE_BY_EVENT_GROUP_FOR_MULTI_LEVEL()

CCP_CmdRet Cmd_EH_ACTIVATE_RULE_BY_EVENT_GROUP_FOR_MULTI_LEVEL ( const CommonCmdPacket packet)

event_handler.c1840 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_ACTIVATE_RULE_FOR_MULTI_LEVEL()

CCP_CmdRet Cmd_EH_ACTIVATE_RULE_FOR_MULTI_LEVEL ( const CommonCmdPacket packet)

event_handler.c1642 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_CLEAR_ALL_RULE()

CCP_CmdRet Cmd_EH_CLEAR_ALL_RULE ( const CommonCmdPacket packet)

event_handler.c1472 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_CLEAR_LOG()

CCP_CmdRet Cmd_EH_CLEAR_LOG ( const CommonCmdPacket packet)

event_handler.c1730 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_CLEAR_RULE_COUNTER()

CCP_CmdRet Cmd_EH_CLEAR_RULE_COUNTER ( const CommonCmdPacket packet)

event_handler.c1700 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_CLEAR_RULE_COUNTER_BY_EVENT()

CCP_CmdRet Cmd_EH_CLEAR_RULE_COUNTER_BY_EVENT ( const CommonCmdPacket packet)

event_handler.c1719 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_DELETE_RULE()

CCP_CmdRet Cmd_EH_DELETE_RULE ( const CommonCmdPacket packet)

event_handler.c1547 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_INACTIVATE_RULE()

CCP_CmdRet Cmd_EH_INACTIVATE_RULE ( const CommonCmdPacket packet)

event_handler.c1623 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_INACTIVATE_RULE_BY_EVENT_GROUP()

CCP_CmdRet Cmd_EH_INACTIVATE_RULE_BY_EVENT_GROUP ( const CommonCmdPacket packet)

event_handler.c1832 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_INACTIVATE_RULE_BY_EVENT_GROUP_FOR_MULTI_LEVEL()

CCP_CmdRet Cmd_EH_INACTIVATE_RULE_BY_EVENT_GROUP_FOR_MULTI_LEVEL ( const CommonCmdPacket packet)

event_handler.c1848 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_INACTIVATE_RULE_FOR_MULTI_LEVEL()

CCP_CmdRet Cmd_EH_INACTIVATE_RULE_FOR_MULTI_LEVEL ( const CommonCmdPacket packet)

event_handler.c1661 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_INIT()

CCP_CmdRet Cmd_EH_INIT ( const CommonCmdPacket packet)

event_handler.c1464 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_INIT_RULE()

CCP_CmdRet Cmd_EH_INIT_RULE ( const CommonCmdPacket packet)

event_handler.c1566 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_INIT_RULE_BY_EVENT_GROUP()

CCP_CmdRet Cmd_EH_INIT_RULE_BY_EVENT_GROUP ( const CommonCmdPacket packet)

event_handler.c1808 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_INIT_RULE_BY_EVENT_GROUP_FOR_MULTI_LEVEL()

CCP_CmdRet Cmd_EH_INIT_RULE_BY_EVENT_GROUP_FOR_MULTI_LEVEL ( const CommonCmdPacket packet)

event_handler.c1816 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_INIT_RULE_FOR_MULTI_LEVEL()

CCP_CmdRet Cmd_EH_INIT_RULE_FOR_MULTI_LEVEL ( const CommonCmdPacket packet)

event_handler.c1585 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_LOAD_DEFAULT_RULE()

CCP_CmdRet Cmd_EH_LOAD_DEFAULT_RULE ( const CommonCmdPacket packet)

event_handler.c1480 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_MATCH_EVENT_COUNTER_TO_EL()

CCP_CmdRet Cmd_EH_MATCH_EVENT_COUNTER_TO_EL ( const CommonCmdPacket packet)

新しい EL_Event 発生を検出するためのカウンタを強制的に EL のカウンタに合わせる

event_handler.c1800 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_REGISTER_RULE()

CCP_CmdRet Cmd_EH_REGISTER_RULE ( const CommonCmdPacket packet)

event_handler.c1516 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_SET_MAX_CHECK_EVENT_NUM()

CCP_CmdRet Cmd_EH_SET_MAX_CHECK_EVENT_NUM ( const CommonCmdPacket packet)

event_handler.c1745 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_SET_MAX_MULTI_LEVEL_NUM()

CCP_CmdRet Cmd_EH_SET_MAX_MULTI_LEVEL_NUM ( const CommonCmdPacket packet)

event_handler.c1752 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_SET_MAX_RESPONSE_NUM()

CCP_CmdRet Cmd_EH_SET_MAX_RESPONSE_NUM ( const CommonCmdPacket packet)

event_handler.c1738 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_SET_PAGE_OF_LOG_TABLE_FOR_TLM()

CCP_CmdRet Cmd_EH_SET_PAGE_OF_LOG_TABLE_FOR_TLM ( const CommonCmdPacket packet)

event_handler.c1777 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_SET_PAGE_OF_RULE_SORTED_IDX_FOR_TLM()

CCP_CmdRet Cmd_EH_SET_PAGE_OF_RULE_SORTED_IDX_FOR_TLM ( const CommonCmdPacket packet)

event_handler.c1768 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_SET_PAGE_OF_RULE_TABLE_FOR_TLM()

CCP_CmdRet Cmd_EH_SET_PAGE_OF_RULE_TABLE_FOR_TLM ( const CommonCmdPacket packet)

event_handler.c1759 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_SET_REGISTER_RULE_CONDITION_PARAM()

CCP_CmdRet Cmd_EH_SET_REGISTER_RULE_CONDITION_PARAM ( const CommonCmdPacket packet)

event_handler.c1503 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_SET_REGISTER_RULE_EVENT_PARAM()

CCP_CmdRet Cmd_EH_SET_REGISTER_RULE_EVENT_PARAM ( const CommonCmdPacket packet)

event_handler.c1488 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_SET_RULE_COUNTER()

CCP_CmdRet Cmd_EH_SET_RULE_COUNTER ( const CommonCmdPacket packet)

event_handler.c1680 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_EH_SET_TARGET_ID_OF_RULE_TABLE_FOR_TLM()

CCP_CmdRet Cmd_EH_SET_TARGET_ID_OF_RULE_TABLE_FOR_TLM ( const CommonCmdPacket packet)

event_handler.c1786 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_activate_rule()

EH_CHECK_RULE_ACK EH_activate_rule ( EH_RULE_ID  id)

ルールの有効化

覚え書き
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
rule_counter はクリアされない
引数
idEH_RULE_ID
戻り値
EH_CHECK_RULE_ACK

event_handler.c1280 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_activate_rule_by_event_group()

void EH_activate_rule_by_event_group ( EL_GROUP  group)

EH_RuleSettings.event.group 指定による一括でのルールの有効化

覚え書き
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
rule_counter はクリアされない
group での操作によって,想定外の EH_Rule まで操作されないように注意すること
引数
groupEL_GROUP
戻り値
void

event_handler.c1344 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_activate_rule_by_event_group_for_multi_level()

void EH_activate_rule_by_event_group_for_multi_level ( EL_GROUP  group)

EH_RuleSettings.event.group 指定による一括でのルールの有効化 (multi-level)

覚え書き
多段の場合,指定した EL_GROUP で指定された EH_RULE_ID より下位のすべてのルールを有効化
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
group での操作によって,想定外の EH_Rule まで操作されないように注意すること
引数
groupEL_GROUP
戻り値
void

event_handler.c1356 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_activate_rule_for_multi_level()

EH_CHECK_RULE_ACK EH_activate_rule_for_multi_level ( EH_RULE_ID  id)

ルールの有効化 (multi-level)

覚え書き
多段の場合,指定した EH_RULE_ID より下位のすべてのルールを有効化
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
引数
idEH_RULE_ID
戻り値
EH_CHECK_RULE_ACK

event_handler.c1300 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_clear_rule_counter()

EH_CHECK_RULE_ACK EH_clear_rule_counter ( EH_RULE_ID  id)

EH_Rule の counter を 0 クリア

覚え書き
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
引数
idEH_RULE_ID
戻り値
EH_CHECK_RULE_ACK

event_handler.c1386 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_clear_rule_counter_by_event()

void EH_clear_rule_counter_by_event ( EL_GROUP  group,
uint32_t  local,
EL_ERROR_LEVEL  err_level 
)

EH_Rule の counter を EL_Event 指定で 0 クリア

覚え書き
もしアノマリが発生したら, EL_record_event, 正常なら EH_clear_rule_counter_by_event という使い方を想定している
そのため,EL_record_event とインターフェースをあわせている
引数
groupEL_Event.group
localEL_Event.local
err_levelEL_Event.err_level
戻り値
EH_CHECK_RULE_ACK

event_handler.c1392 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_execute()

void EH_execute ( void  )

event_handler の実行

    EL にて登録されたイベントを走査し,対応するBCを展開する
覚え書き
event_utility app などから定期実行されることを想定
引数
void
戻り値
void

event_handler.c343 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_get_rule_is_active()

uint8_t EH_get_rule_is_active ( EH_RULE_ID  id)

ルールが有効かどうか取得する

引数
[in]idEH_RULE_ID
戻り値
uint8_t: 有効かどうか
覚え書き
ID が無効の場合は inactive (0) を返す

event_handler.c1368 行目に定義があります。

呼び出し関係図:

◆ EH_get_the_nth_log_from_the_latest()

const EH_Log* EH_get_the_nth_log_from_the_latest ( uint16_t  n)

EH_LogTable の最新からn番目の対応ログを取得

覚え書き
n が大きすぎる場合は,最新のものを返す
引数
nn番目(0のとき最新)
戻り値
EH_Log

event_handler.c1446 行目に定義があります。

被呼び出し関係図:

◆ EH_inactivate_rule()

EH_CHECK_RULE_ACK EH_inactivate_rule ( EH_RULE_ID  id)

ルールの無効化

覚え書き
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
引数
idEH_RULE_ID
戻り値
EH_CHECK_RULE_ACK

event_handler.c1290 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_inactivate_rule_by_event_group()

void EH_inactivate_rule_by_event_group ( EL_GROUP  group)

EH_RuleSettings.event.group 指定による一括でのルールの無効化

覚え書き
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
group での操作によって,想定外の EH_Rule まで操作されないように注意すること
引数
groupEL_GROUP
戻り値
void

event_handler.c1350 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_inactivate_rule_by_event_group_for_multi_level()

void EH_inactivate_rule_by_event_group_for_multi_level ( EL_GROUP  group)

EH_RuleSettings.event.group 指定による一括でのルールの無効化 (multi-level)

覚え書き
多段の場合,指定した EL_GROUP で指定された EH_RULE_ID より下位のすべてのルールを無効化
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
group での操作によって,想定外の EH_Rule まで操作されないように注意すること
引数
groupEL_GROUP
戻り値
void

event_handler.c1362 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_inactivate_rule_for_multi_level()

EH_CHECK_RULE_ACK EH_inactivate_rule_for_multi_level ( EH_RULE_ID  id)

ルールの無効化 (multi-level)

覚え書き
多段の場合,指定した EH_RULE_ID より下位のすべてのルールを無効化
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
引数
idEH_RULE_ID
戻り値
EH_CHECK_RULE_ACK

event_handler.c1322 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_init_rule()

EH_CHECK_RULE_ACK EH_init_rule ( EH_RULE_ID  id)

ルールの初期化

    EH_activate_rule した後, EH_clear_rule_counter が実行される
覚え書き
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
引数
idEH_RULE_ID
戻り値
EH_CHECK_RULE_ACK

event_handler.c1234 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_init_rule_by_event_group()

void EH_init_rule_by_event_group ( EL_GROUP  group)

EH_RuleSettings.event.group 指定による一括でのルールの初期化

    EH_activate_rule した後, EH_clear_rule_counter が実行される
覚え書き
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
group での操作によって,想定外の EH_Rule まで操作されないように注意すること
引数
groupEL_GROUP
戻り値
void

event_handler.c1268 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_init_rule_by_event_group_for_multi_level()

void EH_init_rule_by_event_group_for_multi_level ( EL_GROUP  group)

EH_RuleSettings.event.group 指定による一括でのルールの初期化 (multi-level)

    EH_activate_rule した後, EH_clear_rule_counter が実行される
覚え書き
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
group での操作によって,想定外の EH_Rule まで操作されないように注意すること
引数
groupEL_GROUP
戻り値
void

event_handler.c1274 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_init_rule_for_multi_level()

EH_CHECK_RULE_ACK EH_init_rule_for_multi_level ( EH_RULE_ID  id)

ルールの初期化 (multi-level)

    EH_activate_rule した後, EH_clear_rule_counter が実行される
覚え書き
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
引数
idEH_RULE_ID
戻り値
EH_CHECK_RULE_ACK

event_handler.c1245 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_initialize()

void EH_initialize ( void  )

event_handler の初期化

引数
void
戻り値
void

event_handler.c293 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_match_event_counter_to_el()

void EH_match_event_counter_to_el ( void  )

イベントカウンタを EL のそれに合わせる

覚え書き
EL 側をリセットした際に呼び出さないと,不整合が発生する(まあ,勝手に解消されるけど)
引数
void
戻り値
void

event_handler.c1435 行目に定義があります。

被呼び出し関係図:

◆ EH_register_rule()

EH_REGISTER_ACK EH_register_rule ( EH_RULE_ID  id,
const EH_RuleSettings settings 
)

ルールの登録

覚え書き
基本的には, EH_load_default_rules 内部でのみ使われることを想定
引数
settingsEH_RuleSettings
idEH_RULE_ID
戻り値
EH_REGISTER_ACK

event_handler.c1101 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ EH_set_rule_counter()

EH_CHECK_RULE_ACK EH_set_rule_counter ( EH_RULE_ID  id,
uint16_t  counter 
)

EH_Rule の counter をセット

覚え書き
基本的にはコマンドで操作するので,直接使うことはあまり想定していない
引数
idEH_RULE_ID
counterセットする counter
戻り値
EH_CHECK_RULE_ACK

event_handler.c1376 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

変数詳解

◆ event_handler

const EventHandler* const event_handler
extern

event_handler.c290 行目に定義があります。