Handle power state changes

We need to check if power is on as the hsbp goes away
during power off. This copies the power logic from
dbus-sensors and uses it to avoid scanning when power
is off.

Tested: Warnings go away

Change-Id: Ie949e7a98eb70592318710f3eecdfe766f71f110
Signed-off-by: James Feist <james.feist@linux.intel.com>
diff --git a/hsbp-manager/src/hsbp_manager.cpp b/hsbp-manager/src/hsbp_manager.cpp
index 08874e9..83ebdf3 100644
--- a/hsbp-manager/src/hsbp_manager.cpp
+++ b/hsbp-manager/src/hsbp_manager.cpp
@@ -95,10 +95,18 @@
                 {
                     return 1;
                 }
+
+                if (!isPowerOn())
+                {
+                    std::cerr << "Can't change blink state when power is off\n";
+                    throw std::runtime_error(
+                        "Can't change blink state when power is off");
+                }
                 BlinkPattern pattern =
                     req ? BlinkPattern::error : BlinkPattern::terminate;
                 if (!self->set(pattern))
                 {
+                    std::cerr << "Can't change blink pattern\n";
                     throw std::runtime_error("Cannot set blink pattern");
                 }
                 val = req;
@@ -281,6 +289,13 @@
                 std::cerr << "timer error " << ec.message() << "\n";
                 return;
             }
+
+            if (!isPowerOn())
+            {
+                // can't access hsbp when power is off
+                runTimer();
+                return;
+            }
             uint8_t curPresence = 0;
             uint8_t curIFDET = 0;
             uint8_t curFailed = 0;
@@ -857,5 +872,6 @@
         });
 
     io.post([]() { populate(); });
+    setupPowerMatch(conn);
     io.run();
 }