summaryrefslogtreecommitdiffstats
path: root/physical.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'physical.hpp')
-rw-r--r--physical.hpp40
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
+}
OpenPOWER on IntegriCloud