Add SIGUSR1 and SIGUSR2 signals to disable/enable the LEDs

Fixed enable on LedDeviceWrapper constructor.
This commit is contained in:
Portisch
2019-04-19 06:22:23 +00:00
parent 48aee89032
commit 0e756beae4
3 changed files with 26 additions and 0 deletions

View File

@@ -41,12 +41,33 @@ using namespace commandline;
void signal_handler(const int signum)
{
/// Hyperion instance
Hyperion* _hyperion = Hyperion::getInstance();
if(signum == SIGCHLD)
{
// only quit when a registered child process is gone
// currently this feature is not active ...
return;
}
else if (signum == SIGUSR1)
{
if (_hyperion != nullptr)
{
_hyperion->setComponentState(hyperion::COMP_SMOOTHING, false);
_hyperion->setComponentState(hyperion::COMP_LEDDEVICE, false);
}
return;
}
else if (signum == SIGUSR2)
{
if (_hyperion != nullptr)
{
_hyperion->setComponentState(hyperion::COMP_LEDDEVICE, true);
_hyperion->setComponentState(hyperion::COMP_SMOOTHING, true);
}
return;
}
QCoreApplication::quit();
// reset signal handler to default (in case this handler is not capable of stopping)
@@ -132,6 +153,8 @@ int main(int argc, char** argv)
signal(SIGABRT, signal_handler);
signal(SIGCHLD, signal_handler);
signal(SIGPIPE, signal_handler);
signal(SIGUSR1, signal_handler);
signal(SIGUSR2, signal_handler);
// force the locale
setlocale(LC_ALL, "C");