forked from GerhardHoffmann/DCLibraries
52 lines
1.4 KiB
C++
52 lines
1.4 KiB
C++
#include <QFileSystemWatcher>
|
|
#include <QFile>
|
|
|
|
#include <QDebug>
|
|
|
|
#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;
|
|
}
|
|
}
|
|
}
|