summaryrefslogtreecommitdiffstats
path: root/presence/tach_detect.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'presence/tach_detect.cpp')
-rw-r--r--presence/tach_detect.cpp73
1 files changed, 10 insertions, 63 deletions
diff --git a/presence/tach_detect.cpp b/presence/tach_detect.cpp
index 6ec5a5c..da0f40f 100644
--- a/presence/tach_detect.cpp
+++ b/presence/tach_detect.cpp
@@ -13,79 +13,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include <phosphor-logging/log.hpp>
-#include <vector>
-#include "fan_enclosure.hpp"
-#include "fan_detect_defs.hpp"
#include "generated.hpp"
#include "sdbusplus.hpp"
-#include "tach_sensor.hpp"
+#include "sdevent.hpp"
int main(void)
{
using namespace phosphor::fan;
- using namespace std::literals::string_literals;
- using namespace phosphor::logging;
- std::vector<std::unique_ptr<phosphor::fan::presence::FanEnclosure>> fans;
+ auto& event = util::SDEvent::getEvent();
+ event.attach(util::SDBusPlus::getBus());
- for (auto const& detectMap: fanDetectMap)
+ for (auto& p: presence::ConfigPolicy::get())
{
- if (detectMap.first == "tach")
- {
- for (auto const& fanProp: detectMap.second)
- {
- auto path = "/xyz/openbmc_project/inventory"s +
- std::get<0>(fanProp);
-
- auto state = presence::UNKNOWN;
- try
- {
- auto boolstate = util::SDBusPlus::getProperty<bool>(
- path,
- "xyz.openbmc_project.Inventory.Item"s,
- "Present"s);
- state = boolstate ?
- presence::PRESENT : presence::NOT_PRESENT;
- }
- catch (const std::exception& err)
- {
- log<level::INFO>(err.what());
- }
-
- auto fan = std::make_unique<
- phosphor::fan::presence::FanEnclosure>(fanProp,
- state);
- for (auto const &fanSensor: std::get<2>(fanProp))
- {
- auto initialSpeed = static_cast<int64_t>(0);
- auto sensorPath =
- "/xyz/openbmc_project/sensors/fan_tach/"s +
- fanSensor;
- initialSpeed = util::SDBusPlus::getProperty<int64_t>(
- sensorPath,
- "xyz.openbmc_project.Sensor.Value"s,
- "Value"s);
-
- auto sensor = std::make_unique<
- phosphor::fan::presence::TachSensor>(fanSensor,
- *fan,
- initialSpeed != 0);
- fan->addSensor(std::move(sensor));
- }
-
- fan->updInventory();
- fans.push_back(std::move(fan));
- }
- }
+ p->monitor();
}
- while (true)
- {
- // Respond to dbus signals
- util::SDBusPlus::getBus().process_discard();
- util::SDBusPlus::getBus().wait();
- }
- return 0;
+ event.loop();
+
+ // The loop should never exit. Exit with
+ // non zero status just in case.
+ return 1;
}
OpenPOWER on IntegriCloud