1188f1096SBen Tyner #pragma once
2188f1096SBen Tyner 
3188f1096SBen Tyner #include <sdbusplus/bus.hpp>
4188f1096SBen Tyner #include <util/ffdc_file.hpp>
5188f1096SBen Tyner 
6188f1096SBen Tyner #include <string>
7188f1096SBen Tyner 
8188f1096SBen Tyner namespace attn
9188f1096SBen Tyner {
10188f1096SBen Tyner 
114bbcb38fSBen Tyner enum class HostRunningState
124bbcb38fSBen Tyner {
134bbcb38fSBen Tyner     Unknown,
144bbcb38fSBen Tyner     NotStarted,
154bbcb38fSBen Tyner     Started
164bbcb38fSBen Tyner };
174bbcb38fSBen Tyner 
18188f1096SBen Tyner /**
19*5c5db65aSBen Tyner  * Create a dbus method
20*5c5db65aSBen Tyner  *
21*5c5db65aSBen Tyner  * Find the dbus service associated with the dbus object path and create
22*5c5db65aSBen Tyner  * a dbus method for calling the specified dbus interface and function.
23*5c5db65aSBen Tyner  *
24*5c5db65aSBen Tyner  * @param i_path - dbus object path
25*5c5db65aSBen Tyner  * @param i_interface - dbus method interface
26*5c5db65aSBen Tyner  * @param i_function - dbus interface function
27*5c5db65aSBen Tyner  * @param o_method - method that is created
28*5c5db65aSBen Tyner  * @param i_extended - optional for extended methods
29*5c5db65aSBen Tyner  * @return non-zero if error
30*5c5db65aSBen Tyner  *
31*5c5db65aSBen Tyner  **/
32*5c5db65aSBen Tyner int dbusMethod(const std::string& i_path, const std::string& i_interface,
33*5c5db65aSBen Tyner                const std::string& i_function,
34*5c5db65aSBen Tyner                sdbusplus::message::message& o_method,
35*5c5db65aSBen Tyner                const std::string& i_extended = "");
36*5c5db65aSBen Tyner 
37*5c5db65aSBen Tyner /**
38188f1096SBen Tyner  * Create a PEL for the specified event type
39188f1096SBen Tyner  *
40188f1096SBen Tyner  * The additional data provided in the map will be placed in a user data
41188f1096SBen Tyner  * section of the PEL and may additionally contain key words to trigger
42188f1096SBen Tyner  * certain behaviors by the backend logging code. Each set of data described
43188f1096SBen Tyner  * in the vector of ffdc data will be placed in additional user data
44188f1096SBen Tyner  * sections.
45188f1096SBen Tyner  *
46188f1096SBen Tyner  * @param  i_event - the event type
47188f1096SBen Tyner  * @param  i_additional - map of additional data
48188f1096SBen Tyner  * @param  i_ffdc - vector of ffdc data
49188f1096SBen Tyner  * @return Platform log id or 0 if error
50188f1096SBen Tyner  */
51188f1096SBen Tyner uint32_t createPel(const std::string& i_event,
52188f1096SBen Tyner                    std::map<std::string, std::string>& i_additional,
53188f1096SBen Tyner                    const std::vector<util::FFDCTuple>& i_ffdc);
54188f1096SBen Tyner 
55188f1096SBen Tyner /**
56188f1096SBen Tyner  * Create a PEL from raw PEL data
57188f1096SBen Tyner  *
58188f1096SBen Tyner  * Create a PEL based on the pel defined in the data buffer specified.
59188f1096SBen Tyner  *
60188f1096SBen Tyner  * @param   i_buffer - buffer containing a raw PEL
61188f1096SBen Tyner  */
62188f1096SBen Tyner void createPelRaw(const std::vector<uint8_t>& i_buffer);
63188f1096SBen Tyner 
64188f1096SBen Tyner /**
65188f1096SBen Tyner  * Get file descriptor of exisitng PEL
66188f1096SBen Tyner  *
67188f1096SBen Tyner  * The backend logging code will search for a PEL having the provided pel id
68188f1096SBen Tyner  * and return a file descriptor of a file containing this pel in raw form.
69188f1096SBen Tyner  *
70188f1096SBen Tyner  * @param  i_pelid - the PEL ID
71188f1096SBen Tyner  * @return file descriptor or -1 if error
72188f1096SBen Tyner  */
73188f1096SBen Tyner int getPel(const uint32_t i_pelId);
74188f1096SBen Tyner 
754bbcb38fSBen Tyner /**
764bbcb38fSBen Tyner  * Get the host running state
774bbcb38fSBen Tyner  *
784bbcb38fSBen Tyner  * Use host boot progress to determine if a host has been started. If host
794bbcb38fSBen Tyner  * boot progress can not be determined then host state will be unknown.
804bbcb38fSBen Tyner  *
814bbcb38fSBen Tyner  * @return HostType == "Unknown", "Started or "NotStarted"
824bbcb38fSBen Tyner  */
834bbcb38fSBen Tyner HostRunningState hostRunningState();
844bbcb38fSBen Tyner 
85188f1096SBen Tyner } // namespace attn
86