diff options
Diffstat (limited to 'hsbp-manager/src/hsbp_manager.cpp')
-rw-r--r-- | hsbp-manager/src/hsbp_manager.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
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 @@ struct Led : std::enable_shared_from_this<Led> { 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 @@ struct Backplane 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 @@ int main() }); io.post([]() { populate(); }); + setupPowerMatch(conn); io.run(); } |