1*188f1096SBen Tyner #pragma once
2*188f1096SBen Tyner 
3*188f1096SBen Tyner #include <sdbusplus/bus.hpp>
4*188f1096SBen Tyner #include <util/ffdc_file.hpp>
5*188f1096SBen Tyner 
6*188f1096SBen Tyner #include <string>
7*188f1096SBen Tyner 
8*188f1096SBen Tyner namespace attn
9*188f1096SBen Tyner {
10*188f1096SBen Tyner 
11*188f1096SBen Tyner /**
12*188f1096SBen Tyner  * Create a PEL for the specified event type
13*188f1096SBen Tyner  *
14*188f1096SBen Tyner  * The additional data provided in the map will be placed in a user data
15*188f1096SBen Tyner  * section of the PEL and may additionally contain key words to trigger
16*188f1096SBen Tyner  * certain behaviors by the backend logging code. Each set of data described
17*188f1096SBen Tyner  * in the vector of ffdc data will be placed in additional user data
18*188f1096SBen Tyner  * sections.
19*188f1096SBen Tyner  *
20*188f1096SBen Tyner  * @param  i_event - the event type
21*188f1096SBen Tyner  * @param  i_additional - map of additional data
22*188f1096SBen Tyner  * @param  i_ffdc - vector of ffdc data
23*188f1096SBen Tyner  * @return Platform log id or 0 if error
24*188f1096SBen Tyner  */
25*188f1096SBen Tyner uint32_t createPel(const std::string& i_event,
26*188f1096SBen Tyner                    std::map<std::string, std::string>& i_additional,
27*188f1096SBen Tyner                    const std::vector<util::FFDCTuple>& i_ffdc);
28*188f1096SBen Tyner 
29*188f1096SBen Tyner /**
30*188f1096SBen Tyner  * Create a PEL from raw PEL data
31*188f1096SBen Tyner  *
32*188f1096SBen Tyner  * Create a PEL based on the pel defined in the data buffer specified.
33*188f1096SBen Tyner  *
34*188f1096SBen Tyner  * @param   i_buffer - buffer containing a raw PEL
35*188f1096SBen Tyner  */
36*188f1096SBen Tyner void createPelRaw(const std::vector<uint8_t>& i_buffer);
37*188f1096SBen Tyner 
38*188f1096SBen Tyner /**
39*188f1096SBen Tyner  * Get file descriptor of exisitng PEL
40*188f1096SBen Tyner  *
41*188f1096SBen Tyner  * The backend logging code will search for a PEL having the provided pel id
42*188f1096SBen Tyner  * and return a file descriptor of a file containing this pel in raw form.
43*188f1096SBen Tyner  *
44*188f1096SBen Tyner  * @param  i_pelid - the PEL ID
45*188f1096SBen Tyner  * @return file descriptor or -1 if error
46*188f1096SBen Tyner  */
47*188f1096SBen Tyner int getPel(const uint32_t i_pelId);
48*188f1096SBen Tyner 
49*188f1096SBen Tyner } // namespace attn
50