Compare commits

...

3 Commits

Author SHA1 Message Date
c337b6e50e hwapi::onCCWakeGpioChanged():
start implementation of slot for fileSystemWatcher.
	Seems to be enough to start only the modem, as the cc-terminal
	is connected to the modem.
2024-11-07 14:14:58 +01:00
821a6e63bf Connect fileSystemWatcher. 2024-11-07 14:14:25 +01:00
73b2dec85e Added fileSystemWatcher to check if cc-terminal has to switched on/off. 2024-11-07 14:12:02 +01:00
2 changed files with 92 additions and 4 deletions

View File

@ -63,7 +63,8 @@ V4.0 6.9.2023: activating DC-Bootloader in slve-lib (SM)
#include "shared_mem_buffer.h"
#include "runProc.h"
#include "interfaces.h"
#include <QScopedPointer>
#include <QFileSystemWatcher>
/*
* select Plugin Type here
@ -98,7 +99,7 @@ V4.0 6.9.2023: activating DC-Bootloader in slve-lib (SM)
//#define THIS_IS_CA_MASTER
class QFileSystemWatcher;
class QSharedMemory;
class DownloadThread;
class ReportingThread;
@ -115,7 +116,11 @@ private:
QSharedMemory *m_sharedMem;
ReportingThread *m_reportingThread;
DownloadThread *m_downloadThread;
//QTimer *hwapi_triggerBL;
QScopedPointer<QFileSystemWatcher> m_fileSystemWatcher;
QString m_watchedFile;
private slots:
void onCCWakeGpioChanged(QString const &file);
public:
explicit hwapi(QObject *parent = nullptr);

View File

@ -15,6 +15,7 @@
#include <cstring>
#include <QThread>
#include <QDebug>
#include <QFileSystemWatcher>
static uint32_t hwapi_lastStartAmount;
@ -35,6 +36,7 @@ hwapi::hwapi(QObject *parent) : QObject(parent)
qCritical() << " hwapi::hwapi() APP_EXTENDED_VERSION:" << APP_EXTENDED_VERSION;
qCritical() << "hwapi::hwapi() APP_EXTENDED_VERSION_LIB:" << APP_EXTENDED_VERSION_LIB;
m_fileSystemWatcher.reset();
// create or attach shared memory segment
m_sharedMem = SharedMem::getShm(sizeof(SharedMem));
@ -56,8 +58,20 @@ hwapi::hwapi(QObject *parent) : QObject(parent)
#error "SLAVE LIB COMPILED INTO MASTER"
#endif
myDatif = new T_datif(this); // für die CAslave-Lib auskommentieren!
// m_sysfs_remout_out = "/sys/class/leds/wakeupctrl_cc/brightness";
m_watchedFile = "/tmp/watch.txt";
m_fileSystemWatcher.reset(new QFileSystemWatcher());
if (!m_fileSystemWatcher->addPath(m_watchedFile)) {
qCritical() << "cannot add path for" << m_watchedFile;
} else {
if (connect(m_fileSystemWatcher.get(), SIGNAL(fileChanged(QString const&)),
this, SLOT(onCCWakeGpioChanged(QString const&)))) {
qCritical() << "connected file watcher with" << m_watchedFile;
}
}
myDatif = new T_datif(this); // für die CAslave-Lib auskommentieren!
#endif
#ifdef THIS_IS_CA_SLAVE
@ -120,6 +134,75 @@ hwapi::hwapi(QObject *parent) : QObject(parent)
connect(runProcess, SIGNAL(runProc_coinAttached()), this, SLOT(coinAttached()));
}
void hwapi::onCCWakeGpioChanged(QString const &fileName) {
if (fileName == m_watchedFile) {
QFile f(m_watchedFile);
if (f.open(QFile::ReadWrite | QFile::Text)) {
QTextStream stream(&f);
int sleepTime = 5000;
QString const &content = stream.readAll();
if (content.startsWith("0")) {
if (mod_isGsmPowerOn()) {
qCritical() << __func__ << ":" << __LINE__;
mod_switchWake(false);
mod_switchPower(false);
//if (mod_isGsmPowerOn()) { // try again
// qCritical() << __func__ << ":" << __LINE__;
// stream << "0";
// QThread::msleep(sleepTime);
//}
}
if (cred_isCreditPowerOn()) { // try again
//qCritical() << __func__ << ":" << __LINE__;
//credit_switchWake(false);
//credit_switchPower(false);
//if (cred_isCreditPowerOn()) { // try again
// qCritical() << __func__ << ":" << __LINE__;
// stream << "0";
// QThread::msleep(sleepTime);
//}
}
} else
if (content.startsWith("1")) {
if (mod_isGsmPowerOn() == false) {
static bool mod_powerOnCalled = false;
if (mod_powerOnCalled == false) {
mod_switchPower(true);
mod_switchWake(true);
mod_powerOnCalled = true;
}
//if (mod_isGsmPowerOn() == false) { // try again
// mod_switchWake(true);
// qCritical() << __func__ << ":" << __LINE__;
// stream << "1";
// QThread::msleep(sleepTime);
//}
}
if (cred_isCreditPowerOn() == false) {
static bool cred_powerOnCalled = false;
//if (cred_powerOnCalled == false) {
// credit_switchPower(true);
// credit_switchWake(true);
// cred_powerOnCalled = true;
//}
//if (cred_isCreditPowerOn() == false) { // try again
// credit_switchWake(true);
// qCritical() << __func__ << ":" << __LINE__;
// stream << "1";
// QThread::msleep(sleepTime);
//}
}
} else {
qCritical() << "watched file contained" << content;
}
}
} else {
qCritical() << "ERROR watching the wrong file" << fileName;
}
}
void hwapi::hwapi_slotPayProc(void)
{