replace static converting with rounding

Issue: When the users request to get the sensor thresholds via "ipmitool
sensor get <sensor_name>" command, sometimes the value is not correct.
E.g: The real sensor threshold is 2.01, the "scale" = 0, "exponentR"=-3,
"coefficientM" = 10. After calculating, the ipmid should return 201 to
ipmitool, but the actual return value is 200. Ipmitool displays the
value of the threshold is 2.00.

Root cause: The "float point" can not present exactly the "double" value
in somecase. Therefore, after calculating, the value of sensor
thresholds is incorrect when convert from double to uint8_t.

Solution: Replace static converting with rounding.

Tested:
   1. Check the result of the threshold whose value is 2.01
      ipmitool sensor get <2.01_Sensor_name>
   2. The threshold value is 2.01

Signed-off-by: Thang Tran <thuutran@amperecomputing.com>
Change-Id: I7f3e72640beb76eda9370f60e32f42d2b2c1fbda
1 file changed
tree: bd6e4e0b69ea6b6ff5436cadbef51f20060d03ea
  1. app/
  2. dbus-sdr/
  3. docs/
  4. include/
  5. libipmid/
  6. libipmid-host/
  7. scripts/
  8. softoff/
  9. subprojects/
  10. test/
  11. user_channel/
  12. xyz/
  13. .build.sh
  14. .clang-format
  15. .gitignore
  16. .shellcheck
  17. .travis.yml
  18. apphandler.cpp
  19. apphandler.hpp
  20. chassishandler.cpp
  21. chassishandler.hpp
  22. dcmihandler.cpp
  23. dcmihandler.hpp
  24. elog-errors.hpp
  25. entity_map_json.cpp
  26. entity_map_json.hpp
  27. error-HostEvent.hpp
  28. fruread.hpp
  29. generate_whitelist.sh
  30. generate_whitelist_create.sh
  31. globalhandler.cpp
  32. globalhandler.hpp
  33. groupext.cpp
  34. host-cmd-manager.cpp
  35. host-cmd-manager.hpp
  36. host-interface.cpp
  37. host-interface.hpp
  38. host-ipmid-whitelist.conf
  39. ipmi_fru_info_area.cpp
  40. ipmi_fru_info_area.hpp
  41. ipmid-new.cpp
  42. ipmisensor.cpp
  43. ipmiwhitelist.hpp
  44. LICENSE
  45. meson.build
  46. meson_options.txt
  47. OWNERS
  48. read_fru_data.cpp
  49. read_fru_data.hpp
  50. README.md
  51. selutility.cpp
  52. selutility.hpp
  53. sensordatahandler.cpp
  54. sensordatahandler.hpp
  55. sensorhandler.cpp
  56. sensorhandler.hpp
  57. settings.cpp
  58. settings.hpp
  59. storageaddsel.cpp
  60. storageaddsel.hpp
  61. storagehandler.cpp
  62. storagehandler.hpp
  63. sys_info_param.cpp
  64. sys_info_param.hpp
  65. systemintfcmds.cpp
  66. systemintfcmds.hpp
  67. testaddsel.cpp
  68. testit.cpp
  69. transporthandler.cpp
  70. transporthandler.hpp
  71. whitelist-filter.cpp
README.md

Compile ipmid with default options:

meson builddir
ninja -C builddir

Compile ipmid with yocto defaults:

meson builddir -Dbuildtype=minsize -Db_lto=true -Dtests=disabled
ninja -C builddir

If any of the dependencies are not found on the host system during configuration, meson automatically gets them via its wrap dependencies mentioned in ipmid/subprojects.

Enable/Disable meson wrap feature

meson builddir -Dwrap_mode=nofallback
ninja -C builddir

Enable debug traces

meson builddir -Dbuildtype=debug
ninja -C builddir

Generate test coverage report:

meson builddir -Db_coverage=true -Dtests=enabled
ninja -C builddir test
ninja -C builddir coverage