#include "EnergySaver.h" #include #include #include EnergySaver::EnergySaver(QObject *parent) : QObject(parent) { } /** * @brief Create instance if necessary and set timeout interval. * @param interval Timer interval in seconds * @see EnergySaver::instance */ void EnergySaver::init(int interval) { EnergySaver* saver = instance(); saver->initTimer(interval*1000); saver->restartTimer(); } /** * @brief Implements the singleton pattern. * @return Instance * * If no instance has been created yet, create new instance. */ EnergySaver *EnergySaver::instance() { static EnergySaver* inst; if (inst == nullptr) { inst = new EnergySaver(); } return inst; } void EnergySaver::restartTimer() { if(mTimer.isActive()){ mTimer.stop(); } mTimer.start(); } /** * @brief Initialize and connect timer. * @param interval Timeout interval in millisecond. */ void EnergySaver::initTimer(int interval) { connect(&mTimer, &QTimer::timeout, this, &EnergySaver::onTimeout); mTimer.setInterval(interval); mTimer.setSingleShot(true); } /** * @brief Behavior on timeout: shut down RaspberryPi. * @todo Call shutdown script. */ void EnergySaver::onTimeout() { std::cout << "Shutting down."; #ifndef _DEBUG QProcess p; p.start("/usr/local/sbin/do_shutdown.sh"); p.waitForFinished(); #endif }