1 #pragma once
2 
3 #include <sdbusplus/bus.hpp>
4 #include <util/ffdc_file.hpp>
5 
6 #include <string>
7 
8 namespace attn
9 {
10 
11 enum class HostRunningState
12 {
13     Unknown,
14     NotStarted,
15     Started
16 };
17 
18 /**
19  * Create a PEL for the specified event type
20  *
21  * The additional data provided in the map will be placed in a user data
22  * section of the PEL and may additionally contain key words to trigger
23  * certain behaviors by the backend logging code. Each set of data described
24  * in the vector of ffdc data will be placed in additional user data
25  * sections.
26  *
27  * @param  i_event - the event type
28  * @param  i_additional - map of additional data
29  * @param  i_ffdc - vector of ffdc data
30  * @return Platform log id or 0 if error
31  */
32 uint32_t createPel(const std::string& i_event,
33                    std::map<std::string, std::string>& i_additional,
34                    const std::vector<util::FFDCTuple>& i_ffdc);
35 
36 /**
37  * Create a PEL from raw PEL data
38  *
39  * Create a PEL based on the pel defined in the data buffer specified.
40  *
41  * @param   i_buffer - buffer containing a raw PEL
42  */
43 void createPelRaw(const std::vector<uint8_t>& i_buffer);
44 
45 /**
46  * Get file descriptor of exisitng PEL
47  *
48  * The backend logging code will search for a PEL having the provided pel id
49  * and return a file descriptor of a file containing this pel in raw form.
50  *
51  * @param  i_pelid - the PEL ID
52  * @return file descriptor or -1 if error
53  */
54 int getPel(const uint32_t i_pelId);
55 
56 /**
57  * Get the host running state
58  *
59  * Use host boot progress to determine if a host has been started. If host
60  * boot progress can not be determined then host state will be unknown.
61  *
62  * @return HostType == "Unknown", "Started or "NotStarted"
63  */
64 HostRunningState hostRunningState();
65 
66 } // namespace attn
67