add handler logic to handle SysPsuHardReset

Add handler logic to handler for SysPsuHardReset such that it splits the
true IPMI processing from the business logic.

Tested: Only ran unit-tests (added new ones).
Change-Id: Id5dae85cbc54db7dee3cb5e62ed80c77ff3d5719
Signed-off-by: Patrick Venture <venture@google.com>
diff --git a/psu.hpp b/psu.hpp
index bbbc963..657b65c 100644
--- a/psu.hpp
+++ b/psu.hpp
@@ -1,5 +1,7 @@
 #pragma once
 
+#include "handler.hpp"
+
 #include <ipmid/api.h>
 
 namespace google
@@ -7,9 +9,17 @@
 namespace ipmi
 {
 
+struct PsuResetRequest
+{
+    uint8_t subcommand;
+    // Delay in seconds.
+    uint32_t delay;
+} __attribute__((packed));
+
 // Set a time-delayed PSU hard reset.
 ipmi_ret_t PsuHardReset(const uint8_t* reqBuf, uint8_t* replyBuf,
-                        size_t* dataLen);
+                        size_t* dataLen,
+                        const HandlerInterface* handler = &handlerImpl);
 
 } // namespace ipmi
 } // namespace google