Compare commits

..

4 Commits

Author SHA1 Message Date
ab5a343ab2 Merge branch 'carun_wakelineabstraction' 2024-06-10 12:03:08 +02:00
1199dbfd30 Add CCWakelineAbstraction 2024-06-10 11:50:34 +02:00
06d43009ad Merge branch 'CoinInputFix' 2024-05-22 12:55:32 +02:00
bed98c2c0e Fix: reset 'lastInsertedAmount' ...
affects direct coin input / cash-payment.
2024-05-22 12:54:00 +02:00
6 changed files with 88 additions and 4 deletions

View File

@@ -1,6 +1,8 @@
#include "CArun.h" #include "CArun.h"
#include "datei.h" #include "datei.h"
#include "CCWakelineAbstraction.h"
CArun::CArun(QObject *parent) CArun::CArun(QObject *parent)
: QObject(parent) : QObject(parent)
@@ -17,6 +19,8 @@ CArun::CArun(QObject *parent)
qCritical() << "CArun: start setup..."; qCritical() << "CArun: start setup...";
this->timerChainCtrl->start(); this->timerChainCtrl->start();
this->ccWakelineAbstraction = new CCWakelineAbstraction(this->HWaccess, this);
} }

View File

@@ -22,7 +22,7 @@ enum class SETUP_STEP {
}; };
class CCWakelineAbstraction;
class CArun : public QObject class CArun : public QObject
{ {
@@ -45,6 +45,8 @@ private:
void openSerialPort(); void openSerialPort();
CCWakelineAbstraction* ccWakelineAbstraction;
signals: signals:

View File

@@ -0,0 +1,51 @@
#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;
}
}
}

View File

@@ -0,0 +1,25 @@
#ifndef CCWAKELINEABSTRACTION_H
#define CCWAKELINEABSTRACTION_H
#include <QObject>
class hwinf;
class QFileSystemWatcher;
class CCWakelineAbstraction : public QObject
{
Q_OBJECT
public:
CCWakelineAbstraction(hwinf *dc, QObject *parent = nullptr);
private:
hwinf *dc;
QFileSystemWatcher *ccWakeMonitor;
void ccWakeChanged(const QString &path);
};
#endif // CCWAKELINEABSTRACTION_H

View File

@@ -40,12 +40,14 @@ DEFINES+=APP_EXTENDED_VERSION=\\\"$$EXTENDED_VERSION\\\"
SOURCES += \ SOURCES += \
CArun.cpp \ CArun.cpp \
CCWakelineAbstraction.cpp \
main.cpp \ main.cpp \
tslib.cpp \ tslib.cpp \
datei.cpp datei.cpp
HEADERS += \ HEADERS += \
CArun.h \ CArun.h \
CCWakelineAbstraction.h \
guidefs.h \ guidefs.h \
tslib.h \ tslib.h \
versionHistory.txt \ versionHistory.txt \

View File

@@ -990,8 +990,8 @@ char T_datif::loadRecDataFromFrame()
case 112: // get inserted amount in cent in sum case 112: // get inserted amount in cent in sum
// byte 0..3: amount just paid 4,5:last coin type 6,7: last coin value // byte 0..3: amount just paid 4,5:last coin type 6,7: last coin value
newInsertedAmount=uchar2ulong(receivedData[3],receivedData[2],receivedData[1],receivedData[0]); newInsertedAmount=uchar2ulong(receivedData[3],receivedData[2],receivedData[1],receivedData[0]);
uitmp=uchar2uint(receivedData[5],receivedData[4]); uitmp=uchar2uint(receivedData[5],receivedData[4]); // last coin type
uit2=uchar2uint(receivedData[7],receivedData[6]); uit2=uchar2uint(receivedData[7],receivedData[6]); // last coin value
//if (uitmp>0) // nur 1x bei neuer Münze 6.10.23 aendern: //if (uitmp>0) // nur 1x bei neuer Münze 6.10.23 aendern:
// beim Wechsler hat die kleinste Muenze immer coin type 0! // beim Wechsler hat die kleinste Muenze immer coin type 0!
if (uitmp>10000 || uit2>10000) if (uitmp>10000 || uit2>10000)
@@ -999,7 +999,7 @@ char T_datif::loadRecDataFromFrame()
uitmp=0; uitmp=0;
uit2=0; uit2=0;
} }
if (newInsertedAmount != lastInsertedAmount) if ((newInsertedAmount != lastInsertedAmount) || uit2>0) // 22.5.2024
{ {
gpi_storeCurrentPayment(newInsertedAmount, uitmp, uit2); gpi_storeCurrentPayment(newInsertedAmount, uitmp, uit2);
emit datif_gotNewCoin(); // OR BILL if (uitmp & 0x8000)>0 emit datif_gotNewCoin(); // OR BILL if (uitmp & 0x8000)>0