pseq: Begin power control implementation

Fill in the power control main method. Introduce the power control
class and header file. Introduce the power good polling loop. Update
meson file to support.

Signed-off-by: Jim Wright <jlwright@us.ibm.com>
Change-Id: I9a5f9d71a65fa4916c701e3aad334be2989b1b16
diff --git a/phosphor-power-sequencer/src/power_control.cpp b/phosphor-power-sequencer/src/power_control.cpp
index 698b0d0..d5810b1 100644
--- a/phosphor-power-sequencer/src/power_control.cpp
+++ b/phosphor-power-sequencer/src/power_control.cpp
@@ -14,7 +14,35 @@
  * limitations under the License.
  */
 
-int main()
+#include "power_control.hpp"
+
+#include "types.hpp"
+
+#include <phosphor-logging/log.hpp>
+#include <sdbusplus/bus.hpp>
+#include <sdeventplus/event.hpp>
+#include <sdeventplus/utility/timer.hpp>
+
+#include <chrono>
+#include <exception>
+
+using namespace phosphor::logging;
+
+namespace phosphor::power::sequencer
 {
-    return 0;
+
+PowerControl::PowerControl(sdbusplus::bus::bus& bus,
+                           const sdeventplus::Event& event) :
+    bus{bus},
+    eventLoop{event}, timer{event, std::bind(&PowerControl::pollPgood, this),
+                            std::chrono::milliseconds(pollInterval)}
+{
+    // Obtain dbus service name
+    bus.request_name(POWER_IFACE);
 }
+
+void PowerControl::pollPgood()
+{
+}
+
+} // namespace phosphor::power::sequencer