#pragma once #include #include #include #include #include #include #include "sensors/sensor.hpp" /* * The SensorManager holds all sensors across all zones. */ class SensorManager { public: SensorManager(sdbusplus::bus::bus&& pass, sdbusplus::bus::bus&& host) : _passiveListeningBus(std::move(pass)), _hostSensorBus(std::move(host)) { // manager gets its interface from the bus. :D sdbusplus::server::manager::manager(_hostSensorBus, SensorRoot); } SensorManager() : SensorManager(std::move(sdbusplus::bus::new_default()), std::move(sdbusplus::bus::new_default())) { } ~SensorManager() = default; SensorManager(const SensorManager&) = delete; SensorManager& operator=(const SensorManager&) = delete; SensorManager(SensorManager&&) = default; SensorManager& operator=(SensorManager&&) = default; /* * Add a Sensor to the Manager. */ void addSensor( std::string type, std::string name, std::unique_ptr sensor); // TODO(venture): Should implement read/write by name. Sensor* getSensor(const std::string& name) const { return _sensorMap.at(name).get(); } sdbusplus::bus::bus& getPassiveBus(void) { return _passiveListeningBus; } sdbusplus::bus::bus& getHostBus(void) { return _hostSensorBus; } private: std::map> _sensorMap; std::map> _sensorTypeList; sdbusplus::bus::bus _passiveListeningBus; sdbusplus::bus::bus _hostSensorBus; static constexpr auto SensorRoot = "/xyz/openbmc_project/extsensors"; };