C2A_Core
|
アノマリやエラーなどの各種イベントを記録する [詳解]
#include <stddef.h>
#include <stdint.h>
#include "../../TlmCmd/common_cmd_packet.h"
#include "../TimeManager/obc_time.h"
#include <src_user/Settings/System/event_logger_group.h>
#include <src_user/Settings/System/event_logger_params.h>
データ構造 | |
struct | EL_Event |
イベント [詳解] | |
struct | EL_EventStatistics |
イベント統計情報 [詳解] | |
struct | EL_TimeSeriesLog |
時系列ログ (TLog) のログ構造定義 [詳解] | |
struct | EL_CLogElement |
累積ログ (CLog) の1要素 note group, local が同じイベントを同一とみなす [詳解] | |
struct | EL_CumulativeLog |
累積ログ (CLog) のログ構造定義 [詳解] | |
struct | EL_TlmInfo |
struct | EventLogger |
マクロ定義 | |
#define | EL_TLOG_TLM_PAGE_SIZE (28) |
TLogにて,テレメ1ページにおろせるlog数 [詳解] | |
#define | EL_TLOG_TLM_PAGE_MAX_HIGH (4) |
TLogで保存するログのページ数 (EL_ERROR_LEVEL_HIGH) [詳解] | |
#define | EL_TLOG_TLM_PAGE_MAX_MIDDLE (4) |
TLogで保存するログのページ数 (EL_ERROR_LEVEL_MIDDLE) [詳解] | |
#define | EL_TLOG_TLM_PAGE_MAX_LOW (4) |
TLogで保存するログのページ数 (EL_ERROR_LEVEL_LOW) [詳解] | |
#define | EL_CLOG_TLM_PAGE_SIZE (18) |
CLogにて,テレメ1ページにおろせるlog数 [詳解] | |
#define | EL_CLOG_TLM_PAGE_MAX_HIGH (4) |
CLogで保存するログのページ数 (EL_ERROR_LEVEL_HIGH) [詳解] | |
#define | EL_CLOG_TLM_PAGE_MAX_MIDDLE (4) |
CLogで保存するログのページ数 (EL_ERROR_LEVEL_MIDDLE) [詳解] | |
#define | EL_CLOG_TLM_PAGE_MAX_LOW (4) |
CLogで保存するログのページ数 (EL_ERROR_LEVEL_LOW) [詳解] | |
#define | EL_TLOG_LOG_SIZE_MAX_EL (16) |
TLogにて保存するログ数 (EL_ERROR_LEVEL_EL) [詳解] | |
#define | EL_CLOG_LOG_SIZE_MAX_EL (8) |
CLogにて保存するログ数 (EL_ERROR_LEVEL_EL) [詳解] | |
#define | EL_TLOG_LOG_SIZE_MAX_EH (16) |
TLogにて保存するログ数 (EL_ERROR_LEVEL_EH) 小さめでOK. EH_MAX_RULE_NUM_OF_EL_ID_DUPLICATES x 多段EHの最大段数ぐらいあれば [詳解] | |
#define | EL_CLOG_LOG_SIZE_MAX_EH (8) |
CLogにて保存するログ数 (EL_ERROR_LEVEL_EH) これは EH では使われないので小さくて良い [詳解] | |
#define | EL_IS_ENABLE_TLOG |
TLog を有効にするか? → これがないと event_handler は使えない [詳解] | |
#define | EL_IS_ENABLE_CLOG |
CLog を有効にするか? [詳解] | |
#define | EL_IS_ENABLE_EVENT_NOTE |
EL_Event.note を有効にするか? event としては (event_handler などで) 同じだが,補足情報や区別用の id を使うか? [詳解] | |
#define | EL_IS_ENABLE_MIDDLE_ERROR_LEVEL |
EL_ERROR_LEVEL_MIDDLE を有効にするか? (C2A coreでは使わないので,基本無効でOK.使いたいなら有効に) [詳解] | |
#define | EL_IS_ENABLE_EL_ERROR_LEVEL |
#define | SIZE_OF_EL_CLOG_COUNTER_T (2) |
el_clog_counter_t の型サイズ.メモリインパクトがそれなりにあるので,可変に [詳解] | |
#define | EL_LOG_MINIMUM_REQUIRED (2) |
ログに求められる最小要素数 [詳解] | |
#define | EL_LOG_MINIMUM_REQUIRED_EL_LOG (4) |
ELログに求められる最小要素数 [詳解] | |
#define | EL_TLOG_LOG_SIZE_MAX_HIGH (EL_TLOG_TLM_PAGE_SIZE * EL_TLOG_TLM_PAGE_MAX_HIGH) |
#define | EL_TLOG_LOG_SIZE_MAX_MIDDLE (EL_TLOG_TLM_PAGE_SIZE * EL_TLOG_TLM_PAGE_MAX_MIDDLE) |
#define | EL_TLOG_LOG_SIZE_MAX_LOW (EL_TLOG_TLM_PAGE_SIZE * EL_TLOG_TLM_PAGE_MAX_LOW) |
#define | EL_CLOG_LOG_SIZE_MAX_HIGH (EL_CLOG_TLM_PAGE_SIZE * EL_CLOG_TLM_PAGE_MAX_HIGH) |
#define | EL_CLOG_LOG_SIZE_MAX_MIDDLE (EL_CLOG_TLM_PAGE_SIZE * EL_CLOG_TLM_PAGE_MAX_MIDDLE) |
#define | EL_CLOG_LOG_SIZE_MAX_LOW (EL_CLOG_TLM_PAGE_SIZE * EL_CLOG_TLM_PAGE_MAX_LOW) |
型定義 | |
typedef uint16_t | el_clog_counter_t |
変数 | |
const EventLogger *const | event_logger |
アノマリやエラーなどの各種イベントを記録する
event_logger.h に定義があります。
#define EL_CLOG_LOG_SIZE_MAX_EH (8) |
CLogにて保存するログ数 (EL_ERROR_LEVEL_EH) これは EH では使われないので小さくて良い
event_logger.h の 63 行目に定義があります。
#define EL_CLOG_LOG_SIZE_MAX_EL (8) |
CLogにて保存するログ数 (EL_ERROR_LEVEL_EL)
event_logger.h の 61 行目に定義があります。
#define EL_CLOG_LOG_SIZE_MAX_HIGH (EL_CLOG_TLM_PAGE_SIZE * EL_CLOG_TLM_PAGE_MAX_HIGH) |
event_logger.h の 148 行目に定義があります。
#define EL_CLOG_LOG_SIZE_MAX_LOW (EL_CLOG_TLM_PAGE_SIZE * EL_CLOG_TLM_PAGE_MAX_LOW) |
event_logger.h の 160 行目に定義があります。
#define EL_CLOG_LOG_SIZE_MAX_MIDDLE (EL_CLOG_TLM_PAGE_SIZE * EL_CLOG_TLM_PAGE_MAX_MIDDLE) |
event_logger.h の 153 行目に定義があります。
#define EL_CLOG_TLM_PAGE_MAX_HIGH (4) |
CLogで保存するログのページ数 (EL_ERROR_LEVEL_HIGH)
event_logger.h の 56 行目に定義があります。
#define EL_CLOG_TLM_PAGE_MAX_LOW (4) |
CLogで保存するログのページ数 (EL_ERROR_LEVEL_LOW)
event_logger.h の 58 行目に定義があります。
#define EL_CLOG_TLM_PAGE_MAX_MIDDLE (4) |
CLogで保存するログのページ数 (EL_ERROR_LEVEL_MIDDLE)
event_logger.h の 57 行目に定義があります。
#define EL_CLOG_TLM_PAGE_SIZE (18) |
CLogにて,テレメ1ページにおろせるlog数
event_logger.h の 55 行目に定義があります。
#define EL_IS_ENABLE_CLOG |
CLog を有効にするか?
event_logger.h の 66 行目に定義があります。
#define EL_IS_ENABLE_EL_ERROR_LEVEL |
EL_ERROR_LEVEL_EL を有効にするか? 再帰呼び出し & 無限ループを防ぐために,EL内部のイベントは別の専用のエラーレベルで記録される. これを有効化すると,EL内部のアノマリを記録できる.
event_logger.h の 72 行目に定義があります。
#define EL_IS_ENABLE_EVENT_NOTE |
EL_Event.note を有効にするか? event としては (event_handler などで) 同じだが,補足情報や区別用の id を使うか?
event_logger.h の 68 行目に定義があります。
#define EL_IS_ENABLE_MIDDLE_ERROR_LEVEL |
EL_ERROR_LEVEL_MIDDLE を有効にするか? (C2A coreでは使わないので,基本無効でOK.使いたいなら有効に)
event_logger.h の 69 行目に定義があります。
#define EL_IS_ENABLE_TLOG |
TLog を有効にするか? → これがないと event_handler は使えない
event_logger.h の 65 行目に定義があります。
#define EL_LOG_MINIMUM_REQUIRED (2) |
ログに求められる最小要素数
event_logger.h の 87 行目に定義があります。
#define EL_LOG_MINIMUM_REQUIRED_EL_LOG (4) |
ELログに求められる最小要素数
event_logger.h の 88 行目に定義があります。
#define EL_TLOG_LOG_SIZE_MAX_EH (16) |
TLogにて保存するログ数 (EL_ERROR_LEVEL_EH) 小さめでOK. EH_MAX_RULE_NUM_OF_EL_ID_DUPLICATES x 多段EHの最大段数ぐらいあれば
event_logger.h の 62 行目に定義があります。
#define EL_TLOG_LOG_SIZE_MAX_EL (16) |
TLogにて保存するログ数 (EL_ERROR_LEVEL_EL)
event_logger.h の 60 行目に定義があります。
#define EL_TLOG_LOG_SIZE_MAX_HIGH (EL_TLOG_TLM_PAGE_SIZE * EL_TLOG_TLM_PAGE_MAX_HIGH) |
event_logger.h の 96 行目に定義があります。
#define EL_TLOG_LOG_SIZE_MAX_LOW (EL_TLOG_TLM_PAGE_SIZE * EL_TLOG_TLM_PAGE_MAX_LOW) |
event_logger.h の 108 行目に定義があります。
#define EL_TLOG_LOG_SIZE_MAX_MIDDLE (EL_TLOG_TLM_PAGE_SIZE * EL_TLOG_TLM_PAGE_MAX_MIDDLE) |
event_logger.h の 101 行目に定義があります。
#define EL_TLOG_TLM_PAGE_MAX_HIGH (4) |
TLogで保存するログのページ数 (EL_ERROR_LEVEL_HIGH)
event_logger.h の 52 行目に定義があります。
#define EL_TLOG_TLM_PAGE_MAX_LOW (4) |
TLogで保存するログのページ数 (EL_ERROR_LEVEL_LOW)
event_logger.h の 54 行目に定義があります。
#define EL_TLOG_TLM_PAGE_MAX_MIDDLE (4) |
TLogで保存するログのページ数 (EL_ERROR_LEVEL_MIDDLE)
event_logger.h の 53 行目に定義があります。
#define EL_TLOG_TLM_PAGE_SIZE (28) |
TLogにて,テレメ1ページにおろせるlog数
event_logger.h の 51 行目に定義があります。
#define SIZE_OF_EL_CLOG_COUNTER_T (2) |
el_clog_counter_t の型サイズ.メモリインパクトがそれなりにあるので,可変に
event_logger.h の 74 行目に定義があります。
typedef uint16_t el_clog_counter_t |
event_logger.h の 180 行目に定義があります。
enum EL_ACK |
event_logger の汎用返り値
列挙値 | |
---|---|
EL_ACK_OK | 正常終了 |
EL_ACK_ILLEGAL_GROUP | 不正な EL_Event.group |
EL_ACK_ILLEGAL_ERROR_LEVEL | |
EL_ACK_DISABLE_LOGGING | ロギングが無効により,棄却 |
EL_ACK_TLOG_FULL | TLogの追記が不能のため,TLog記録ができず |
EL_ACK_OTHER_ERR | その他のエラー |
event_logger.h の 281 行目に定義があります。
enum EL_CORE_GROUP |
event_logger の Event Group の C2A core 使用分
列挙値 | |
---|---|
EL_CORE_GROUP_NULL | 初期値 or NULL.これは 0 であることを要求 (clear で memset 0x00 をするなら) |
EL_CORE_GROUP_EVENT_LOGGER | EL |
EL_CORE_GROUP_MODE_MANAGER | |
EL_CORE_GROUP_TASK_DISPATCHER | |
EL_CORE_GROUP_APP_MANAGER | |
EL_CORE_GROUP_TLCD_PAST_TIME | |
EL_CORE_GROUP_TLCD_DEPLOY_BLOCK | |
EL_CORE_GROUP_DCU | |
EL_CORE_GROUP_EVENT_HANDLER | EH (詳細は event_handler.h 参照) |
EL_CORE_GROUP_EH_MATCH_RULE | EH_Rule でマッチした(詳細は event_handler.h 参照) |
EL_CORE_GROUP_EH_RESPOND_WITH_HIGHER_LEVEL_RULE | EH_Rule でマッチしたが,そのルールで対応せずに,上位のルールで対応させた(詳細は event_handler.h 参照) |
EL_CORE_GROUP_COMMAND_ANALYZE | |
EL_CORE_GROUP_CDIS_INTERNAL_ERR | |
EL_CORE_GROUP_CDIS_EXEC_ERR_STS | |
EL_CORE_GROUP_CDIS_EXEC_ERR_CODE | |
EL_CORE_GROUP_EL_DROP_CLOG1 | EL CLogs で古いエラーを上書きするとき (group, err_level を保存) |
EL_CORE_GROUP_EL_DROP_CLOG2 | EL CLogs で古いエラーを上書きするとき (local, count を保存) |
EL_CORE_GROUP_MAX |
event_logger.h の 204 行目に定義があります。
enum EL_ERROR_LEVEL |
event_logger の エラーレベル
event_logger.h の 260 行目に定義があります。
enum EL_EVENT_LOCAL |
EL_CORE_GROUP_EVENT_LOGGER の local id
event_logger.h の 236 行目に定義があります。
CCP_CmdRet Cmd_EL_CLEAR_CLOG | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_CLEAR_LOG_ALL | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_CLEAR_LOG_BY_ERR_LEVEL | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_CLEAR_STATISTICS | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_CLEAR_TLOG | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_CLOG_SET_PAGE_FOR_TLM | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_DISABLE_LOGGING | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_DISABLE_LOGGING_ALL | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_DISABLE_TLOG_OVERWRITE | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_DISABLE_TLOG_OVERWRITE_ALL | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_ENABLE_LOGGING | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_ENABLE_LOGGING_ALL | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_ENABLE_TLOG_OVERWRITE | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_ENABLE_TLOG_OVERWRITE_ALL | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_INIT | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_INIT_LOGGING_SETTINGS | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_RECORD_EVENT | ( | const CommonCmdPacket * | packet | ) |
CCP_CmdRet Cmd_EL_TLOG_SET_PAGE_FOR_TLM | ( | const CommonCmdPacket * | packet | ) |
void EL_disable_all_logging | ( | void | ) |
event_logger の EL_Event.group の無効化
group | 無効化する EL_Event.group |
EL_ACK_OK | 正常終了 |
EL_ACK_ILLEGAL_GROUP | 不正な EL_Event.group |
event_logger.c の 614 行目に定義があります。
EL_ACK EL_disable_tlog_overwrite | ( | EL_ERROR_LEVEL | err_level | ) |
TLog のイベントテーブルの上書きを無効化
err_level | 無効化する EL_Event.err_level |
EL_ACK_OK | 正常終了 |
EL_ACK_ILLEGAL_ERROR_LEVEL | 不正な EL_Event.err_level |
event_logger.c の 678 行目に定義があります。
void EL_disable_tlog_overwrite_all | ( | void | ) |
TLog のイベントテーブルの上書きをすべて無効化
void |
event_logger.c の 700 行目に定義があります。
void EL_enable_all_logging | ( | void | ) |
event_logger の EL_Event.group の有効化
group | 有効化する EL_Event.group |
EL_ACK_OK | 正常終了 |
EL_ACK_ILLEGAL_GROUP | 不正な EL_Event.group |
event_logger.c の 594 行目に定義があります。
EL_ACK EL_enable_tlog_overwrite | ( | EL_ERROR_LEVEL | err_level | ) |
TLog のイベントテーブルの上書きを有効化
err_level | 有効化する EL_Event.err_level |
EL_ACK_OK | 正常終了 |
EL_ACK_ILLEGAL_ERROR_LEVEL | 不正な EL_Event.err_level |
event_logger.c の 668 行目に定義があります。
void EL_enable_tlog_overwrite_all | ( | void | ) |
TLog のイベントテーブルの上書きをすべて有効化
void |
event_logger.c の 688 行目に定義があります。
const EL_Event* EL_get_the_nth_tlog_from_the_latest | ( | EL_ERROR_LEVEL | err_level, |
uint16_t | n | ||
) |
TLog のイベントテーブルの最新からn番目のイベントを取得
err_level | 取得する EL_Event.err_level |
n | n番目(0のとき最新) |
event_logger.c の 721 行目に定義があります。
void EL_initialize | ( | void | ) |
int EL_is_logging_enable | ( | EL_GROUP | group | ) |
event_logger の EL_Event.group が有効か?
group | 無効化する EL_Event.group |
0 | 無効 or 無効な引数 |
1 | 有効 |
event_logger.c の 635 行目に定義があります。
int EL_is_tlog_overwrite_enable | ( | EL_ERROR_LEVEL | err_level | ) |
TLog のイベントテーブルの上書きが有効か?
err_level | 無効化する EL_Event.err_level |
0 | 無効 or 無効な引数 |
1 | 有効 |
event_logger.c の 712 行目に定義があります。
EL_ACK EL_record_event | ( | EL_GROUP | group, |
uint32_t | local, | ||
EL_ERROR_LEVEL | err_level, | ||
uint32_t | note | ||
) |
イベント (EL_Event) を記録
group | EL_Event.group |
local | EL_Event.local |
err_level | EL_Event.err_level (EL_ERROR_LEVEL_EL は禁止) |
note | EL_Event.note |
event_logger.c の 269 行目に定義があります。
|
extern |
event_logger.c の 155 行目に定義があります。