MCUTempSensor: Fix PDB temparature reading show nan
Actually, i2c_smbus_read_word_data() return value is
not mapped correctly. So, fixed i2c_smbus_read_word_data()
return type to signed int32 from int16_t.
Tested: Verified PDB temperature reading is getting
reported correctly via D-Bus.
Change-Id: I0a00d5b20c0576abe5635e96b3afadc572241f0a
Signed-off-by: Saitwal, Meghan <meghan.saitwal@intel.com>
diff --git a/src/MCUTempSensor.cpp b/src/MCUTempSensor.cpp
index 304034d..dc7782c 100644
--- a/src/MCUTempSensor.cpp
+++ b/src/MCUTempSensor.cpp
@@ -100,7 +100,7 @@
thresholds::checkThresholds(this);
}
-int MCUTempSensor::getMCURegsInfoWord(uint8_t regs, int16_t* pu16data) const
+int MCUTempSensor::getMCURegsInfoWord(uint8_t regs, int32_t* pu32data) const
{
std::string i2cBus = "/dev/i2c-" + std::to_string(busId);
@@ -137,10 +137,10 @@
return -1;
}
- *pu16data = i2c_smbus_read_word_data(fd, regs);
+ *pu32data = i2c_smbus_read_word_data(fd, regs);
close(fd);
- if (*pu16data < 0)
+ if (*pu32data < 0)
{
std::cerr << " read word data failed at " << static_cast<int>(regs)
<< "\n";
@@ -166,7 +166,7 @@
std::cerr << "timer error\n";
return;
}
- int16_t temp = 0;
+ int32_t temp = 0;
int ret = getMCURegsInfoWord(tempReg, &temp);
if (ret >= 0)
{
diff --git a/src/MCUTempSensor.hpp b/src/MCUTempSensor.hpp
index 639e24e..4007546 100644
--- a/src/MCUTempSensor.hpp
+++ b/src/MCUTempSensor.hpp
@@ -28,7 +28,7 @@
uint8_t tempReg;
private:
- int getMCURegsInfoWord(uint8_t regs, int16_t* pu16data) const;
+ int getMCURegsInfoWord(uint8_t regs, int32_t* pu32data) const;
sdbusplus::asio::object_server& objectServer;
boost::asio::steady_timer waitTimer;
};