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