summaryrefslogtreecommitdiffstats
path: root/softoff/softoff.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'softoff/softoff.hpp')
-rw-r--r--softoff/softoff.hpp34
1 files changed, 30 insertions, 4 deletions
diff --git a/softoff/softoff.hpp b/softoff/softoff.hpp
index 93dfb26..dcb4b18 100644
--- a/softoff/softoff.hpp
+++ b/softoff/softoff.hpp
@@ -19,15 +19,41 @@ class SoftPowerOff : public sdbusplus::server::object::object<
public:
/** @brief Constructs SoftPowerOff object.
*
- * @param[in] bus - system dbus handler
- * @param[in] objPath - The Dbus path that hosts SoftPowerOff function
+ * @param[in] bus - system dbus handler
+ * @param[in] objPath - The Dbus path that hosts SoftPowerOff function
*/
SoftPowerOff(sdbusplus::bus::bus& bus,
const char* objPath) :
- sdbusplus::server::object::object<Base::SoftPowerOff>(bus, objPath)
+ sdbusplus::server::object::object<
+ Base::SoftPowerOff>(bus, objPath),
+ bus(bus)
{
- // Nothing to do here
+ // The whole purpose of this application is to send SMS_ATTN
+ // and watch for the soft power off to go through. We need the
+ // interface added signal emitted before we send SMS_ATN just to
+ // attend to lightning fast response from host
+ sendSMSAttn();
}
+
+ private:
+ /** @brief Sends SMS_ATN to host to initiate soft power off process.
+ *
+ * After sending the SMS_ATN, starts a watchdog timer for 30
+ * seconds and expects a initial response from the host.
+ * After receiving the initial response, starts another watchdog
+ * timer for 30 minutes to let host do a clean shutdown of
+ * partitions. When the second response is received from the
+ * host, it indicates that BMC can do a power off.
+ * If BMC fails to get any response, then a hard power off would
+ * be forced.
+ *
+ * @return - Does not return anything. Error will result in exception
+ * being thrown
+ */
+ void sendSMSAttn();
+
+ /* @brief sdbusplus handle */
+ sdbusplus::bus::bus& bus;
};
} // namespace ipmi
} // namespace phosphor
OpenPOWER on IntegriCloud