Add error_monitors with a sample signal

This file can be overridden to include the various signals that
need to be monitored for a platform.

A sample of an SMI monitor is included.

Change-Id: I9ba4e31b4e7fd7955737887c5920218a0301c50c
Signed-off-by: Jason M. Bills <jason.m.bills@intel.com>
diff --git a/src/host_error_monitor.cpp b/src/host_error_monitor.cpp
index 7937d9b..4f88b88 100644
--- a/src/host_error_monitor.cpp
+++ b/src/host_error_monitor.cpp
@@ -19,6 +19,7 @@
 #include <boost/asio/io_service.hpp>
 #include <boost/asio/posix/stream_descriptor.hpp>
 #include <boost/asio/steady_timer.hpp>
+#include <error_monitors.hpp>
 #include <gpiod.hpp>
 #include <host_error_monitor.hpp>
 #include <sdbusplus/asio/object_server.hpp>
@@ -252,8 +253,9 @@
 }
 
 static void initializeErrorState();
-static void initializeHostState()
+static void init()
 {
+    // Get the current host state to prepare to start the signal monitors
     conn->async_method_call(
         [](boost::system::error_code ec,
            const std::variant<std::string>& property) {
@@ -273,6 +275,12 @@
             {
                 initializeErrorState();
             }
+
+            // Now we have the host state, start the signal monitors
+            if (!error_monitors::startMonitors(io, conn))
+            {
+                throw std::runtime_error("Failed to start signal monitors");
+            }
         },
         "xyz.openbmc_project.State.Host", "/xyz/openbmc_project/state/host0",
         "org.freedesktop.DBus.Properties", "Get",
@@ -328,6 +336,7 @@
             {
                 // Handle any initial errors when the host turns on
                 initializeErrorState();
+                error_monitors::sendHostOn();
             }
         });
 }
@@ -1594,9 +1603,6 @@
         return -1;
     }
 
-    // Initialize the host state
-    host_error_monitor::initializeHostState();
-
     // Request CPU_CATERR GPIO events
     if (!host_error_monitor::requestGPIOEvents(
             "CPU_CATERR", host_error_monitor::caterrHandler,
@@ -1750,6 +1756,9 @@
         return -1;
     }
 
+    // Initialize the signal monitors
+    host_error_monitor::init();
+
     host_error_monitor::io.run();
 
     return 0;