diff options
Diffstat (limited to 'physical.hpp')
-rw-r--r-- | physical.hpp | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/physical.hpp b/physical.hpp index f0b4048..0eac97b 100644 --- a/physical.hpp +++ b/physical.hpp @@ -20,10 +20,13 @@ class Physical : public sdbusplus::server::object::object< ~Physical() = default; Physical(const Physical&) = delete; Physical& operator=(const Physical&) = delete; - Physical(Physical&&) = delete; - Physical& operator=(Physical&&) = delete; + Physical(Physical&&) = default; + Physical& operator=(Physical&&) = default; - /** @brief Constructs LED object + /** @brief Constructs LED object. Argument 'true' says that we hold off + * from sending the signals since we need to do some house keeping and + * only when we finish that, we are considered active and can then + * broadcast the signal. * * @param[in] bus - system dbus handler * @param[in] objPath - The Dbus path that hosts physical LED @@ -35,18 +38,43 @@ class Physical : public sdbusplus::server::object::object< sdbusplus::server::object::object< sdbusplus::xyz::openbmc_project::Led::server::Physical>( - bus, objPath.c_str()), + bus, objPath.c_str(), true), path(ledPath) { - // Nothing to do here + // Suppose this is getting launched as part of BMC reboot, then we + // need to save what the micro-controller currently has. + setInitialState(); + + // We are now ready. + emit_object_added(); } + /** @brief Overloaded State Property Setter function + * + * @param[in] value - One of OFF / ON / BLINK + * @return - Success or exception thrown + */ + Action state(Action value) override; + private: /** @brief File system location where this LED is exposed * Typically /sys/class/leds/<Led-Name> */ std::string path; + + /** @brief Applies the user triggered action on the LED + * by writing to sysfs + * + * @return None + */ + void driveLED(void); + + /** @brief reads sysfs and then setsup the parameteres accordingly + * + * @return Status or exception thrown + */ + void setInitialState(void); }; } // namespace led -} // namespace phosphor +} |