xref: /openbmc/dbus-sensors/src/mcu/MCUTempSensor.hpp (revision 18b6186e531ae37dd22b634c6530f793528473f4)
1 #pragma once
2 #include "Thresholds.hpp"
3 
4 #include <boost/asio/io_context.hpp>
5 #include <boost/asio/steady_timer.hpp>
6 #include <sdbusplus/asio/connection.hpp>
7 #include <sdbusplus/asio/object_server.hpp>
8 #include <sensor.hpp>
9 
10 #include <cstdint>
11 #include <memory>
12 #include <string>
13 #include <vector>
14 
15 struct MCUTempSensor : public Sensor
16 {
17     MCUTempSensor(std::shared_ptr<sdbusplus::asio::connection>& conn,
18                   boost::asio::io_context& io, const std::string& name,
19                   const std::string& sensorConfiguration,
20                   sdbusplus::asio::object_server& objectServer,
21                   std::vector<thresholds::Threshold>&& thresholdData,
22                   uint8_t busId, uint8_t mcuAddress, uint8_t tempReg);
23     ~MCUTempSensor() override;
24 
25     void checkThresholds() override;
26     void read();
27     void init();
28 
29     uint8_t busId;
30     uint8_t mcuAddress;
31     uint8_t tempReg;
32 
33   private:
34     int getMCURegsInfoWord(uint8_t regs, int32_t* pu32data) const;
35     sdbusplus::asio::object_server& objectServer;
36     boost::asio::steady_timer waitTimer;
37 };
38