1 #pragma once 2 3 #include <sdbusplus/bus.hpp> 4 5 #include <cstdint> 6 #include <string> 7 8 namespace pid_control 9 { 10 11 struct SensorProperties 12 { 13 int64_t scale; 14 double value; 15 double min; 16 double max; 17 std::string unit; 18 }; 19 20 class DbusHelperInterface 21 { 22 public: 23 virtual ~DbusHelperInterface() = default; 24 25 /** @brief Get the service providing the interface for the path. 26 * 27 * @warning Throws exception on dbus failure. 28 */ 29 virtual std::string getService(sdbusplus::bus::bus& bus, 30 const std::string& intf, 31 const std::string& path) = 0; 32 33 /** @brief Get all Sensor.Value properties for a service and path. 34 * 35 * @param[in] bus - A bus to use for the call. 36 * @param[in] service - The service providing the interface. 37 * @param[in] path - The dbus path. 38 * @param[out] prop - A pointer to a properties struct to fill out. 39 * 40 * @warning Throws exception on dbus failure. 41 */ 42 virtual void getProperties(sdbusplus::bus::bus& bus, 43 const std::string& service, 44 const std::string& path, 45 struct SensorProperties* prop) = 0; 46 47 /** @brief Get Critical Threshold current assert status 48 * 49 * @param[in] bus - A bus to use for the call. 50 * @param[in] service - The service providing the interface. 51 * @param[in] path - The dbus path. 52 */ 53 virtual bool thresholdsAsserted(sdbusplus::bus::bus& bus, 54 const std::string& service, 55 const std::string& path) = 0; 56 }; 57 58 } // namespace pid_control 59