Merge from master-branch
This commit is contained in:
		
							
								
								
									
										601
									
								
								include/shared_mem_buffer.h.new
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										601
									
								
								include/shared_mem_buffer.h.new
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,601 @@
 | 
			
		||||
#ifndef SHARED_MEM_BUFFER_INCLUDED_H
 | 
			
		||||
#define SHARED_MEM_BUFFER_INCLUDED_H
 | 
			
		||||
 | 
			
		||||
#include <cinttypes>
 | 
			
		||||
#include <atomic>
 | 
			
		||||
 | 
			
		||||
#include <QSharedMemory>
 | 
			
		||||
#include <QtGlobal>
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
bool shdMem_firstUse(void);
 | 
			
		||||
 | 
			
		||||
// Vorsicht: im shared memory ist kein QString erlaubt!!!!!!!!!!!!!!!!!!!!!!
 | 
			
		||||
//    nur standard C Typen!!!!!!
 | 
			
		||||
//    also auch kein QByteArray o.ä.
 | 
			
		||||
 | 
			
		||||
// Vorsicht: Zugriffe auf Comport NICHT ins shared mem --> Absturz!!!!
 | 
			
		||||
 | 
			
		||||
struct SharedMem
 | 
			
		||||
{
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_1;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // ------------------ Comport Control --------------------------------
 | 
			
		||||
    bool     rs_portIsOpen;
 | 
			
		||||
    bool     AutoEmissionOn;
 | 
			
		||||
    bool     Sdata_serialTestResult;
 | 
			
		||||
    uint8_t  Sdata_pProtResultOk;
 | 
			
		||||
    uint16_t Sdata_receivedDataLength;
 | 
			
		||||
    uint8_t  Sdata_receivedDataBlock[64];
 | 
			
		||||
    uint8_t  ndbs, pari, nsb, br;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_2;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t  Sdata_lastResult;
 | 
			
		||||
    uint8_t  Sdata_OverallResult;
 | 
			
		||||
    bool     Sdata_startSV;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_3;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // ------------------ Data INPUT --------------------------------
 | 
			
		||||
 | 
			
		||||
    bool indat_savePrnPwr;
 | 
			
		||||
    bool indat_saveMifPwr;
 | 
			
		||||
    bool indat_MdbIsOn;
 | 
			
		||||
    //QString indat_HWversion;
 | 
			
		||||
    //QString indat_SWversion;
 | 
			
		||||
    //QString indat_DCstate;
 | 
			
		||||
 | 
			
		||||
    #define versionBufferLen   32
 | 
			
		||||
    char indat_HWversion[versionBufferLen];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_4;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    char indat_SWversion[versionBufferLen];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_5;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    char indat_DCstate[versionBufferLen];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_6;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    struct Sdata
 | 
			
		||||
    {
 | 
			
		||||
        uint64_t slaveUID;
 | 
			
		||||
        uint8_t UIDstr[8];
 | 
			
		||||
    } Sdata;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_7;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_8;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    #define MAXNROF_AI              4
 | 
			
		||||
    uint16_t   AI_val[MAXNROF_AI];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_9;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    #define MAXNROF_MEASURE         4
 | 
			
		||||
    uint32_t   Sdata_measurement[MAXNROF_MEASURE];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_10;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t di_doorSwitch;
 | 
			
		||||
    uint8_t di_vaultSwitch;
 | 
			
		||||
    uint8_t di_lockSwitch;
 | 
			
		||||
    uint8_t di_opto;
 | 
			
		||||
    uint8_t di_aux;
 | 
			
		||||
    bool di_wakeFromPtu;
 | 
			
		||||
    bool di_wakeFromMdb;
 | 
			
		||||
    bool di_PrnReady;
 | 
			
		||||
    bool di_CoinAttach;
 | 
			
		||||
    bool di_CoinEscrowOpen;
 | 
			
		||||
    bool di_mifCardTap;
 | 
			
		||||
    bool di_wakeFromModem;
 | 
			
		||||
    bool di_contactPwrOn;
 | 
			
		||||
    bool di_mifarePwrOn;
 | 
			
		||||
    bool di_rdbk_mdbTxd;
 | 
			
		||||
    bool di_AuxPwrOn;
 | 
			
		||||
    bool di_gsmPwrOn;
 | 
			
		||||
    bool di_creditPwrOn;
 | 
			
		||||
    bool di_printerPwrOn;
 | 
			
		||||
    bool di_mdbPwrOn;
 | 
			
		||||
    bool di_rejMot_home;
 | 
			
		||||
    uint8_t di_npe_sensor;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_11;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t do_mbdRxTst;
 | 
			
		||||
    uint8_t do_motorBits;
 | 
			
		||||
    uint8_t do_serialSwitch;
 | 
			
		||||
    uint8_t do_ledsAndFan;
 | 
			
		||||
    uint8_t do_laermUndRelay;
 | 
			
		||||
    uint8_t do_ptuWake;
 | 
			
		||||
    uint8_t do_auxPower;
 | 
			
		||||
    uint8_t do_coinShutter;
 | 
			
		||||
    uint8_t do_coinEscrow;
 | 
			
		||||
    uint8_t do_printerPower;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_12;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    //#define NROFMIFSTATEBYTES   40
 | 
			
		||||
    //uint8_t Sdata_MIF_STATE[NROFMIFSTATEBYTES];
 | 
			
		||||
    uint8_t Sdata_MIF_DATA[64];
 | 
			
		||||
    //uint8_t mif_cardType;
 | 
			
		||||
    //uint8_t mif_cardHolder[8];
 | 
			
		||||
    uint8_t Sdata_MIF_ATB[64];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_13;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    #define pi_prnStateArraySize    20
 | 
			
		||||
    uint8_t Sdata_PRN_STATE[pi_prnStateArraySize];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_14;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    #define pi_prnFontArraySize     20
 | 
			
		||||
    uint8_t Sdata_PRN_FONTS[pi_prnFontArraySize];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_15;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    bool Sdata_mdb_busRdy;
 | 
			
		||||
    bool Sdata_mdb_V12on;
 | 
			
		||||
    bool Sdata_mdb_V5on;
 | 
			
		||||
 | 
			
		||||
    uint8_t Sdata_mdbNrOfRecData;
 | 
			
		||||
    uint8_t Sdata_RecBuff[40];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_16;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t Sdata_empNrOfsettings;
 | 
			
		||||
    uint8_t Sdata_emp_settingsBuff[66];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_17;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    struct T_coin
 | 
			
		||||
    {
 | 
			
		||||
        uint8_t valid;
 | 
			
		||||
        uint8_t signal;
 | 
			
		||||
        uint8_t error;
 | 
			
		||||
        uint8_t pad;
 | 
			
		||||
        uint16_t value;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    #define     MEMDEPTH_GOTCOINS       16
 | 
			
		||||
    struct T_coin gotCoin[MEMDEPTH_GOTCOINS];
 | 
			
		||||
    uint8_t ctr_gotCoin;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_18;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t Sdata_NrOfDeviceSetting;
 | 
			
		||||
    uint8_t Sdata_DeviceSettingBuff[66];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_19;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t SizeMachineIDBuff;
 | 
			
		||||
    uint8_t MachineIDBuff[66];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_20;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint32_t store_insertedAmount;
 | 
			
		||||
    uint16_t store_lastCoinType[64];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_21;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint16_t store_lastCoinValue[64];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_22;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t  p_lastCoin;
 | 
			
		||||
    char     store_curPayNewCoin;
 | 
			
		||||
 | 
			
		||||
    uint64_t stor_wakSrc;
 | 
			
		||||
    uint8_t  stor_reason;
 | 
			
		||||
 | 
			
		||||
    uint8_t store_rbDevParamLen;
 | 
			
		||||
    uint8_t store_rbDevParams[66];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_23;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t store_deviceCondLen;
 | 
			
		||||
    uint8_t store_deviceCond[66];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_24;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t store_machCondLen;
 | 
			
		||||
    uint8_t store_machCond[66];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_25;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t  store_DcBackupNrOfAccNr;
 | 
			
		||||
    uint16_t store_DcBackupAccNr[16];    // z.Z. nur 8
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_26;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    #define PI_SIZOFVAULTRECORD    400
 | 
			
		||||
    uint8_t store_gotNrBlocksOfVaultRec;
 | 
			
		||||
    uint8_t store_vaultrecord[PI_SIZOFVAULTRECORD];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_27;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint32_t store_amount;
 | 
			
		||||
    uint16_t store_nrOfCoins;
 | 
			
		||||
 | 
			
		||||
    bool store_DcDataAreValid;
 | 
			
		||||
 | 
			
		||||
    uint8_t storeDCdynPrinterData[64];
 | 
			
		||||
    uint8_t DCdynPrinterDataActual;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_28;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint16_t store_DCNextAccountNumber;
 | 
			
		||||
 | 
			
		||||
    uint16_t storeMifCardTypDataLen;
 | 
			
		||||
    uint8_t  storeMcardTypData[64];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_29;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // new from 6.9.23:
 | 
			
		||||
    #define RAW_BL_DATALEN      150
 | 
			
		||||
    uint8_t Sdata_rawData[RAW_BL_DATALEN];
 | 
			
		||||
    uint8_t Sdata_LengthRawData;
 | 
			
		||||
 | 
			
		||||
#define  numberOfJsons     36
 | 
			
		||||
#define  versionStringLength    16
 | 
			
		||||
    char    store_jsonVersion[versionStringLength][numberOfJsons];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_30;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t Sdata_changeResult;
 | 
			
		||||
    uint32_t Sdata_changedAmount;
 | 
			
		||||
    uint8_t  store_tubeLev[64];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_31;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t  store_bnaParameter[64];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_32;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t  store_bnaCollect[8];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_33;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t  store_bnaContent[64];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_34;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // Mitteilung von Hwapi zu Datif:
 | 
			
		||||
    bool    Sdata_coinPaymentNow;
 | 
			
		||||
    bool    Sdata_bootloadingNow;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ------------------ Data OUTPUT --------------------------------
 | 
			
		||||
 | 
			
		||||
    // sendWRcmd.cpp
 | 
			
		||||
    #define CMDSTACKDEPTH   16
 | 
			
		||||
    uint16_t nextAsynchsendCmd0[CMDSTACKDEPTH];
 | 
			
		||||
    uint8_t  nrOfCmdsInQueue;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_35;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    #define CMD4STACKDEPTH   8
 | 
			
		||||
    uint16_t    nextAsynchsendCmd4[CMD4STACKDEPTH];
 | 
			
		||||
    uint8_t     nextCmd4para1[CMD4STACKDEPTH];
 | 
			
		||||
    uint8_t     nextCmd4para2[CMD4STACKDEPTH];
 | 
			
		||||
    uint8_t     nextCmd4para3[CMD4STACKDEPTH];
 | 
			
		||||
    uint8_t     nextCmd4para4[CMD4STACKDEPTH];
 | 
			
		||||
    uint8_t     nrOfCmds4InQueue;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_36;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    #define CMD8STACKDEPTH   4
 | 
			
		||||
    uint16_t  nextAsynchsendCmd8[CMD8STACKDEPTH];
 | 
			
		||||
    uint8_t   nextCmd8para1[CMD8STACKDEPTH];
 | 
			
		||||
    uint8_t   nextCmd8para2[CMD8STACKDEPTH];
 | 
			
		||||
    uint16_t  nextCmd8para3[CMD8STACKDEPTH];
 | 
			
		||||
    uint32_t  nextCmd8para4[CMD8STACKDEPTH];
 | 
			
		||||
    uint8_t   nrOfCmds8InQueue;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_37;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    #define SENDASYDAT_BUFFSIZE     200
 | 
			
		||||
    uint8_t sendAsynchDataBuf[SENDASYDAT_BUFFSIZE]; // no stack, only ONE buffer
 | 
			
		||||
    uint8_t sendAsyDatLen;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_38;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    #define MDBSEND_BUFFSIZE    64
 | 
			
		||||
    uint8_t     Sdata_mdbSendBuffer[MDBSEND_BUFFSIZE];
 | 
			
		||||
    uint8_t     Sdata_mdbSendLen;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_39;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t     prnDataParameters[4];
 | 
			
		||||
    uint8_t     prnDataBufferUser;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_40;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ONE printer doc consists of 20 x 64 byte
 | 
			
		||||
    #define MAXNROF_PRNBYTES   64
 | 
			
		||||
    #define MAXNROF_PRNBLOCKS  20
 | 
			
		||||
    char        Sdata_PRN_TEXT[MAXNROF_PRNBLOCKS][MAXNROF_PRNBYTES];
 | 
			
		||||
    uint8_t     pPrnDataBuff;        // points to next PRINTER_BLOCK
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_41;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    //#define     FDCMD_STACKDEPTH    16      // up to 1024 byte
 | 
			
		||||
    #define     FDCMD_STACKDEPTH    32      // up to 2048 byte
 | 
			
		||||
    // header
 | 
			
		||||
    uint8_t nextFDwrCmd[FDCMD_STACKDEPTH];
 | 
			
		||||
    uint8_t nextFDrdCmd[FDCMD_STACKDEPTH];
 | 
			
		||||
    uint8_t nextFDblkNr[FDCMD_STACKDEPTH];
 | 
			
		||||
    uint8_t nextFDshort[FDCMD_STACKDEPTH];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_42;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // short data
 | 
			
		||||
    uint8_t  nextFDpara1[FDCMD_STACKDEPTH];
 | 
			
		||||
    uint8_t  nextFDpara2[FDCMD_STACKDEPTH];
 | 
			
		||||
    uint8_t  nextFDpara3[FDCMD_STACKDEPTH];
 | 
			
		||||
    uint8_t  nextFDpara4[FDCMD_STACKDEPTH];
 | 
			
		||||
    // long data:
 | 
			
		||||
    uint8_t longFDlength[FDCMD_STACKDEPTH];
 | 
			
		||||
    uint8_t longFDpara[FDCMD_STACKDEPTH][64];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_43;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    uint8_t  p_nextFDcmdsInQueue;
 | 
			
		||||
 | 
			
		||||
    // download of device controller and json files
 | 
			
		||||
    struct DCDownload {
 | 
			
		||||
        enum class FILE_INDEX {
 | 
			
		||||
            DC_BINARY = 0, DC2C_CASH = 1, DC2C_CONF = 2, DC2C_SERIAL=3,
 | 
			
		||||
            DC2C_PRINT_01, DC2C_PRINT_02, DC2C_PRINT_03, DC2C_PRINT_04,
 | 
			
		||||
            DC2C_PRINT_05, DC2C_PRINT_06, DC2C_PRINT_07, DC2C_PRINT_08,
 | 
			
		||||
            DC2C_PRINT_09, DC2C_PRINT_10, DC2C_PRINT_11, DC2C_PRINT_12,
 | 
			
		||||
            DC2C_PRINT_13, DC2C_PRINT_14, DC2C_PRINT_15, DC2C_PRINT_16,
 | 
			
		||||
            DC2C_PRINT_17, DC2C_PRINT_18, DC2C_PRINT_19, DC2C_PRINT_20,
 | 
			
		||||
            DC2C_PRINT_21, DC2C_PRINT_22, DC2C_PRINT_23, DC2C_PRINT_24,
 | 
			
		||||
            DC2C_PRINT_25, DC2C_PRINT_26, DC2C_PRINT_27, DC2C_PRINT_28,
 | 
			
		||||
            DC2C_PRINT_29, DC2C_PRINT_30, DC2C_PRINT_31, DC2C_PRINT_32
 | 
			
		||||
        };
 | 
			
		||||
        char m_filename[(int)FILE_INDEX::DC2C_PRINT_32][512];
 | 
			
		||||
        std::atomic_ushort m_totalBlocks;
 | 
			
		||||
        std::atomic_ushort m_currentblockNumber;
 | 
			
		||||
        std::atomic_bool m_requested{false};
 | 
			
		||||
        std::atomic_bool m_running{false};
 | 
			
		||||
        std::atomic_bool m_finished{false};
 | 
			
		||||
    } m_downLoadDC;
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_44;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // meta-data
 | 
			
		||||
    char os_release[64];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_45;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    char date_of_creation[32];
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_46;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    char creator[128]; // name of application plus pid
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_47;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    static QSharedMemory *getShm(std::size_t s = 0);
 | 
			
		||||
 | 
			
		||||
    static SharedMem *getData()
 | 
			
		||||
    {
 | 
			
		||||
        Q_ASSERT_X(getShm()->data() != nullptr, "pointer access", "nullptr");
 | 
			
		||||
        return (SharedMem *)getShm()->data();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static SharedMem const *getDataConst()
 | 
			
		||||
    {
 | 
			
		||||
        Q_ASSERT_X(getShm()->data() != nullptr, "pointer access", "nullptr");
 | 
			
		||||
        return (SharedMem const *)getShm()->data();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
//    static SharedMemBuffer *write()
 | 
			
		||||
    static SharedMem *write()
 | 
			
		||||
    {
 | 
			
		||||
        Q_ASSERT_X(getShm()->data() != nullptr, "pointer access", "nullptr");
 | 
			
		||||
        return (SharedMem *)getShm()->data();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
//    static SharedMemBuffer const *read()
 | 
			
		||||
    static SharedMem const *read()
 | 
			
		||||
    {
 | 
			
		||||
        Q_ASSERT_X(getShm()->data() != nullptr, "pointer access", "nullptr");
 | 
			
		||||
        return (SharedMem const *)getShm()->data();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    bool thisIsTheFirstUse(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
    char mem_guard_0;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    static void check_mem_guards() {
 | 
			
		||||
#ifndef QT_NO_DEBUG
 | 
			
		||||
        static const char memcmp_array[48] = {0,};
 | 
			
		||||
        char mem[48];
 | 
			
		||||
 | 
			
		||||
        Q_ASSERT_X(getShm()->data() != nullptr, "pointer access", "nullptr");
 | 
			
		||||
        SharedMem const *d = (SharedMem const *)getShm()->data();
 | 
			
		||||
 | 
			
		||||
        mem[0] = d->mem_guard_0;
 | 
			
		||||
        mem[1] = d->mem_guard_1; mem[2] = d->mem_guard_2; mem[3] = d->mem_guard_3;
 | 
			
		||||
        mem[4] = d->mem_guard_4; mem[5] = d->mem_guard_5; mem[6] = d->mem_guard_6;
 | 
			
		||||
        mem[7] = d->mem_guard_7; mem[8] = d->mem_guard_8; mem[9] = d->mem_guard_9;
 | 
			
		||||
 | 
			
		||||
        mem[10] = d->mem_guard_10;
 | 
			
		||||
        mem[11] = d->mem_guard_11; mem[12] = d->mem_guard_12; mem[13] = d->mem_guard_13;
 | 
			
		||||
        mem[14] = d->mem_guard_14; mem[15] = d->mem_guard_15; mem[16] = d->mem_guard_16;
 | 
			
		||||
        mem[17] = d->mem_guard_17; mem[18] = d->mem_guard_18; mem[19] = d->mem_guard_19;
 | 
			
		||||
 | 
			
		||||
        mem[20] = d->mem_guard_20;
 | 
			
		||||
        mem[21] = d->mem_guard_21; mem[22] = d->mem_guard_22; mem[23] = d->mem_guard_23;
 | 
			
		||||
        mem[24] = d->mem_guard_24; mem[25] = d->mem_guard_25; mem[26] = d->mem_guard_26;
 | 
			
		||||
        mem[27] = d->mem_guard_27; mem[28] = d->mem_guard_28; mem[29] = d->mem_guard_29;
 | 
			
		||||
 | 
			
		||||
        mem[30] = d->mem_guard_30;
 | 
			
		||||
        mem[31] = d->mem_guard_31; mem[32] = d->mem_guard_32; mem[33] = d->mem_guard_33;
 | 
			
		||||
        mem[34] = d->mem_guard_34; mem[35] = d->mem_guard_35; mem[36] = d->mem_guard_36;
 | 
			
		||||
        mem[37] = d->mem_guard_37; mem[38] = d->mem_guard_38; mem[39] = d->mem_guard_39;
 | 
			
		||||
 | 
			
		||||
        mem[40] = d->mem_guard_40;
 | 
			
		||||
        mem[41] = d->mem_guard_41; mem[42] = d->mem_guard_42; mem[43] = d->mem_guard_43;
 | 
			
		||||
        mem[44] = d->mem_guard_44; mem[45] = d->mem_guard_45; mem[46] = d->mem_guard_46;
 | 
			
		||||
        mem[47] = d->mem_guard_47;
 | 
			
		||||
 | 
			
		||||
        if (memcmp(mem, memcmp_array, sizeof(memcmp_array))) {
 | 
			
		||||
            qCritical() << QByteArray(mem, sizeof(memcmp_array)).toHex(':');
 | 
			
		||||
            for (uint i = 0; i < sizeof(memcmp_array); ++i) {
 | 
			
		||||
                fprintf(stderr, "%02d -> %02x", i, (unsigned char)mem[i]);
 | 
			
		||||
            } fprintf(stderr, "\n");
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // SHARED_MEM_BUFFER_INCLUDED_H
 | 
			
		||||
		Reference in New Issue
	
	Block a user