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