Compare commits

..

No commits in common. "91ce1c84d81b732a103bf5b611219e38a4754cbf" and "a4afc4ced7186e74a81e2e679e1eebb230052df7" have entirely different histories.

9 changed files with 78 additions and 40 deletions

View File

@ -87,7 +87,6 @@ HEADERS += \
$${PWD}/include/dcBL.h \
$${PWD}/include/hwapi.h \
$${PWD}/include/interfaces.h \
$${PWD}/include/dynamic-machine-conditions.h \
$${PWD}/include/sendWRcmd.h \
$${PWD}/include/storeINdata.h \
$${PWD}/include/tslib.h \

View File

@ -1033,7 +1033,8 @@ public:
void sys_getDeviceConditions(struct T_moduleCondition *devCond) const override;
void sys_getDynMachineConditions(void *data) const override;
void sys_getDynMachineConditions(uint8_t *leng, uint8_t *data) const override;
void sys_getDynMachineConditions(struct T_dynamicCondition *dynMachCond) const override;

View File

@ -3,6 +3,8 @@
#include <QtPlugin>
struct T_emp
{
@ -1856,7 +1858,8 @@ public:
Q_UNUSED(devCond);
}
virtual void sys_getDynMachineConditions(void *data) const {
virtual void sys_getDynMachineConditions(uint8_t *leng, uint8_t *data) const {
Q_UNUSED(leng);
Q_UNUSED(data);
}

View File

@ -7,7 +7,6 @@
#include <QSharedMemory>
#include <QtGlobal>
#include "interfaces.h"
bool shdMem_firstUse(void);
@ -191,10 +190,8 @@ struct SharedMem
uint8_t store_deviceCondLen;
uint8_t store_deviceCond[66];
// uint8_t store_machCondLen;
// uint8_t store_machCond[66];
struct T_dynamicCondition dynMachCond;
uint8_t store_machCondLen;
uint8_t store_machCond[66];
uint8_t store_DcBackupNrOfAccNr;
uint16_t store_DcBackupAccNr[16]; // z.Z. nur 8

View File

@ -488,8 +488,10 @@ void epi_restoreDeviceConditions(uint8_t *leng, uint8_t *data);
void epi_clearDynMachineConditions(void); // new, 24.6.23
void gpi_storeDynMachineConditions(void const *data);
void epi_restoreDynMachineConditions(void *data);
void gpi_storeDynMachineConditions(uint8_t leng, uint8_t *data);
void epi_restoreDynMachineConditions(uint8_t *leng, uint8_t *data);
void gpi_storeDCbackupAccNr(uint8_t leng, uint8_t *data);

View File

@ -14,7 +14,6 @@ History:
#include <QDir>
#include <algorithm> // min/max
@ -1043,19 +1042,9 @@ char T_datif::loadRecDataFromFrame()
epi_setDcDataValid(); // DC-Data are valid as DC responded.
// Could be set to every response but this (31)
// is a very common and very important request
gpi_storeDynMachineConditions(RdDleng, receivedData);
if (RdDleng > sizeof(struct T_dynamicCondition)) {
qCritical() << "!!!WARNING!!! RdDlen too high" << RdDleng;
// only use as many bytes as maximally possible
char buf[sizeof(struct T_dynamicCondition)];
memset(buf, 0, sizeof(buf));
memcpy(buf, receivedData, std::min(sizeof(receivedData), sizeof(struct T_dynamicCondition)));
gpi_storeDynMachineConditions(buf);
} else {
gpi_storeDynMachineConditions(receivedData);
}
gpi_storeDI_CoinAttach(((struct T_dynamicCondition *)receivedData)->coinAttached); // new, 14.2.24 needed for direct coin insertion
gpi_storeDI_CoinAttach(receivedData[6]); // new, 14.2.24 needed for direct coin insertion
}
/* funktioniert, ist aber nicht nötig. Signal wird nach dem shared memory erzeugt

View File

@ -3229,14 +3229,29 @@ void hwapi::sys_getDeviceConditions(struct T_moduleCondition *devCond) const
void hwapi::sys_getDynMachineConditions(void *data) const
void hwapi::sys_getDynMachineConditions(uint8_t *leng, uint8_t *data) const
{
epi_restoreDynMachineConditions(data);
epi_restoreDynMachineConditions(leng, data);
}
void hwapi::sys_getDynMachineConditions(struct T_dynamicCondition *dynMachCond) const
{
epi_restoreDynMachineConditions(dynMachCond);
uint16_t LL, nn;
char *start;
uint8_t buf[70], leng;
epi_restoreDynMachineConditions(&leng, buf);
// Puffer in struct eintragen:
LL=sizeof(struct T_dynamicCondition);
start = &dynMachCond->allDoorsDebounced;
nn=0;
do
{
*start = buf[nn];
start++;
} while(++nn<LL);
}
@ -3273,15 +3288,19 @@ uint8_t hwapi::prn_getCurrentPrinterState() const
// bit4: paper jam in cutter
// bit6: no response bit7: serial rec. error
// bit5: printer not ready
struct T_dynamicCondition dynCond;
memset(&dynCond, 0, sizeof(dynCond));
uint8_t lastPrinterStatus;
uint8_t buf[70], leng;
if (!epi_areDcDataValid()) // was set to 0 with print command
return 0x40; // no response
// 2nd way to get dyn.conditions:
epi_restoreDynMachineConditions(&dynCond);
return dynCond.lastPrinterStatus;
epi_restoreDynMachineConditions(&leng, buf);
lastPrinterStatus=buf[52];
return lastPrinterStatus;
// oder mit:
//struct T_dynamicCondition myDynMachCond;

View File

@ -400,7 +400,22 @@ void T_runProc::changer_getAllParameters(struct T_changer *mw)
void T_runProc::sub_getDynMachineConditions(struct T_dynamicCondition *dynMachCond)
{
epi_restoreDynMachineConditions(dynMachCond);
uint16_t LL, nn;
char *start;
uint8_t buf[70], leng;
epi_restoreDynMachineConditions(&leng, buf);
// Puffer in struct eintragen:
LL=sizeof(struct T_dynamicCondition);
start = &dynMachCond->allDoorsDebounced;
nn=0;
do
{
*start = buf[nn];
start++;
} while(++nn<LL);
}

View File

@ -6,8 +6,6 @@
#include "shared_mem_buffer.h"
#include "datei.h"
#include "interfaces.h" // #include "dynamic-machine-conditions.h"
// gpi: grafical access to PI: access from external devices over device controller FOR GUI
// epi: external access from GUI to PI: FOR external devices (DC)
@ -1934,17 +1932,32 @@ void epi_restoreDeviceConditions(uint8_t *leng, uint8_t *data)
void epi_clearDynMachineConditions(void)
{
memset(&SharedMem::write()->dynMachCond, 0, sizeof(struct T_dynamicCondition));
uint8_t nn;
SharedMem::write()->store_machCondLen=0;
for (nn=0; nn<64; nn++)
SharedMem::write()->store_machCond[nn] = 0;
}
void gpi_storeDynMachineConditions(void const *data)
void gpi_storeDynMachineConditions(uint8_t leng, uint8_t *data)
{
SharedMem::write()->dynMachCond = *(struct T_dynamicCondition const *)(data);
uint8_t nn;
if (leng>64) leng=64;
SharedMem::write()->store_machCondLen=leng;
// tslib_strcpy(data, SharedMem::write()->store_machCond, leng);
for (nn=0; nn<leng; nn++)
SharedMem::write()->store_machCond[nn] = data[nn];
}
void epi_restoreDynMachineConditions(void *data)
void epi_restoreDynMachineConditions(uint8_t *leng, uint8_t *data)
{
*(struct T_dynamicCondition *)(data) = SharedMem::read()->dynMachCond;
uint8_t nn, LL;
LL=SharedMem::read()->store_machCondLen;
*leng=LL;
//tslib_strcpy(SharedMem::read()->store_machCond, data, SharedMem::read()->store_machCondLen);
for (nn=0; nn<LL; nn++)
data[nn] = SharedMem::read()->store_machCond[nn];
}