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;
 | 
						|
         }
 | 
						|
     }
 | 
						|
}
 |