blob: 56e8b2fa70f35d5bd2aac415517c5ae877baf592 [file] [log] [blame]
#pragma once
#include "sensor.hpp"
#include <boost/asio/deadline_timer.hpp>
#include <boost/container/flat_map.hpp>
#include <chrono>
#include <limits>
#include <vector>
enum class IpmbType
{
meSensor,
PXE1410CVR,
IR38363VR,
mpsVR
};
struct IpmbSensor : public Sensor
{
IpmbSensor(std::shared_ptr<sdbusplus::asio::connection>& conn,
boost::asio::io_service& io, const std::string& name,
const std::string& sensorConfiguration,
sdbusplus::asio::object_server& objectServer,
std::vector<thresholds::Threshold>&& thresholds,
uint8_t deviceAddress);
~IpmbSensor();
void checkThresholds(void) override;
void read(void);
void init(void);
void loadDefaults(void);
void runInitCmd(void);
IpmbType type;
uint8_t commandAddress;
uint8_t netfn;
uint8_t command;
uint8_t deviceAddress;
std::vector<uint8_t> commandData;
std::optional<uint8_t> initCommand;
std::vector<uint8_t> initData;
// to date all ipmb sensors are power on only
PowerState readState;
private:
sdbusplus::asio::object_server& objectServer;
std::shared_ptr<sdbusplus::asio::connection> dbusConnection;
boost::asio::deadline_timer waitTimer;
};