#include #include #include #include "CCWakelineAbstraction.h" #include "plugin.h" /** * this is based on a solution from: * https://embeddeduse.com/2018/09/18/monitoring-sys-files-qfilesystemwatcher/ * */ CCWakelineAbstraction::CCWakelineAbstraction(hwinf *dc, QObject *parent) : QObject(parent) , dc(dc) { auto ccWakeMonitor = new QFileSystemWatcher(this); ccWakeMonitor->addPath("/sys/class/leds/wakeupctrl_cc/brightness"); connect(ccWakeMonitor, &QFileSystemWatcher::fileChanged, this, &CCWakelineAbstraction::ccWakeChanged); qCritical() << "... init CCWakelineAbstraction"; } void CCWakelineAbstraction::ccWakeChanged(const QString &path) { QFile ccWakeFile(path); if (!ccWakeFile.open(QIODevice::ReadOnly)) { qWarning() << "ERROR: Could not open ccWakeFile file."; return; } auto ccWake = ccWakeFile.readAll(); if (!ccWake.isEmpty()) { int state = ccWake.at(0); //qCritical() << "INFO: ccWake = " << state; switch (state) { case 0x30: // '1' qCritical() << "INFO: ccWake -> sleep"; this->dc->credit_switchWake(true); // switch 'sleep' break; case 0x31: // '0' qCritical() << "INFO: ccWake -> wake"; this->dc->credit_switchWake(false); // switch 'wake' break; } } }