Merge branch 'master' into pu/integration
This commit is contained in:
		@@ -170,7 +170,7 @@ uint8_t epi_getResultOfLastRequest();
 | 
			
		||||
    // retval: 0: in progress  1: OK  2: error
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeRecPayLoad(uint8_t RdDlen, uint8_t *receivedData);
 | 
			
		||||
void gpi_storeRecPayLoad(uint8_t RdDlen, uint8_t const *receivedData);
 | 
			
		||||
    // stored by Datif
 | 
			
		||||
 | 
			
		||||
uint16_t epi_getLastPayLoad(uint16_t plBufSiz, uint8_t *payLoad);
 | 
			
		||||
 
 | 
			
		||||
@@ -330,6 +330,11 @@ signals:
 | 
			
		||||
        //the requested data are stored in peripheral image
 | 
			
		||||
        // can be loaded with epi
 | 
			
		||||
 | 
			
		||||
    void datif_templatePrintFinished_OK();
 | 
			
		||||
    void datif_templatePrintFinished_Err();
 | 
			
		||||
 | 
			
		||||
    void datif_gotNewCoin();
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // CI_H
 | 
			
		||||
 
 | 
			
		||||
@@ -93,13 +93,14 @@ Level 3): send command: "start payment process"
 | 
			
		||||
#include "interfaces.h"
 | 
			
		||||
#include "datIf.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class QSharedMemory;
 | 
			
		||||
class hwapi :   public QObject,
 | 
			
		||||
                public hwinf
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
    Q_INTERFACES(hwinf)
 | 
			
		||||
private:
 | 
			
		||||
    void sub_storeSendingText(QByteArray *buf) const;
 | 
			
		||||
 | 
			
		||||
    DownloadResult sendNextAddress(int bNum) const;
 | 
			
		||||
    DownloadResult sendNextDataBlock(QByteArray const &b, int bNum) const;
 | 
			
		||||
@@ -113,12 +114,17 @@ class hwapi :   public QObject,
 | 
			
		||||
    bool resetDeviceController() const;
 | 
			
		||||
    QByteArray loadBinaryDCFile(QString filename) const;
 | 
			
		||||
    bool downloadBinaryToDC(QString const &bFile) const;
 | 
			
		||||
 | 
			
		||||
    QSharedMemory *m_sharedMem;
 | 
			
		||||
public:
 | 
			
		||||
    explicit hwapi(QWidget *parent = nullptr);
 | 
			
		||||
    virtual ~hwapi();
 | 
			
		||||
 | 
			
		||||
    T_datif *myDatif;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual QStringList dc_getStatus() const;
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
    // Level 0 commands, interface
 | 
			
		||||
    // open, close, change serial interface
 | 
			
		||||
@@ -989,24 +995,12 @@ public:
 | 
			
		||||
    //                          uint16_t borough, uint16_t zone,
 | 
			
		||||
    //                          uint16_t alias,   char *location) const override;
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
    uint8_t emp_getInsertedCoinSignal(void) const override;
 | 
			
		||||
        // can be called one time after each coin
 | 
			
		||||
        // emp_chkIfCoinInserted() must be called before!
 | 
			
		||||
 | 
			
		||||
    uint16_t emp_getInsertedCoinValue(void) const override;
 | 
			
		||||
        // can be called one time after each coin
 | 
			
		||||
        // emp_chkIfCoinInserted() must be called before!
 | 
			
		||||
 | 
			
		||||
    uint8_t emp_getCoinError(void) const override;
 | 
			
		||||
        // can be called one time after each coin
 | 
			
		||||
        // emp_chkIfCoinInserted() must be called before!
 | 
			
		||||
    */
 | 
			
		||||
 | 
			
		||||
    bool rtc_setTimeDateDirect(struct Trtc_DateTime *DateTime) const override;
 | 
			
		||||
        // return true if successful. could fail if more the 8 commands are waiting
 | 
			
		||||
 | 
			
		||||
    bool rtc_getExtendedTime(uint8_t *leng, uint8_t *data) const override;
 | 
			
		||||
    bool rtc_getExtendedTime(struct T_extTime *exTime) const override;
 | 
			
		||||
 | 
			
		||||
    bool sys_runCompleteTest(void) const override;
 | 
			
		||||
        // warning: lasts 20s in one pace
 | 
			
		||||
@@ -1031,15 +1025,18 @@ public:
 | 
			
		||||
        // nr = 1..32
 | 
			
		||||
        // return true if sending, false if cmd-stack is full
 | 
			
		||||
 | 
			
		||||
    void log_getHoldAccountNumbers(uint32_t *accNr ) const override;
 | 
			
		||||
        // returns all acc nrs of the backuped vault records
 | 
			
		||||
        // use: uint32_t backupedAccNumbers[8]
 | 
			
		||||
    void log_getHoldAccountNumbers(uint8_t *nrOfVals, uint16_t *accNr ) const override;
 | 
			
		||||
    // returns all acc nrs of the backuped vault records
 | 
			
		||||
    // use: uint16_t backupedAccNumbers[8]
 | 
			
		||||
 | 
			
		||||
    bool log_selectVaultRecord(uint16_t accountNr ) const override;
 | 
			
		||||
        // return true if sending, false if cmd-stack is full
 | 
			
		||||
        // and trigger transfer
 | 
			
		||||
 | 
			
		||||
//request, isAvailable
 | 
			
		||||
    void log_getVaultRecord(struct T_vaultRecord *retVR) const override;
 | 
			
		||||
    bool log_chkIfVaultRecordAvailable(void) const override;
 | 
			
		||||
        // return true if completly received
 | 
			
		||||
 | 
			
		||||
    bool log_getVaultRecord(struct T_vaultRecord *retVR) const override;
 | 
			
		||||
        // which was selected by: log_selectVaultRecord()
 | 
			
		||||
        // to be forwarded to Ismas
 | 
			
		||||
 | 
			
		||||
@@ -1049,7 +1046,8 @@ public:
 | 
			
		||||
    bool prn_printTestTicket(void) const override;
 | 
			
		||||
        // return true if sending to DC OK, false if cmd-stack is full
 | 
			
		||||
 | 
			
		||||
    bool cash_startPayment(uint16_t amount) const override;
 | 
			
		||||
    bool cash_startPayment(uint32_t amount) const override;
 | 
			
		||||
        // 17.4.23TS: extended to 32bit
 | 
			
		||||
 | 
			
		||||
    bool cash_cancelPayment(void) const override;
 | 
			
		||||
        // and return coins
 | 
			
		||||
@@ -1077,30 +1075,47 @@ public:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    uint8_t mif_getCardType(QString cardholder) const override;
 | 
			
		||||
    uint8_t mif_getCardType(QString *cardholder) const override;
 | 
			
		||||
        // return 1,2,3,4 = upper, lower access card, printer test, coin test
 | 
			
		||||
        // cardholder: 7byte Name-String
 | 
			
		||||
 | 
			
		||||
    uint64_t sys_getWakeSource(void) const override;
 | 
			
		||||
        // retval: 6 bytes, bit coded, 1=event keeps DC awake
 | 
			
		||||
 | 
			
		||||
    //void sys_getDeviceConditions(struct T_moduleCondition *devCond) const override;
 | 
			
		||||
    void sys_getDeviceConditions(uint8_t *leng, uint8_t *data) const override;
 | 
			
		||||
 | 
			
		||||
    //void sys_getDynMachineConditions(struct T_dynamicCondition *dynMachCond) const override;
 | 
			
		||||
    void sys_getDeviceConditions(struct T_moduleCondition *devCond) const override;
 | 
			
		||||
 | 
			
		||||
    void sys_getDynMachineConditions(uint8_t *leng, uint8_t *data) const override;
 | 
			
		||||
    void sys_getDynMachineConditions(struct T_dynamicCondition *dynMachCond) const override;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    uint32_t cash_getAmountInVault(void) const override;
 | 
			
		||||
 | 
			
		||||
    uint16_t cash_getNrCoinsInVault(void) const override;
 | 
			
		||||
 | 
			
		||||
    uint8_t prn_getPrintResult() const override;
 | 
			
		||||
 | 
			
		||||
    uint8_t prn_getCurrentPrinterState() const override;
 | 
			
		||||
        //        0: printer OK
 | 
			
		||||
        //          bit0: near paper end          bit1: no paper
 | 
			
		||||
        //          bit2: temperature error       bit3: error head open
 | 
			
		||||
        //          bit4: paper jam in cutter
 | 
			
		||||
        //          bit6: no response             bit7: serial rec. error
 | 
			
		||||
        //			bit5: printer not ready
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
    void hwapi_templatePrintFinished_OK(void) const override;
 | 
			
		||||
    void hwapi_templatePrintFinished_Err(void) const override;
 | 
			
		||||
    void hwapi_gotNewCoin(void) const override;
 | 
			
		||||
    void hwapi_vendStopByMax(void) const override;
 | 
			
		||||
    void hwapi_vendStopByPushbutton(void) const override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    void sub_storeSendingText(QByteArray *buf) const;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 private slots:
 | 
			
		||||
    void hwapi_slotPrintFinished_OK(void);
 | 
			
		||||
    void hwapi_slotPrintFinished_Err(void);
 | 
			
		||||
    void hwapi_slotGotCoin(void);
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,9 @@
 | 
			
		||||
#define INTERFACE_H
 | 
			
		||||
 | 
			
		||||
#include <QtPlugin>
 | 
			
		||||
#include <QStringList>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct T_emp
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
struct T_emp {
 | 
			
		||||
   // Fixdata from EMP:
 | 
			
		||||
   uint8_t shaft;      // = changer level
 | 
			
		||||
   uint16_t countryCode;
 | 
			
		||||
@@ -34,11 +31,9 @@ struct T_emp
 | 
			
		||||
 | 
			
		||||
   uint8_t pollingRunning;
 | 
			
		||||
   uint8_t paymentRunning;
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Trtc_DateTime
 | 
			
		||||
{
 | 
			
		||||
struct Trtc_DateTime {
 | 
			
		||||
   uint8_t rtc_hour;
 | 
			
		||||
   uint8_t rtc_min;
 | 
			
		||||
   uint8_t rtc_sec;
 | 
			
		||||
@@ -48,8 +43,7 @@ struct Trtc_DateTime
 | 
			
		||||
   uint8_t rtc_dayOfWeek;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Tprn_hw_state
 | 
			
		||||
{
 | 
			
		||||
struct Tprn_hw_state {
 | 
			
		||||
    // hardware (IO's)
 | 
			
		||||
    bool powerRdBk;     // prn pwr is on
 | 
			
		||||
    bool rsSwOk;        // serial switch (printer or modem) is set to printer
 | 
			
		||||
@@ -66,8 +60,7 @@ struct Tprn_hw_state
 | 
			
		||||
    bool badResponse;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 struct Tprn_currentSettings
 | 
			
		||||
{
 | 
			
		||||
struct Tprn_currentSettings {
 | 
			
		||||
    uint8_t currFont;
 | 
			
		||||
    uint8_t currSize;
 | 
			
		||||
    uint8_t currHeigth;
 | 
			
		||||
@@ -80,8 +73,7 @@ struct Tprn_hw_state
 | 
			
		||||
    bool    nowAligned;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 struct T_dynDat
 | 
			
		||||
{
 | 
			
		||||
struct T_dynDat {
 | 
			
		||||
    uint8_t licensePlate[8];
 | 
			
		||||
    uint8_t vendingPrice[8];
 | 
			
		||||
    uint8_t parkingEnd[8];
 | 
			
		||||
@@ -92,184 +84,193 @@ struct Tprn_hw_state
 | 
			
		||||
    uint8_t dynDat7[8];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct T_vaultRecord
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
struct T_vaultRecord {
 | 
			
		||||
    // Kassenbeleg (Abrechnungsdatensatz = Kassenwechsel-Datensatz)
 | 
			
		||||
        char startbuffer[4];		// Psa>  // never move or change this 1st entry
 | 
			
		||||
        uint16_t AccountingNumber;
 | 
			
		||||
        uint16_t CUNU;
 | 
			
		||||
        uint16_t MANU;
 | 
			
		||||
        uint16_t resint1;
 | 
			
		||||
        //uint16_t resint2;
 | 
			
		||||
    char startbuffer[4];		// Psa>  // never move or change this 1st entry
 | 
			
		||||
    uint16_t AccountingNumber;
 | 
			
		||||
    uint16_t CUNU;
 | 
			
		||||
    uint16_t MANU;
 | 
			
		||||
    uint16_t resint1;
 | 
			
		||||
    //uint16_t resint2;
 | 
			
		||||
 | 
			
		||||
        char label1buffer[4];	 // tim>
 | 
			
		||||
        uint8_t year;
 | 
			
		||||
        uint8_t month;
 | 
			
		||||
        uint8_t dom;
 | 
			
		||||
        uint8_t hour;
 | 
			
		||||
        uint8_t min;
 | 
			
		||||
        uint8_t sec;
 | 
			
		||||
        uint8_t DoW;
 | 
			
		||||
        uint8_t reschar3;
 | 
			
		||||
    char label1buffer[4];	 // tim>
 | 
			
		||||
    uint8_t year;
 | 
			
		||||
    uint8_t month;
 | 
			
		||||
    uint8_t dom;
 | 
			
		||||
    uint8_t hour;
 | 
			
		||||
    uint8_t min;
 | 
			
		||||
    uint8_t sec;
 | 
			
		||||
    uint8_t DoW;
 | 
			
		||||
    uint8_t reschar3;
 | 
			
		||||
 | 
			
		||||
        char label2buffer[4];	// abs>
 | 
			
		||||
        uint32_t AbsIncome1;
 | 
			
		||||
        uint32_t AbsReserve;
 | 
			
		||||
        uint32_t AbsNrOfCuts;
 | 
			
		||||
    char label2buffer[4];	// abs>
 | 
			
		||||
    uint32_t AbsIncome1;
 | 
			
		||||
    uint32_t AbsReserve;
 | 
			
		||||
    uint32_t AbsNrOfCuts;
 | 
			
		||||
 | 
			
		||||
//16
 | 
			
		||||
        char label3buffer[4];	// mw >
 | 
			
		||||
    char label3buffer[4];	// mw >
 | 
			
		||||
 | 
			
		||||
        // Verkauf, Tür zu:
 | 
			
		||||
        uint32_t VKcoinsInserted[16];		// nur für Wechsler, soviel wurde eingeworfen
 | 
			
		||||
        uint32_t VKcoinsReturned[6];		// nur für Wechsler, Anzahl Münzen pro Typ, soviel wurde zurückgegeben
 | 
			
		||||
    // Verkauf, Tür zu:
 | 
			
		||||
    uint32_t VKcoinsInserted[16];		// nur für Wechsler, soviel wurde eingeworfen
 | 
			
		||||
    uint32_t VKcoinsReturned[6];		// nur für Wechsler, Anzahl Münzen pro Typ, soviel wurde zurückgegeben
 | 
			
		||||
//88
 | 
			
		||||
 | 
			
		||||
        // Service, Tür offen:
 | 
			
		||||
        uint16_t ServCoinsInserted[16];		// nur für Wechsler, soviel wurde eingeworfen
 | 
			
		||||
        uint16_t ServCoinsReturned[6];		// nur für Wechsler, Anzahl Münzen pro Typ, soviel wurde zurückgegeben
 | 
			
		||||
        uint16_t resint3;
 | 
			
		||||
        uint16_t resint4;
 | 
			
		||||
        uint16_t currentTubeContent[6];		//  nur für Wechsler, aktueller Füllstand
 | 
			
		||||
        uint16_t resint5;
 | 
			
		||||
        uint16_t resint6;
 | 
			
		||||
    // Service, Tür offen:
 | 
			
		||||
    uint16_t ServCoinsInserted[16];		// nur für Wechsler, soviel wurde eingeworfen
 | 
			
		||||
    uint16_t ServCoinsReturned[6];		// nur für Wechsler, Anzahl Münzen pro Typ, soviel wurde zurückgegeben
 | 
			
		||||
    uint16_t resint3;
 | 
			
		||||
    uint16_t resint4;
 | 
			
		||||
    uint16_t currentTubeContent[6];		//  nur für Wechsler, aktueller Füllstand
 | 
			
		||||
    uint16_t resint5;
 | 
			
		||||
    uint16_t resint6;
 | 
			
		||||
// 56
 | 
			
		||||
 | 
			
		||||
        char label4buffer[4];	// box>
 | 
			
		||||
        uint16_t coinsInVault[16];
 | 
			
		||||
        uint16_t billsInStacker[8];
 | 
			
		||||
    char label4buffer[4];	// box>
 | 
			
		||||
    uint16_t coinsInVault[16];
 | 
			
		||||
    uint16_t billsInStacker[8];
 | 
			
		||||
// 48
 | 
			
		||||
 | 
			
		||||
        char label5buffer[4];	// val>
 | 
			
		||||
        // actually constant unless exchange rate is changed
 | 
			
		||||
        uint16_t coinDenomination[16];	// 5..50000 (z.B. 2? sind in Ungarn 760Ft)
 | 
			
		||||
        uint16_t billDenom[8];
 | 
			
		||||
        uint16_t tubeDenom[6];
 | 
			
		||||
        uint16_t exchangeRate;
 | 
			
		||||
        uint16_t resint9;
 | 
			
		||||
 | 
			
		||||
    char label5buffer[4];	// val>
 | 
			
		||||
    // actually constant unless exchange rate is changed
 | 
			
		||||
    uint16_t coinDenomination[16];	// 5..50000 (z.B. 2? sind in Ungarn 760Ft)
 | 
			
		||||
    uint16_t billDenom[8];
 | 
			
		||||
    uint16_t tubeDenom[6];
 | 
			
		||||
    uint16_t exchangeRate;
 | 
			
		||||
    uint16_t resint9;
 | 
			
		||||
// 64
 | 
			
		||||
 | 
			
		||||
        char endofblock[4];	// end>
 | 
			
		||||
 | 
			
		||||
    char endofblock[4];	// end>
 | 
			
		||||
// 316 byte Block im Speicher
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct T_moduleCondition
 | 
			
		||||
{
 | 
			
		||||
        // store conditon of all system components, hold in RAM
 | 
			
		||||
        // 0 means unknown, not yet tested/used
 | 
			
		||||
        // 1 means OK
 | 
			
		||||
        // 50..99	= HINT / Notification
 | 
			
		||||
        // 100..150	= WARNING
 | 
			
		||||
        // 200..250	= ERROR
 | 
			
		||||
struct T_moduleCondition {
 | 
			
		||||
    // store conditon of all system components, hold in RAM
 | 
			
		||||
    // 0 means unknown, not yet tested/used
 | 
			
		||||
    // 1 means OK
 | 
			
		||||
    // 50..99	= HINT / Notification
 | 
			
		||||
    // 100..150	= WARNING
 | 
			
		||||
    // 200..250	= ERROR
 | 
			
		||||
 | 
			
		||||
        uint8_t	structStart;		// always first!!!
 | 
			
		||||
        uint8_t	ram;				// v
 | 
			
		||||
        uint8_t	intEe;				// v
 | 
			
		||||
        uint8_t	extEe;				// v
 | 
			
		||||
    uint8_t	ram;
 | 
			
		||||
    uint8_t	intEe;
 | 
			
		||||
    uint8_t	extEe;
 | 
			
		||||
 | 
			
		||||
        uint8_t	rtc;				// 1: time/date OK   100: time not plausible  200: hardware error
 | 
			
		||||
        uint8_t	boardHw;			// v
 | 
			
		||||
        uint8_t	printer;			// v
 | 
			
		||||
        uint8_t	modem;				// v
 | 
			
		||||
    uint8_t	rtc;				// 1: time/date OK   100: time not plausible  200: hardware error
 | 
			
		||||
    uint8_t	boardHw;
 | 
			
		||||
    uint8_t	printer;
 | 
			
		||||
    uint8_t	modem;
 | 
			
		||||
 | 
			
		||||
        uint8_t	signal;				//		1...99
 | 
			
		||||
        uint8_t	regist;				// 100:not  1:reg  2:ping OK   3:gotTime
 | 
			
		||||
        uint8_t	mdbBus;
 | 
			
		||||
        uint8_t	coinChecker;		// EMP, OMP or mei-cashflow
 | 
			
		||||
    uint8_t	signal;				//		1...99
 | 
			
		||||
    uint8_t	regist;				// 100:not  1:reg  2:ping OK   3:gotTime
 | 
			
		||||
    uint8_t	mdbBus;
 | 
			
		||||
    uint8_t	coinChecker;		// EMP, OMP or mei-cashflow
 | 
			
		||||
 | 
			
		||||
        uint8_t	coinEscrow;			// v
 | 
			
		||||
        uint8_t	mifareReader;		// v
 | 
			
		||||
        uint8_t	creditTerm;			// not available
 | 
			
		||||
        uint8_t	coinReject;			// v
 | 
			
		||||
    uint8_t	coinEscrow;
 | 
			
		||||
    uint8_t	mifareReader;
 | 
			
		||||
    uint8_t	creditTerm;
 | 
			
		||||
    uint8_t	coinReject;
 | 
			
		||||
 | 
			
		||||
        uint8_t	coinSafe;			// v
 | 
			
		||||
        uint8_t   billSafe;			// v
 | 
			
		||||
        uint8_t	voltage;			// v	// 1:11..14V
 | 
			
		||||
        uint8_t   temper;				// v
 | 
			
		||||
    uint8_t	coinSafe;
 | 
			
		||||
    uint8_t   billSafe;
 | 
			
		||||
    uint8_t	voltage;			// 1:11..14V
 | 
			
		||||
    uint8_t   temper;
 | 
			
		||||
 | 
			
		||||
        uint8_t	poweronTest;
 | 
			
		||||
        uint8_t   doorState;			// 1: alles zu  200: t?r offen + bit1(S) +bit2(CB) + bit3(CB)
 | 
			
		||||
        uint8_t	doorWasOpened;		// 1: all doors are closed   200: any door was just opened
 | 
			
		||||
        uint8_t	changer;			// can only be tested by usage
 | 
			
		||||
    uint8_t	poweronTest;
 | 
			
		||||
    uint8_t   doorState;			// 1: alles zu  200: t?r offen + bit1(S) +bit2(CB) + bit3(CB)
 | 
			
		||||
    uint8_t	doorWasOpened;		// 1: all doors are closed   200: any door was just opened
 | 
			
		||||
    uint8_t	changer;			// can only be tested by usage
 | 
			
		||||
 | 
			
		||||
        uint8_t   coinBlocker;		// can only be tested by usage
 | 
			
		||||
        uint8_t   billReader;			// can only be tested by usage
 | 
			
		||||
        uint8_t   ResetReason;
 | 
			
		||||
        uint8_t	allModulesChecked;
 | 
			
		||||
 | 
			
		||||
        uint8_t   alarmState;
 | 
			
		||||
        uint8_t   res11;
 | 
			
		||||
        uint8_t   res12;
 | 
			
		||||
        uint8_t   res13;
 | 
			
		||||
    uint8_t   coinBlocker;		// can only be tested by usage
 | 
			
		||||
    uint8_t   billReader;			// can only be tested by usage
 | 
			
		||||
    uint8_t   ResetReason;
 | 
			
		||||
    uint8_t	allModulesChecked;
 | 
			
		||||
 | 
			
		||||
    uint8_t   alarmState;
 | 
			
		||||
    uint8_t   res11;
 | 
			
		||||
    uint8_t   res12;
 | 
			
		||||
    uint8_t   res13;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct T_dynamicCondition
 | 
			
		||||
{
 | 
			
		||||
        // dynamic conditions, change rapidly and frequently
 | 
			
		||||
        // these are values for the Heartbeat
 | 
			
		||||
 | 
			
		||||
        // T?rschalter entprellt:
 | 
			
		||||
        char upperDoor;		// 0:fehlt  1:drin
 | 
			
		||||
        char middleDoor;
 | 
			
		||||
        char lowerDoor;
 | 
			
		||||
        char coinBox;
 | 
			
		||||
 | 
			
		||||
        char billBox;
 | 
			
		||||
        char modeAbrech;
 | 
			
		||||
        char onAlarm;
 | 
			
		||||
        char nowCardTest;
 | 
			
		||||
 | 
			
		||||
        char nowPayment;
 | 
			
		||||
        char lastMifCardType;
 | 
			
		||||
        char openedAuthorized;
 | 
			
		||||
        char allDoorsDebounced;
 | 
			
		||||
 | 
			
		||||
        uint8_t lastSDoorState;
 | 
			
		||||
        uint8_t lastVDoorState;
 | 
			
		||||
        uint8_t CBinDebounced;
 | 
			
		||||
        uint8_t lastCBstate;
 | 
			
		||||
 | 
			
		||||
        char  paymentInProgress;
 | 
			
		||||
        char res1;
 | 
			
		||||
        char res2;
 | 
			
		||||
        char res3;
 | 
			
		||||
 | 
			
		||||
        uint16_t U_Batt;
 | 
			
		||||
        uint16_t	Temperatur;
 | 
			
		||||
 | 
			
		||||
        uint16_t	cash_storedaccNumbers[8];	// List all stored accounting numbers in ext. eeprom
 | 
			
		||||
 | 
			
		||||
        uint16_t	nrCoinsInBox;
 | 
			
		||||
        uint16_t	resui1;
 | 
			
		||||
 | 
			
		||||
        uint32_t	amountInBox;
 | 
			
		||||
        uint32_t	amountJustPaid;
 | 
			
		||||
 | 
			
		||||
        uint16_t	lastInsCoinType;	// wahrscheinlich uchar
 | 
			
		||||
        uint16_t	resui2;
 | 
			
		||||
 | 
			
		||||
        uint32_t	totalTransVolume;
 | 
			
		||||
        uint32_t	totalNrOfVends;
 | 
			
		||||
 | 
			
		||||
struct T_dynamicCondition {
 | 
			
		||||
    char allDoorsDebounced;
 | 
			
		||||
    char openedAuthorized;
 | 
			
		||||
    uint8_t CBinDebounced;
 | 
			
		||||
    char upperDoor;		// 0:fehlt  1:drin
 | 
			
		||||
    char middleDoor;
 | 
			
		||||
    char lowerDoor;
 | 
			
		||||
    char coinBox;
 | 
			
		||||
    char billBox;
 | 
			
		||||
    char modeAbrech;
 | 
			
		||||
    char onAlarm;
 | 
			
		||||
    char nowCardTest;
 | 
			
		||||
    char nowPayment;
 | 
			
		||||
    char lastMifCardType;
 | 
			
		||||
    uint8_t lastSDoorState;
 | 
			
		||||
    uint8_t lastVDoorState;
 | 
			
		||||
    uint8_t lastCBstate;
 | 
			
		||||
    char        paymentInProgress;
 | 
			
		||||
    char        res1;
 | 
			
		||||
    uint16_t    U_Batt;
 | 
			
		||||
    uint16_t	Temperatur;
 | 
			
		||||
    uint16_t	nrCoinsInBox;
 | 
			
		||||
    uint32_t	amountInBox;
 | 
			
		||||
    uint32_t	totalTransVolume;
 | 
			
		||||
    uint32_t	totalNrOfVends;
 | 
			
		||||
    char        jsonValid_config;
 | 
			
		||||
    char        jsonValid_device;
 | 
			
		||||
    char        jsonValid_cash;
 | 
			
		||||
    char        jsonValid_print;
 | 
			
		||||
    char        jsonValid_serial;
 | 
			
		||||
    char        jsonValid_time;
 | 
			
		||||
    char        lastFileType;
 | 
			
		||||
// 44
 | 
			
		||||
    uint8_t     MifCardHolder[8];
 | 
			
		||||
    uint8_t     resultOfLastTemplPrint;
 | 
			
		||||
                // 0: unknown or printing in progress
 | 
			
		||||
                // 1: OK, doc was printed   2: error, doc was not printed
 | 
			
		||||
    uint8_t     lastPrinterStatus;
 | 
			
		||||
                //        0: printer OK
 | 
			
		||||
                //          bit0: near paper end          bit1: no paper
 | 
			
		||||
                //          bit2: temperature error       bit3: error head open
 | 
			
		||||
                //          bit4: paper jam in cutter
 | 
			
		||||
                //          bit6: no response             bit7: serial rec. error
 | 
			
		||||
                //			bit5: printer not ready
 | 
			
		||||
//54
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct T_extTime {
 | 
			
		||||
    uint8_t     Hours;
 | 
			
		||||
    uint8_t     Min;
 | 
			
		||||
    uint8_t     Sec;
 | 
			
		||||
    uint8_t     Year;
 | 
			
		||||
    uint8_t     Month;
 | 
			
		||||
    uint8_t     Day;
 | 
			
		||||
    uint8_t     DOW;
 | 
			
		||||
    uint8_t     res1;
 | 
			
		||||
    uint16_t    MinOfDay;
 | 
			
		||||
    uint16_t    res2;
 | 
			
		||||
    uint32_t    SecOfDay;
 | 
			
		||||
    uint8_t     isLeapYear;
 | 
			
		||||
    uint8_t     nxtLeapYear;
 | 
			
		||||
    uint8_t     lastLeapYear;
 | 
			
		||||
    uint8_t     hoursOfThisWeek;
 | 
			
		||||
    uint16_t    minutesOfThisWeek;
 | 
			
		||||
    uint16_t    hoursOfThisMonth;
 | 
			
		||||
    uint16_t    daysOfThisYear;
 | 
			
		||||
    uint16_t    GetHoursOfYear;
 | 
			
		||||
    uint16_t    res3;
 | 
			
		||||
    uint32_t    GetMinutesOfYear;
 | 
			
		||||
    uint8_t     getWakeIntvSec;
 | 
			
		||||
    uint8_t     res4;
 | 
			
		||||
    uint16_t    res5;
 | 
			
		||||
    uint32_t    MinutesOfMillenium;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class hwinf
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
class hwinf {
 | 
			
		||||
public:
 | 
			
		||||
    enum class DownloadResult {OK, ERROR, TIMEOUT, NOP};
 | 
			
		||||
    enum class FileTypeJson {CONFIG=1, DEVICE, CASH, SERIAL, TIME, PRINTER};
 | 
			
		||||
 | 
			
		||||
    virtual ~hwinf() {}
 | 
			
		||||
               
 | 
			
		||||
    
 | 
			
		||||
    virtual QStringList dc_getStatus() const = 0;
 | 
			
		||||
                                           
 | 
			
		||||
    // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$    
 | 
			
		||||
    //       Use serial interface and protocol stack in Cashagent-Library
 | 
			
		||||
@@ -1371,6 +1372,8 @@ public:
 | 
			
		||||
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
    virtual bool rtc_getExtendedTime(struct T_extTime *exTime) const=0;
 | 
			
		||||
 | 
			
		||||
    virtual bool sys_runCompleteTest(void) const=0;
 | 
			
		||||
        // warning: lasts 20s in one pace
 | 
			
		||||
        // return true if sending, false if cmd-stack is full
 | 
			
		||||
@@ -1395,15 +1398,18 @@ public:
 | 
			
		||||
        // nr = 1..32
 | 
			
		||||
        // return true if sending, false if cmd-stack is full
 | 
			
		||||
 | 
			
		||||
        virtual void log_getHoldAccountNumbers(uint32_t *accNr ) const=0;
 | 
			
		||||
    virtual void log_getHoldAccountNumbers(uint8_t *nrOfVals, uint16_t *accNr ) const=0;
 | 
			
		||||
        // returns all acc nrs of the backuped vault records
 | 
			
		||||
        // use: uint32_t backupedAccNumbers[8]
 | 
			
		||||
        // use: uint16_t backupedAccNumbers[8]
 | 
			
		||||
 | 
			
		||||
    virtual bool log_selectVaultRecord(uint16_t accountNr ) const=0;
 | 
			
		||||
        // return true if sending, false if cmd-stack is full
 | 
			
		||||
        // and trigger transfer
 | 
			
		||||
 | 
			
		||||
//request, isAvailable
 | 
			
		||||
virtual void log_getVaultRecord(struct T_vaultRecord *retVR) const=0;
 | 
			
		||||
    virtual bool log_chkIfVaultRecordAvailable(void) const=0;
 | 
			
		||||
        // return true if completly received
 | 
			
		||||
 | 
			
		||||
    virtual bool log_getVaultRecord(struct T_vaultRecord *retVR) const=0;
 | 
			
		||||
        // which was selected by: log_selectVaultRecord()
 | 
			
		||||
        // to be forwarded to Ismas
 | 
			
		||||
 | 
			
		||||
@@ -1413,7 +1419,8 @@ virtual void log_getVaultRecord(struct T_vaultRecord *retVR) const=0;
 | 
			
		||||
    virtual bool prn_printTestTicket(void) const=0;
 | 
			
		||||
        // return true if sending to DC OK, false if cmd-stack is full
 | 
			
		||||
 | 
			
		||||
    virtual bool cash_startPayment(uint16_t amount) const=0;
 | 
			
		||||
    virtual bool cash_startPayment(uint32_t amount) const=0;
 | 
			
		||||
        // 17.4.23TS: extended to 32bit
 | 
			
		||||
 | 
			
		||||
    virtual uint32_t getInsertedAmount(void) const=0;
 | 
			
		||||
 | 
			
		||||
@@ -1437,18 +1444,13 @@ virtual void log_getVaultRecord(struct T_vaultRecord *retVR) const=0;
 | 
			
		||||
        // conclude payment process and return all inserted coins
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t mif_getCardType(QString cardholder) const=0;
 | 
			
		||||
    virtual uint8_t mif_getCardType(QString *cardholder) const=0;
 | 
			
		||||
        // return 1,2,3,4 = upper, lower access card, printer test, coin test
 | 
			
		||||
        // cardholder: 7byte Name-String
 | 
			
		||||
 | 
			
		||||
    virtual uint64_t sys_getWakeSource(void) const =0;
 | 
			
		||||
        // retval: 6 bytes, bit coded, 1=event keeps DC awake
 | 
			
		||||
 | 
			
		||||
    //virtual void sys_getDeviceConditions(struct T_moduleCondition *devCond) const=0;
 | 
			
		||||
    virtual void sys_getDeviceConditions(uint8_t *leng, uint8_t *data) const=0;
 | 
			
		||||
    /*
 | 
			
		||||
 | 
			
		||||
@@ -1485,8 +1487,7 @@ virtual void log_getVaultRecord(struct T_vaultRecord *retVR) const=0;
 | 
			
		||||
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    //virtual void sys_getDynMachineConditions(struct T_dynamicCondition *dynMachCond) const=0;
 | 
			
		||||
    virtual void sys_getDeviceConditions(struct T_moduleCondition *devCond) const=0;
 | 
			
		||||
    virtual void sys_getDynMachineConditions(uint8_t *leng, uint8_t *data) const=0;
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
@@ -1552,6 +1553,31 @@ virtual void log_getVaultRecord(struct T_vaultRecord *retVR) const=0;
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
    virtual void sys_getDynMachineConditions(struct T_dynamicCondition *dynMachCond) const=0;
 | 
			
		||||
 | 
			
		||||
    // content of Cashbox
 | 
			
		||||
    virtual uint32_t cash_getAmountInVault(void) const=0;
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t cash_getNrCoinsInVault(void) const=0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t prn_getPrintResult() const=0;
 | 
			
		||||
 | 
			
		||||
    // in case of print-error get detailed error:
 | 
			
		||||
    virtual uint8_t prn_getCurrentPrinterState() const=0;
 | 
			
		||||
        //        0: printer OK
 | 
			
		||||
        //          bit0: near paper end          bit1: no paper
 | 
			
		||||
        //          bit2: temperature error       bit3: error head open
 | 
			
		||||
        //          bit4: paper jam in cutter
 | 
			
		||||
        //          bit6: no response             bit7: serial rec. error
 | 
			
		||||
        //			bit5: printer not ready
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
    virtual void hwapi_templatePrintFinished_OK(void) const=0;
 | 
			
		||||
    virtual void hwapi_templatePrintFinished_Err(void) const=0;
 | 
			
		||||
    virtual void hwapi_gotNewCoin(void) const=0;
 | 
			
		||||
    virtual void hwapi_vendStopByMax(void) const=0;
 | 
			
		||||
    virtual void hwapi_vendStopByPushbutton(void) const=0;
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -1569,10 +1595,15 @@ virtual void log_getVaultRecord(struct T_vaultRecord *retVR) const=0;
 | 
			
		||||
// 29.03.2023: V3.1 some extensions for PSA1256_ptu5,
 | 
			
		||||
//             V3.2 Bootloader improvement
 | 
			
		||||
// 12.04.2023: V3.3 new features extended: loading and using Json-files, cash-collection, cash-data-logging
 | 
			
		||||
// 14.04.2023: V3.4 new features extended: sys_getDynMachineConditions, sys_getDeviceConditions and
 | 
			
		||||
//                    rtc_getExtendedTime return struct in addition. New function to select and get VaultRecord
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
//#define HWINF_iid "Atb.Psa2020.software.HWapi/3.1"
 | 
			
		||||
//#define HWINF_iid "Atb.Psa1256ptu5.software.HWapi/3.1"
 | 
			
		||||
#define HWINF_iid "Atb.Psa1256ptu5.software.HWapi/3.3"
 | 
			
		||||
//#define HWINF_iid "Atb.Psa1256ptu5.software.HWapi/3.3"
 | 
			
		||||
//#define HWINF_iid "Atb.Psa1256ptu5.software.HWapi/3.4"
 | 
			
		||||
#define HWINF_iid "Atb.Psa1256ptu5.software.HWapi/3.5"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -218,7 +218,10 @@ bool sendFDcmd_set(uint8_t nextWrCmd, uint8_t nextRdCmd, uint8_t blockNum, uint8
 | 
			
		||||
bool sendFDcmd_get(uint8_t *nextWrCmd, uint8_t *nextRdCmd, uint8_t *blockNum, uint8_t *dat1, uint8_t *dat2, uint8_t *dat3, uint8_t *dat4);
 | 
			
		||||
 | 
			
		||||
uint8_t check4FDshortCmd(void);
 | 
			
		||||
    // returns number of waiting command
 | 
			
		||||
    // returns number of waiting command, maxFDCMD_STACKDEPTH
 | 
			
		||||
 | 
			
		||||
uint8_t check4freeFDshortCmd(void);
 | 
			
		||||
    // returns number of free places in short-command stack
 | 
			
		||||
 | 
			
		||||
#define     FDLONG_STACKDEPTH    16
 | 
			
		||||
void longFDcmd_clrStack(void);
 | 
			
		||||
@@ -230,6 +233,9 @@ bool longFDcmd_get(uint8_t *nextWrCmd, uint8_t *nextRdCmd, uint8_t *blockNum, ui
 | 
			
		||||
uint8_t check4FDlongCmd(void);
 | 
			
		||||
    // returns number of waiting command
 | 
			
		||||
 | 
			
		||||
uint8_t check4freeFDlongCmd(void);
 | 
			
		||||
    // returns number of free places in long-command stack
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										293
									
								
								include/shared_mem_buffer.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										293
									
								
								include/shared_mem_buffer.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,293 @@
 | 
			
		||||
#ifndef SHARED_MEM_BUFFER_INCLUDED_H
 | 
			
		||||
#define SHARED_MEM_BUFFER_INCLUDED_H
 | 
			
		||||
 | 
			
		||||
#include <cinttypes>
 | 
			
		||||
#include <atomic>
 | 
			
		||||
 | 
			
		||||
#include <QSharedMemory>
 | 
			
		||||
 | 
			
		||||
struct SharedMemBuffer {
 | 
			
		||||
    struct rs {
 | 
			
		||||
        char comportName[16]; // z.B. "COM48"
 | 
			
		||||
        char baudStr[16];     // z.B. "19200"
 | 
			
		||||
        int  baudNr;          // 0...5 oder -1
 | 
			
		||||
        uint8_t connect;      // 0,1
 | 
			
		||||
        bool portIsOpen;
 | 
			
		||||
    } rs;
 | 
			
		||||
 | 
			
		||||
    char AutoEmissionOn;     // 1: zyklisch Anfragen zum Slave senden
 | 
			
		||||
 | 
			
		||||
    struct datif {
 | 
			
		||||
        uint16_t sendingPeriod;
 | 
			
		||||
        bool     sendingPer_changed;
 | 
			
		||||
    } datif;
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
    // controlBus.cpp
 | 
			
		||||
    char        txt4comStateLine[32];
 | 
			
		||||
    char        txt4HsStateLine[32];
 | 
			
		||||
    char        txt4masterStateLine[32];
 | 
			
		||||
    char        txt4resultStateLine[32];
 | 
			
		||||
    char        txt4dataLine[32];
 | 
			
		||||
    char        txt4datifReceive[32];
 | 
			
		||||
    char        txt4diagWindow[32];
 | 
			
		||||
    char        sndTxt4diagWindow[32];
 | 
			
		||||
    bool        Sdata_serialTestResult[32];
 | 
			
		||||
    uint8_t     Sdata_pProtResultOk[32];
 | 
			
		||||
    uint16_t    Sdata_receivedDataLength[32];
 | 
			
		||||
    uint8_t     Sdata_receivedDataBlock[64];
 | 
			
		||||
 | 
			
		||||
    // datif.cpp
 | 
			
		||||
    uint8_t     dif_dataStep;
 | 
			
		||||
    uint8_t     dif_scanStep;
 | 
			
		||||
    uint8_t     RDBLKNR;
 | 
			
		||||
    uint8_t     datif_OutCmdpara1;
 | 
			
		||||
    uint8_t     datif_OutCmdpara2;
 | 
			
		||||
    uint8_t     datif_OutCmdpara3;
 | 
			
		||||
    uint8_t     datif_OutCmdpara4;
 | 
			
		||||
 | 
			
		||||
    uint16_t    datif_OutCmdpara5;
 | 
			
		||||
    uint32_t    datif_OutCmdpara6;
 | 
			
		||||
    uint8_t     cycl_running;
 | 
			
		||||
 | 
			
		||||
    // dcBL.cpp
 | 
			
		||||
    uint8_t     dcBL_LastBLcmd;   // stored the last sent cmd in order to analys response
 | 
			
		||||
    uint8_t     dcBL_AtbBinFile[300000];
 | 
			
		||||
    uint32_t    dcBL_fileSize;
 | 
			
		||||
    uint16_t    dcBL_nrOfBlocks;
 | 
			
		||||
    uint16_t    dcBL_fileCrc;
 | 
			
		||||
    uint8_t     dcBL_myBuf[300000]; // same content like "dcBL_AtbBinFile" but bytewise
 | 
			
		||||
 | 
			
		||||
    char        BlResp[50][32];
 | 
			
		||||
    uint8_t     dcBL_step;
 | 
			
		||||
    uint8_t     dcBL_state;
 | 
			
		||||
    uint16_t    dcBL_BlkCtr;
 | 
			
		||||
    uint16_t    dcBL_cyclCtr;
 | 
			
		||||
    uint16_t    repeatCtr;
 | 
			
		||||
    uint8_t     Sdata_rawData[150];
 | 
			
		||||
    uint8_t     Sdata_LengthRawData;
 | 
			
		||||
 | 
			
		||||
    // hwapi.cpp
 | 
			
		||||
    uint16_t    hwapi_shutterTime;
 | 
			
		||||
    char        ticketTemplate[1024];
 | 
			
		||||
 | 
			
		||||
    // sendWRcmd.cpp
 | 
			
		||||
    uint16_t    nextAsynchsendCmd0[16];
 | 
			
		||||
    uint8_t     nrOfCmdsInQueue;
 | 
			
		||||
    uint16_t    nextAsynchsendCmd4[8];
 | 
			
		||||
    uint8_t     nextCmd4para1[8];
 | 
			
		||||
    uint8_t     nextCmd4para2[8];
 | 
			
		||||
    uint8_t     nextCmd4para3[8];
 | 
			
		||||
    uint8_t     nextCmd4para4[8];
 | 
			
		||||
    uint8_t     nrOfCmds4InQueue;
 | 
			
		||||
    uint16_t    nextAsynchsendCmd8[4];
 | 
			
		||||
    uint8_t     nextCmd8para1[4];
 | 
			
		||||
    uint8_t     nextCmd8para2[4];
 | 
			
		||||
    uint16_t    nextCmd8para3[4];
 | 
			
		||||
    uint32_t    nextCmd8para4[4];
 | 
			
		||||
    uint8_t     nrOfCmds8InQueue;
 | 
			
		||||
    uint8_t     sendAsynchDataBuf[160]; // no stack, only ONE buffer
 | 
			
		||||
    uint8_t     sendAsyDatLen;
 | 
			
		||||
    uint8_t     Sdata_mdbSendBuffer[64];
 | 
			
		||||
    uint8_t     Sdata_mdbSendLen;
 | 
			
		||||
    uint8_t     prnDataParameters[4];
 | 
			
		||||
    uint8_t     prnDataBufferUser;
 | 
			
		||||
    char        Sdata_PRN_TEXT[20][64];
 | 
			
		||||
    uint8_t     pPrnDataBuff;        // points to next PRINTER_BLOCK
 | 
			
		||||
    uint8_t     nextFDwrCmd[16];
 | 
			
		||||
    uint8_t     nextFDrdCmd[16];
 | 
			
		||||
    uint8_t     nextFDblkNr[16];
 | 
			
		||||
 | 
			
		||||
    uint8_t     nextFDpara1[16];
 | 
			
		||||
    uint8_t     nextFDpara2[16];
 | 
			
		||||
    uint8_t     nextFDpara3[16];
 | 
			
		||||
    uint8_t     nextFDpara4[16];
 | 
			
		||||
    uint8_t     p_nextFDcmdsInQueue;
 | 
			
		||||
    uint8_t     longFDwrCmd[16];
 | 
			
		||||
    uint8_t     longFDrdCmd[16];
 | 
			
		||||
    uint8_t     longFDblkNr[16];
 | 
			
		||||
    uint8_t     longFDlength[16];
 | 
			
		||||
 | 
			
		||||
    uint8_t     longFDpara[16][64];
 | 
			
		||||
    uint8_t     p_longFDcmdsInQueue;
 | 
			
		||||
 | 
			
		||||
    // storeInData.cpp
 | 
			
		||||
    bool        indat_savePrnPwr;
 | 
			
		||||
    bool        indat_saveMifPwr;
 | 
			
		||||
    bool        indat_MdbIsOn;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t     ndbs;
 | 
			
		||||
    uint8_t     pari;
 | 
			
		||||
    uint8_t     nsb;
 | 
			
		||||
    uint8_t     br;
 | 
			
		||||
 | 
			
		||||
#define MAXNROF_GENSTR 16
 | 
			
		||||
    char        genStrings[MAXNROF_GENSTR][64];
 | 
			
		||||
 | 
			
		||||
#define MAXNROF_AI 4
 | 
			
		||||
    uint16_t    AI_val[MAXNROF_AI];
 | 
			
		||||
 | 
			
		||||
    struct DigitalInputs {
 | 
			
		||||
        uint8_t doorSwitch;
 | 
			
		||||
        uint8_t vaultSwitch;
 | 
			
		||||
        uint8_t lockSwitch;
 | 
			
		||||
        uint8_t opto;
 | 
			
		||||
        uint8_t aux;
 | 
			
		||||
        bool wakeFromPtu;
 | 
			
		||||
        bool wakeFromMdb;
 | 
			
		||||
        bool wakeFromModem;
 | 
			
		||||
        bool PrnReady;
 | 
			
		||||
        bool CoinAttach;
 | 
			
		||||
        bool CoinEscrowOpen;
 | 
			
		||||
        bool mifCardTap;
 | 
			
		||||
        bool contactPwrOn;
 | 
			
		||||
        bool mifarePwrOn;
 | 
			
		||||
        bool rdbk_mdbTxd;
 | 
			
		||||
        bool AuxPwrOn;
 | 
			
		||||
        bool gsmPwrOn;
 | 
			
		||||
        bool creditPwrOn;
 | 
			
		||||
        bool printerPwrOn;
 | 
			
		||||
        bool mdbPwrOn;
 | 
			
		||||
        bool rejMot_home;
 | 
			
		||||
        uint8_t npe_sensor;
 | 
			
		||||
    } din;
 | 
			
		||||
 | 
			
		||||
    struct DigitalOutputs {
 | 
			
		||||
        uint8_t mbdRxTst;
 | 
			
		||||
        uint8_t motorBits;
 | 
			
		||||
        uint8_t serialSwitch;                 // serial drv on/off, Serial mux1, Serial mux2
 | 
			
		||||
        uint8_t ledsAndFan;
 | 
			
		||||
        uint8_t laermUndRelay;
 | 
			
		||||
        uint8_t ptuWake;
 | 
			
		||||
        uint8_t auxPower;
 | 
			
		||||
        uint8_t coinShutter;
 | 
			
		||||
        uint8_t coinEscrow;
 | 
			
		||||
        uint8_t printerPower;
 | 
			
		||||
    } dout;
 | 
			
		||||
 | 
			
		||||
    struct Sdata {
 | 
			
		||||
#define NROFMIFSTATEBYTES       40
 | 
			
		||||
#define PRN_STATE_ARRAY_SIZE    20
 | 
			
		||||
#define PRN_STATE_FONT_SIZE     20
 | 
			
		||||
        uint8_t MIF_STATE[NROFMIFSTATEBYTES];
 | 
			
		||||
        uint8_t MIF_DATA[12][64];
 | 
			
		||||
        uint8_t PRN_STATE[PRN_STATE_ARRAY_SIZE];
 | 
			
		||||
        uint8_t PRN_FONTS[PRN_STATE_FONT_SIZE];
 | 
			
		||||
        bool mdb_busRdy;
 | 
			
		||||
        bool mdb_V12on;
 | 
			
		||||
        bool mdb_V5on;
 | 
			
		||||
        uint8_t mdbNrOfRecData;
 | 
			
		||||
        uint8_t RecBuff[40];
 | 
			
		||||
        uint8_t empNrOfsettings;
 | 
			
		||||
        uint8_t emp_settingsBuff[66];
 | 
			
		||||
        uint8_t NrOfDeviceSetting;
 | 
			
		||||
        uint8_t DeviceSettingBuff[66];
 | 
			
		||||
        uint8_t NrOfMachineIDSetting;
 | 
			
		||||
        uint8_t NrOfMachineIDBuff[66];
 | 
			
		||||
        uint64_t slaveUID;
 | 
			
		||||
        uint8_t UIDstr[8];
 | 
			
		||||
#define MAXNROF_MEASURE 4
 | 
			
		||||
        uint32_t measurement[MAXNROF_MEASURE];
 | 
			
		||||
        bool serialTestResult;
 | 
			
		||||
        uint8_t pProtResultOk;
 | 
			
		||||
        uint16_t receivedDataLength;
 | 
			
		||||
        uint8_t receivedDataBlock[64];
 | 
			
		||||
    } Sdata;
 | 
			
		||||
 | 
			
		||||
    uint8_t mif_cardType;
 | 
			
		||||
    uint8_t mif_cardHolder[8];
 | 
			
		||||
 | 
			
		||||
#define MEMDEPTH_GOTCOINS (16)
 | 
			
		||||
    struct T_coin {
 | 
			
		||||
        uint8_t valid;
 | 
			
		||||
        uint8_t signal;
 | 
			
		||||
        uint8_t error;
 | 
			
		||||
        uint8_t pad;
 | 
			
		||||
        uint16_t value;
 | 
			
		||||
    } gotCoin[MEMDEPTH_GOTCOINS];
 | 
			
		||||
    uint8_t ctr_gotCoin;
 | 
			
		||||
 | 
			
		||||
    struct store {
 | 
			
		||||
        uint32_t insertedAmount;
 | 
			
		||||
        uint16_t lastCoinType[64];
 | 
			
		||||
        uint16_t lastCoinValue[64];
 | 
			
		||||
        uint64_t wakeSrc;
 | 
			
		||||
        uint8_t rbDevParamLen;
 | 
			
		||||
        uint8_t rbDevParams[66];
 | 
			
		||||
        uint8_t deviceCondLen;
 | 
			
		||||
        uint8_t deviceCond[66];
 | 
			
		||||
        uint8_t machCondLen;
 | 
			
		||||
        uint8_t machCond[66];
 | 
			
		||||
        uint8_t DcBackupNrOfAccNr;
 | 
			
		||||
        uint16_t DcBackupAccNr[16];    // z.Z. nur 8
 | 
			
		||||
        uint8_t gotNrBlocksOfVaultRec;
 | 
			
		||||
        uint8_t vaultrecord[360];
 | 
			
		||||
        uint32_t amount;
 | 
			
		||||
        uint16_t nrOfCoins;
 | 
			
		||||
    } store;
 | 
			
		||||
 | 
			
		||||
    struct T_globTime {
 | 
			
		||||
        // Reihenfolge nicht vertauschen!!!!!
 | 
			
		||||
        uint8_t     hour;
 | 
			
		||||
        uint8_t     minute;
 | 
			
		||||
        uint8_t     second;
 | 
			
		||||
        uint8_t     Year;
 | 
			
		||||
        uint8_t     Month;
 | 
			
		||||
        uint8_t     DayOfMonth;
 | 
			
		||||
        uint8_t     DayOfWeek;          // 1=monday...7
 | 
			
		||||
        uint8_t     reserve1;
 | 
			
		||||
 | 
			
		||||
        uint16_t     MinutesOfToday;
 | 
			
		||||
        uint16_t     reserve2;
 | 
			
		||||
 | 
			
		||||
        uint32_t     SecondsOfToday;
 | 
			
		||||
 | 
			
		||||
        uint8_t      IsLeapyear;
 | 
			
		||||
        uint8_t      nextLeap;
 | 
			
		||||
        uint8_t      lastLeap;
 | 
			
		||||
        uint8_t      hoursOfWeek;
 | 
			
		||||
 | 
			
		||||
        uint16_t     minOfWeek;
 | 
			
		||||
        uint16_t     hoursOfMonth;
 | 
			
		||||
        uint16_t     minOfMonth;
 | 
			
		||||
        uint16_t     dayOfYear;
 | 
			
		||||
        uint16_t     hoursOfYear;
 | 
			
		||||
        uint16_t     reserve3;
 | 
			
		||||
 | 
			
		||||
        uint32_t     minOfYear;
 | 
			
		||||
 | 
			
		||||
        uint8_t      squareOutMode;
 | 
			
		||||
        uint8_t      free1;
 | 
			
		||||
        uint16_t     reserve4;
 | 
			
		||||
        uint32_t     minOfMillenium;
 | 
			
		||||
        // bis hierher 44byts
 | 
			
		||||
        uint32_t    free2;
 | 
			
		||||
        uint32_t    free3;
 | 
			
		||||
        uint32_t    free4;
 | 
			
		||||
    } getGlobalTime;
 | 
			
		||||
 | 
			
		||||
    static QSharedMemory *getShm(std::size_t s = 0);
 | 
			
		||||
    static SharedMemBuffer *getData() {
 | 
			
		||||
        return (SharedMemBuffer *)getShm()->data();
 | 
			
		||||
    }
 | 
			
		||||
    static SharedMemBuffer const *getDataConst() {
 | 
			
		||||
        return (SharedMemBuffer const *)getShm()->data();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
    static std::atomic<bool> __sharedMemLocked;
 | 
			
		||||
 | 
			
		||||
    static bool sharedMemLocked() {
 | 
			
		||||
        return __sharedMemLocked;
 | 
			
		||||
    }
 | 
			
		||||
    static void setSharedMemLocked() {
 | 
			
		||||
        __sharedMemLocked = true;
 | 
			
		||||
    }
 | 
			
		||||
    static void setSharedMemUnlocked() {
 | 
			
		||||
        __sharedMemLocked = false;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // SHARED_MEM_BUFFER_INCLUDED_H
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define MAXNROF_AO              3
 | 
			
		||||
#define MAXNROF_GENSTR          16
 | 
			
		||||
//#define MAXNROF_GENSTR          16
 | 
			
		||||
#define MAXNROF_CONTR_PORTS     11
 | 
			
		||||
#define MAXNROF_DIports         2
 | 
			
		||||
#define MAXNROF_DOports         2
 | 
			
		||||
@@ -32,9 +32,6 @@ bool indat_isMifareOn();
 | 
			
		||||
void indat_storeMDBisOn(bool isOn);
 | 
			
		||||
bool indat_isMdbOn();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeSlaveSerParams(uint8_t slaveBaudRate, uint8_t NrDataBits,
 | 
			
		||||
                             uint8_t parity, uint8_t NrStopBits);
 | 
			
		||||
 | 
			
		||||
@@ -43,23 +40,16 @@ void epi_getSlaveSerParams(uint8_t *slaveBaudRate, uint8_t *NrDataBits,
 | 
			
		||||
 | 
			
		||||
QString epi_getSlaveParamSTR();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeGenerals(uint8_t genNr, QString text);
 | 
			
		||||
    // 0=HW   1=SW  2=State
 | 
			
		||||
 | 
			
		||||
QString epi_loadGenerals(uint8_t genNr);
 | 
			
		||||
// genNr=0=HW   1=SW  2=State
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeUID(uint8_t *buf8byteUid);
 | 
			
		||||
void gpi_storeUID(uint8_t const *buf8byteUid);
 | 
			
		||||
// buffer size: 8 byte
 | 
			
		||||
 | 
			
		||||
void epi_getUIDdec(uint8_t *buf8byteUid);
 | 
			
		||||
// buffer size: 8 byte
 | 
			
		||||
 | 
			
		||||
QString epi_getUIDstr();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -89,7 +79,7 @@ void epi_getSpecialYearTimeDate(uint16_t *DayOfYear, uint16_t *HoursOfYear, uint
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define MAXNROF_AI              4
 | 
			
		||||
// #define MAXNROF_AI              4
 | 
			
		||||
 | 
			
		||||
void gpi_storeAIs(uint8_t aiNr, uint16_t val);   // rs -> Sdata
 | 
			
		||||
 | 
			
		||||
@@ -138,185 +128,119 @@ void gpi_storeDI_optos(uint8_t indatOpto);
 | 
			
		||||
uint8_t epi_getDI_optos(void);
 | 
			
		||||
    // bit0: opto in 1    1: opto in 2
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_auxIn(uint8_t indatAuxIn);
 | 
			
		||||
    // Aux0...5
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getDI_auxIn(void);
 | 
			
		||||
    // bit0: auxin 1  ...  5: auxin 6
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_ptuWake(uint8_t indat);
 | 
			
		||||
uint8_t gpi_storeDI_auxIn(uint8_t indatAuxIn); // Aux0...5
 | 
			
		||||
uint8_t epi_getDI_auxIn(void);                 // bit0: auxin 1  ...  5: auxin 6
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_ptuWake(bool w);
 | 
			
		||||
bool epi_getDI_ptuWake(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_mbdWake(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_mbdWake(bool w);
 | 
			
		||||
bool epi_getDI_mdbWake(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_prnReady(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_prnReady(bool ready);
 | 
			
		||||
bool epi_getDI_prnReady(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_CoinAttach(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_CoinAttach(bool attach);
 | 
			
		||||
bool epi_getDI_CoinAttach(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_CoinEscrow(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_CoinEscrow(bool ce);
 | 
			
		||||
bool epi_getDI_CoinEscrow(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_mifareCardTapped(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_mifareCardTapped(bool tapped);
 | 
			
		||||
bool epi_getDI_mifareCardTapped(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_modemWake(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_modemWake(bool w);
 | 
			
		||||
bool epi_getDI_modemWake(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_contactPowerIsOn(bool di_contact_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_contactPowerIsOn(bool on);
 | 
			
		||||
bool epi_getDI_contactPwr(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_MifarePowerIsOn(bool di_mifare_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_MifarePowerIsOn(bool on);
 | 
			
		||||
bool epi_getDI_mifarePwr(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_readbackMdbTxD(bool di_rdbkMdbTxd);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_readbackMdbTxD(bool rdbkMdbTxd);
 | 
			
		||||
bool epi_getDI_mdbTxd(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_AuxPowerIsOn(bool di_Aux_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_AuxPowerIsOn(bool on);
 | 
			
		||||
bool epi_getDI_auxPwr(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_GsmPowerIsOn(bool di_gsm_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_GsmPowerIsOn(bool on);
 | 
			
		||||
bool epi_getDI_gsmPwr(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_CreditPowerIsOn(bool di_credit_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_CreditPowerIsOn(bool on);
 | 
			
		||||
bool epi_getDI_creditPwr(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_PrinterPowerIsOn(bool di_printer_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_PrinterPowerIsOn(bool on);
 | 
			
		||||
bool epi_getDI_printerPwr(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_MdbPowerIsOn(bool di_mdb_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_MdbPowerIsOn(bool on);
 | 
			
		||||
bool epi_getDI_mdbPwr(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_rejMot_home(bool di);
 | 
			
		||||
 | 
			
		||||
bool gpi_storeDI_rejMot_home(bool reject);
 | 
			
		||||
bool epi_getDI_rejectMotor_homepos(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_paperLow(uint8_t di);
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeDI_paperLow(uint8_t di);
 | 
			
		||||
uint8_t epi_getDI_npe_sensor(void);
 | 
			
		||||
    // 0: Sensor sees paper 1: no paper 99: off
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//          readback digital outputs
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_mdbRxTst(uint8_t do_mbdRxTst);
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeDO_mdbRxTst(uint8_t do_mbdRxTst);
 | 
			
		||||
bool epi_getDO_mdbRxTestOut(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_motorOutputs(uint8_t Pwr);
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeDO_motorOutputs(uint8_t Pwr);
 | 
			
		||||
uint8_t epi_getDO_motorOuts(void);
 | 
			
		||||
    // bit0: upper lock forward    bit 1 backward
 | 
			
		||||
    // bit2: lower lock forward    bit 3 backward
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_serialSwitch(uint8_t state);
 | 
			
		||||
uint8_t gpi_storeDO_serialSwitch(uint8_t state);
 | 
			
		||||
    // serial drv on/off, Serial mux1, Serial mux2
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getDO_serialSwitch(void);
 | 
			
		||||
    // serial drv on/off, Serial mux1, Serial mux2
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_serialDriverIsOn(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_serialMux1isSetToPrinter(void);
 | 
			
		||||
    // mux1 off: serial is switched to printer
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_serialMux1isSetToModem(void);
 | 
			
		||||
    // mux1 on: serial is switched to modem
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_serialMux2isSetToCredit(void);
 | 
			
		||||
    // mux2 off: serial is switched to credit card terminal
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_serialMux2isSetToMifare(void);
 | 
			
		||||
    // mux2 on: serial is switched to mifare reader
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_ledsAndFan(uint8_t ledState);
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeDO_ledsAndFan(uint8_t ledState);
 | 
			
		||||
bool epi_getDO_led_coin(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_led_front(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_led_ticket(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_led_pin(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_led_start(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_led_inside(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_fan(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_sirenAndRelay(uint8_t sirenRelay);
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeDO_sirenAndRelay(uint8_t sirenRelay);
 | 
			
		||||
bool epi_getDO_sirene(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_relay(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_ptuWake(uint8_t state);
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeDO_ptuWake(uint8_t state);
 | 
			
		||||
bool epi_getDO_ptuWake(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_auxPower(uint8_t pwr);
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeDO_auxPower(uint8_t pwr);
 | 
			
		||||
bool epi_getDO_auxPower(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_coinShutter(uint8_t state);
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeDO_coinShutter(uint8_t state);
 | 
			
		||||
bool epi_getDO_coinShutterOpen(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_coinShutterTest(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_coinEscrow(uint8_t state);
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeDO_coinEscrow(uint8_t state);
 | 
			
		||||
uint8_t epi_getDO_coinEscrow(void);
 | 
			
		||||
    // retval: 1:return flap is open   2:take flap is open    0:closed
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_printerPwrOn(uint8_t state);
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeDO_printerPwrOn(uint8_t state);
 | 
			
		||||
uint8_t epi_getDO_printerPwr(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ---------------------------------------------------------------------------------------------
 | 
			
		||||
// counterchecks, make sure that DC-outputs are correct
 | 
			
		||||
 | 
			
		||||
@@ -363,21 +287,14 @@ bool epi_cntchk_Mot2Fon(void);
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeMdbRecData(uint8_t length, uint8_t *buf);
 | 
			
		||||
    // datif store received mdb data
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getMdbResponse(void);
 | 
			
		||||
     // 0=no response  1=ACK  2=NAK  3=ACK with data
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getMdbRecLength(void);
 | 
			
		||||
    // 0...31
 | 
			
		||||
 | 
			
		||||
uint8_t epi_restoreMdbRecData(uint8_t *buf);
 | 
			
		||||
    // hwapi reads received mdb data from PI
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeMifReaderStateAndCardType(uint8_t *buf);
 | 
			
		||||
uint8_t gpi_storeMifReaderStateAndCardType(uint8_t const *buf);
 | 
			
		||||
 | 
			
		||||
/* data description:
 | 
			
		||||
byte 0: current read state: 0=power off  1=reader-fault 2=ready
 | 
			
		||||
@@ -401,41 +318,24 @@ byte 32: result, always 0
 | 
			
		||||
 | 
			
		||||
uint8_t epi_restoreMifState(uint8_t *buf, uint8_t maxBufferSize);
 | 
			
		||||
    // retval 0=OK 1=error host buffer too small
 | 
			
		||||
 | 
			
		||||
void gpi_storeMifCardData(uint8_t blkNr, uint8_t *receivedData);
 | 
			
		||||
bool gpi_storeMifCardData(uint8_t blkNr, uint8_t const *receivedData);
 | 
			
		||||
    // blkNr=0...11    receivedData[64]
 | 
			
		||||
 | 
			
		||||
uint8_t epi_restoreMifData(uint8_t blkNr, uint8_t *buf, uint8_t maxBufferSize);
 | 
			
		||||
    // blkNr=0...11    return buf[64]
 | 
			
		||||
    // retval: 1=error 0=OK
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define pi_prnStateArraySize    20
 | 
			
		||||
#define pi_prnFontArraySize     20
 | 
			
		||||
 | 
			
		||||
void epi_restorePrinterState(uint8_t *buf);
 | 
			
		||||
 | 
			
		||||
void gpi_storePrinterState(uint8_t *buf);
 | 
			
		||||
void gpi_storePrinterState(uint8_t const *buf);
 | 
			
		||||
 | 
			
		||||
void epi_restorePrinterFonts(uint8_t *buf);
 | 
			
		||||
void gpi_storePrinterFonts(uint8_t const *buf);
 | 
			
		||||
 | 
			
		||||
void gpi_storePrinterFonts(uint8_t *buf);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeMdbState(uint8_t busReady, uint8_t V12on, uint8_t V5on );
 | 
			
		||||
 | 
			
		||||
bool gpi_storeMdbState(bool busReady, bool V12on, bool V5on);
 | 
			
		||||
bool epi_restoreMdbBusReady(void);
 | 
			
		||||
 | 
			
		||||
bool epi_restoreMdbV12Ready(void);
 | 
			
		||||
 | 
			
		||||
bool epi_restoreMdbV5Ready(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeMdbResponse(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void gpi_storeMdbResponse(uint8_t leng, uint8_t const *data);
 | 
			
		||||
void epi_restoreMdbResponse(uint8_t *leng, uint8_t *data);
 | 
			
		||||
    // last received mdb answer (from mdb device)
 | 
			
		||||
    // only needed if a special command was sent directly
 | 
			
		||||
@@ -444,12 +344,9 @@ void epi_restoreMdbResponse(uint8_t *leng, uint8_t *data);
 | 
			
		||||
    // DB2: nr of received (payload) data bytes (apart from ACK, can be 0....34)
 | 
			
		||||
    // DB3...DB38: rec.data (payload)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeEmpSettings(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void gpi_storeEmpSettings(uint8_t leng, uint8_t const *data);
 | 
			
		||||
void epi_restoreEmpSettings(uint8_t *leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
void gpi_storeEmpCoinSignal(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
@@ -463,67 +360,60 @@ void epi_restoreEmpCoinSignal(uint8_t *leng, uint8_t *data);
 | 
			
		||||
void epi_clearEmpCoinSignal();
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define     MEMDEPTH_GOTCOINS       16
 | 
			
		||||
 | 
			
		||||
void gpi_storeEmpCoinSignal(uint8_t leng, uint8_t *data);
 | 
			
		||||
void gpi_storeEmpCoinSignal(uint8_t leng, uint8_t const *data);
 | 
			
		||||
 | 
			
		||||
uint8_t epi_isNewCoinLeft(void);
 | 
			
		||||
    // retval: 0...16 coins left in FIFO
 | 
			
		||||
 | 
			
		||||
void epi_restoreEmpCoinSignal(uint8_t *valid, uint8_t *signal, uint8_t *error, uint16_t *value);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeRbDeviceSettings(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void gpi_storeRbDeviceSettings(uint8_t leng, uint8_t const *data);
 | 
			
		||||
void epi_restoreRbDeviceSettings(uint8_t *leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeMachineIDsettings(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void gpi_storeMachineIDsettings(uint8_t leng, uint8_t const *data);
 | 
			
		||||
void epi_restoreMachineIDsettings(uint8_t *leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void epi_clearCurrentPayment(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeCurrentPayment(uint32_t insertedAmount, uint16_t lastCoinType, uint16_t lastCoinValue);
 | 
			
		||||
 | 
			
		||||
uint32_t epi_CurrentPaymentGetAmount(void);
 | 
			
		||||
 | 
			
		||||
uint16_t epi_CurrentPaymentGetLastCoin(void);
 | 
			
		||||
 | 
			
		||||
bool epi_CurrentPaymentGetAllCoins(uint16_t *types, uint16_t *values);
 | 
			
		||||
    // alle bei diesem Verkauf eingeworfenen Münzen sind gespeichert falls die jmd. braucht
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeWakeSources(uint8_t *receivedData);
 | 
			
		||||
 | 
			
		||||
void gpi_storeWakeSources(uint8_t const *receivedData);
 | 
			
		||||
uint64_t epi_getWakeSources(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeExtendedTime(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void gpi_storeExtendedTime(uint8_t leng, uint8_t const *data);
 | 
			
		||||
void epi_restoreExtendedTime(uint8_t *leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDeviceConditions(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDeviceConditions(uint8_t leng, uint8_t const *data);
 | 
			
		||||
void epi_restoreDeviceConditions(uint8_t *leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDynMachineConditions(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDynMachineConditions(uint8_t leng, uint8_t const *data);
 | 
			
		||||
void epi_restoreDynMachineConditions(uint8_t *leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDCbackupAccNr(uint8_t leng, uint8_t const *data);
 | 
			
		||||
void epi_restoreDCbackupAccNr(uint8_t *leng, uint16_t *accNrs);
 | 
			
		||||
    // return accNrs[0..7]
 | 
			
		||||
 | 
			
		||||
void epi_iniVRstorage(void);
 | 
			
		||||
void gpi_storeVaultRecord(uint8_t blkNr, uint8_t const *data);
 | 
			
		||||
bool epi_checkIfVaultRecordAvailable(void);
 | 
			
		||||
bool epi_restoreVaultRecord(uint16_t *length, uint8_t *buf);
 | 
			
		||||
    // true if completly received
 | 
			
		||||
 | 
			
		||||
void gpi_storeCBlevel(uint32_t amount, uint16_t nrOfCoins);
 | 
			
		||||
 | 
			
		||||
uint32_t epi_getCashBoxContent(void);
 | 
			
		||||
uint16_t epi_getNrOfCoinsInCashBox(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeNewMifareCard(uint8_t typ, uint8_t const *holder);
 | 
			
		||||
 | 
			
		||||
uint8_t epi_mifGetCardType(uint8_t const *holder);
 | 
			
		||||
    //holder[8] = name of card holder
 | 
			
		||||
    // retval Type of MifareCard, 1=upper door, 2=lower door 3=test printer 4=test coins
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,9 @@ uint32_t uchar2ulong(uint8_t Highbyte, uint8_t MHbyte, uint8_t MLbyte, uint8_t L
 | 
			
		||||
 | 
			
		||||
uint8_t  uint2uchar(uint16_t uival, bool getHighB);
 | 
			
		||||
 | 
			
		||||
uint8_t ulong2uchar(uint32_t ulval, uint8_t getBytNr);
 | 
			
		||||
    // getBytNr: 0=LSB  3=MSB
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void delay(uint16_t MilliSec);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user