blob: 7e895554b4c3453503ffe9c9e0a496c5efce1cc4 [file] [log] [blame]
Ben Tynerb1ebfcb2020-05-08 18:52:48 -05001#pragma once
2
Ben Tyner1b1915e2020-10-23 15:13:38 -05003#include <util/ffdc_file.hpp>
4
Ben Tynerb1ebfcb2020-05-08 18:52:48 -05005#include <cstddef> // for size_t
6#include <map>
7#include <string>
Ben Tyner1b1915e2020-10-23 15:13:38 -05008#include <vector>
Ben Tynerb1ebfcb2020-05-08 18:52:48 -05009
10namespace attn
11{
12
Ben Tyner188f1092021-02-01 09:33:06 -060013constexpr auto pathLogging = "/xyz/openbmc_project/logging";
14constexpr auto levelPelError = "xyz.openbmc_project.Logging.Entry.Level.Error";
15constexpr auto eventPelTerminate = "xyz.open_power.Attn.Error.Terminate";
16
Ben Tynerb1ebfcb2020-05-08 18:52:48 -050017/** @brief Logging level types */
18enum level
19{
20 INFO
21};
22
23/** @brief Logging event types */
24enum class EventType
25{
26 Checkstop = 0,
27 Terminate = 1,
28 Vital = 2,
29 HwDiagsFail = 3,
30 AttentionFail = 4
31};
32
33/** @brief Maximum length of a single trace event message */
34static const size_t trace_msg_max_len = 255;
35
Ben Tynerf5210bb2021-01-05 12:58:10 -060036/** @brief Create trace message template */
Ben Tynerb1ebfcb2020-05-08 18:52:48 -050037template <level L>
38void trace(const char* i_message);
39
Ben Tynerf5210bb2021-01-05 12:58:10 -060040/** @brief Commit special attention TI event to log */
41void eventTerminate(std::map<std::string, std::string> i_additionalData,
42 char* i_tiInfoData);
Ben Tynerb1ebfcb2020-05-08 18:52:48 -050043
Ben Tynerf5210bb2021-01-05 12:58:10 -060044/** @brief Commit SBE vital event to log */
Ben Tynerb1ebfcb2020-05-08 18:52:48 -050045void eventVital();
46
Ben Tynerf5210bb2021-01-05 12:58:10 -060047/** @brief Commit attention handler failure event to log */
Ben Tynerb1ebfcb2020-05-08 18:52:48 -050048void eventAttentionFail(int i_error);
49
Ben Tynerb1ebfcb2020-05-08 18:52:48 -050050} // namespace attn