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