diff options
-rw-r--r-- | mainloop.cpp | 16 | ||||
-rw-r--r-- | mainloop.hpp | 4 | ||||
-rw-r--r-- | readd.cpp | 3 |
3 files changed, 17 insertions, 6 deletions
diff --git a/mainloop.cpp b/mainloop.cpp index bfc010e..221c8c9 100644 --- a/mainloop.cpp +++ b/mainloop.cpp @@ -20,6 +20,7 @@ #include <cstring> #include <string> #include <unordered_set> +#include <sstream> #include <phosphor-logging/elog-errors.hpp> #include "config.h" @@ -380,12 +381,14 @@ optional_ns::optional<ObjectStateData> MainLoop::getObject( MainLoop::MainLoop( sdbusplus::bus::bus&& bus, + const std::string& param, const std::string& path, const std::string& devPath, const char* prefix, const char* root) : _bus(std::move(bus)), _manager(_bus, root), + _pathParam(param), _hwmonRoot(), _instance(), _devPath(devPath), @@ -481,12 +484,13 @@ void MainLoop::init() } { - std::string busname{_prefix}; - busname.append(1, '-'); - busname.append( - std::to_string(std::hash<decltype(_devPath)>{}(_devPath))); - busname.append(".Hwmon1"); - _bus.request_name(busname.c_str()); + std::stringstream ss; + ss << _prefix + << "-" + << std::to_string(std::hash<std::string>{}(_devPath + _pathParam)) + << ".Hwmon1"; + + _bus.request_name(ss.str().c_str()); } { diff --git a/mainloop.hpp b/mainloop.hpp index fec576d..d420c28 100644 --- a/mainloop.hpp +++ b/mainloop.hpp @@ -41,6 +41,7 @@ class MainLoop /** @brief Constructor * * @param[in] bus - sdbusplus bus client connection. + * @param[in] param - the path parameter provided * @param[in] path - hwmon sysfs instance to manage * @param[in] devPath - physical device sysfs path. * @param[in] prefix - DBus busname prefix. @@ -54,6 +55,7 @@ class MainLoop */ MainLoop( sdbusplus::bus::bus&& bus, + const std::string& param, const std::string& path, const std::string& devPath, const char* prefix, @@ -84,6 +86,8 @@ class MainLoop sdbusplus::bus::bus _bus; /** @brief sdbusplus freedesktop.ObjectManager storage. */ sdbusplus::server::manager::manager _manager; + /** @brief the parameter path used. */ + std::string _pathParam; /** @brief hwmon sysfs class path. */ std::string _hwmonRoot; /** @brief hwmon sysfs instance. */ @@ -35,6 +35,7 @@ int main(int argc, char** argv) // Parse out path argument. auto path = (*options)["dev-path"]; + auto param = path; if (path != ArgumentParser::empty_string) { // This path may either be a device path (starts with @@ -52,6 +53,7 @@ int main(int argc, char** argv) if (path == ArgumentParser::empty_string) { path = (*options)["path"]; + param = path; } if (path == ArgumentParser::empty_string) @@ -71,6 +73,7 @@ int main(int argc, char** argv) MainLoop loop( sdbusplus::bus::new_default(), + param, path, calloutPath, BUSNAME_PREFIX, |