sensor: accept single sensor threshold

Currently, sensors require a couple of LC/UC and/or LNC/UNC. However, in
real hardware design, there might be only one of LC, UC, LNC or UNC
available.
This change allows to specify only single sensor threshold.

Tested:
1. Specify only UC threshold for PSU0_Temp sensor
2. root@mtjade:~# ipmitool sensor get PSU0_TEMP
   Locating sensor record...
   Sensor ID              : PSU0_TEMP (0xf3)
    Entity ID             : 30.58
    Sensor Type (Threshold)  : Temperature
    Sensor Reading        : 26 (+/- 0) degrees C
    Status                : ok
    Lower Non-Recoverable : na
    Lower Critical        : na
    Lower Non-Critical    : na
    Upper Non-Critical    : na
    Upper Critical        : 64.000
    Upper Non-Recoverable : na
    Positive Hysteresis   : Unspecified
    Negative Hysteresis   : Unspecified

Signed-off-by: Thang Q. Nguyen <thang@os.amperecomputing.com>
Change-Id: I70fa136c6d96a6edc2ed1a6a65eee85b6ff62e39
1 file changed
tree: 8d29817333f3120a9b455d4511ea13c72e5415d3
  1. msl/
  2. subprojects/
  3. test/
  4. tools/
  5. .clang-format
  6. .gitignore
  7. .lcovrc
  8. .shellcheck
  9. 70-hwmon.rules
  10. 70-iio.rules
  11. average.cpp
  12. average.hpp
  13. env.cpp
  14. env.hpp
  15. fan_pwm.cpp
  16. fan_pwm.hpp
  17. fan_speed.cpp
  18. fan_speed.hpp
  19. gpio_handle.cpp
  20. gpio_handle.hpp
  21. hwmon.cpp
  22. hwmon.hpp
  23. hwmonio.cpp
  24. hwmonio.hpp
  25. interface.hpp
  26. LICENSE
  27. mainloop.cpp
  28. mainloop.hpp
  29. MAINTAINERS
  30. meson.build
  31. meson_options.txt
  32. phosphor-hwmon.conf
  33. readd.cpp
  34. README.iio.md
  35. README.md
  36. sensor.cpp
  37. sensor.hpp
  38. sensorset.cpp
  39. sensorset.hpp
  40. start_hwmon.sh
  41. sysfs.cpp
  42. sysfs.hpp
  43. targets.hpp
  44. thresholds.hpp
  45. types.hpp
  46. util.hpp
  47. xyz.openbmc_project.Hwmon@.service
README.md

Exposes generic hwmon entries as DBus objects. More information can be found at Sensor Architecture

To Build

To build this package, do the following steps:

    1. meson build
    2. ninja -C build

To clean the repository run `rm -rf build`.

D-Bus bus names

To enable the use of Linux features like cgroups prioritization and
udev/systemd control, one instance of phosphor-hwmon is intended to
be run per hwmon sysfs class instance.

This requires an algorithm for selecting a stable, well-known D-Bus busname.

The algorithm is <PREFIX>-<ID>.Hwmon<N> where PREFIX is an autoconf
configurable prefix (BUSNAME_PREFIX, xyz.openbmc_project by default),
ID is either a std::hash of the /sys/devices path backing the hwmon class
instance or provided suffix value from the command line, and N is
the implemented phosphor-hwmon D-Bus API version.