1 #pragma once
2 
3 #include <util/ffdc_file.hpp>
4 
5 #include <cstddef> // for size_t
6 #include <map>
7 #include <string>
8 #include <vector>
9 
10 namespace attn
11 {
12 
13 constexpr int maxTraceLen = 64; // characters
14 
15 constexpr auto pathLogging   = "/xyz/openbmc_project/logging";
16 constexpr auto levelPelError = "xyz.openbmc_project.Logging.Entry.Level.Error";
17 constexpr auto eventPelTerminate = "xyz.open_power.Attn.Error.Terminate";
18 
19 /** @brief Logging level types */
20 enum level
21 {
22     INFO,
23     ERROR
24 };
25 
26 /** @brief Logging event types */
27 enum class EventType
28 {
29     Checkstop     = 0,
30     Terminate     = 1,
31     Vital         = 2,
32     HwDiagsFail   = 3,
33     AttentionFail = 4
34 };
35 
36 /** @brief Maximum length of a single trace event message */
37 static const size_t trace_msg_max_len = 255;
38 
39 /** @brief Create trace message template */
40 template <level L>
41 void trace(const char* i_message);
42 
43 /** @brief Commit special attention TI event to log */
44 void eventTerminate(std::map<std::string, std::string> i_additionalData,
45                     char* i_tiInfoData);
46 
47 /** @brief Commit SBE vital event to log */
48 void eventVital();
49 
50 /** @brief Commit attention handler failure event to log */
51 void eventAttentionFail(int i_error);
52 
53 } // namespace attn
54