blob: 83ff0fd59f43c113320c6ae0817a5a40f048bb74 [file] [log] [blame]
Tom Joseph6b7a1432017-05-19 10:43:36 +05301#pragma once
2
3#include <cstdint>
4#include <sdbusplus/server.hpp>
5#include "types.hpp"
6
7namespace ipmi
8{
9
10namespace sel
11{
12
13static constexpr auto mapperBusName = "xyz.openbmc_project.ObjectMapper";
14static constexpr auto mapperObjPath = "/xyz/openbmc_project/object_mapper";
15static constexpr auto mapperIntf = "xyz.openbmc_project.ObjectMapper";
16
17static constexpr auto logBasePath = "/xyz/openbmc_project/logging/entry";
18static constexpr auto logEntryIntf = "xyz.openbmc_project.Logging.Entry";
19static constexpr auto logDeleteIntf = "xyz.openbmc_project.Object.Delete";
20
21static constexpr auto propIntf = "org.freedesktop.DBus.Properties";
22
23using PropertyType = sdbusplus::message::variant<bool, uint32_t, uint64_t,
24 std::string, std::vector<std::string>>;
25
26/** @struct GetSELEntryResponse
27 *
28 * IPMI payload for Get SEL Entry command response.
29 */
30struct GetSELEntryResponse
31{
32 uint16_t nextRecordID; //!< Next RecordID.
33 uint16_t recordID; //!< Record ID.
34 uint8_t recordType; //!< Record Type.
35 uint32_t timeStamp; //!< Timestamp.
36 uint16_t generatorID; //!< Generator ID.
37 uint8_t eventMsgRevision; //!< Event Message Revision.
38 uint8_t sensorType; //!< Sensor Type.
39 uint8_t sensorNum; //!< Sensor Number.
40 uint8_t eventType; //!< Event Dir | Event Type.
41 uint8_t eventData1; //!< Event Data 1.
42 uint8_t eventData2; //!< Event Data 2.
43 uint8_t eventData3; //!< Event Data 3.
44} __attribute__((packed));
45
46namespace internal
47{
48
49/** @brief Convert logging entry to SEL event record
50 *
51 * @param[in] objPath - DBUS object path of the logging entry.
52 * @param[in] iter - Iterator to the sensor data corresponding to the logging
53 * entry
54 *
55 * @return On success return the SEL event record, throw an exception in case
56 * of failure.
57 */
58GetSELEntryResponse prepareSELEntry(
59 const std::string& objPath,
60 ipmi::sensor::InvObjectIDMap::const_iterator iter);
61
62} //internal
63
64} // namespace sel
65
66} // namespace ipmi