Merge commit 'f214e0ff43594ebf48a00f8debb96613c307c309'
fetch sources for CashAgentLib 3.3.
This commit is contained in:
		@@ -93,11 +93,179 @@ struct Tprn_hw_state
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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 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;
 | 
			
		||||
 | 
			
		||||
//16
 | 
			
		||||
        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<75>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<75>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];
 | 
			
		||||
// 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;
 | 
			
		||||
 | 
			
		||||
// 64
 | 
			
		||||
 | 
			
		||||
        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
 | 
			
		||||
 | 
			
		||||
        uint8_t	structStart;		// always first!!!
 | 
			
		||||
        uint8_t	ram;				// v
 | 
			
		||||
        uint8_t	intEe;				// v
 | 
			
		||||
        uint8_t	extEe;				// v
 | 
			
		||||
 | 
			
		||||
        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	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	coinSafe;			// v
 | 
			
		||||
        uint8_t   billSafe;			// v
 | 
			
		||||
        uint8_t	voltage;			// v	// 1:11..14V
 | 
			
		||||
        uint8_t   temper;				// v
 | 
			
		||||
 | 
			
		||||
        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;
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class hwinf
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    enum class DownloadResult {OK, ERROR, TIMEOUT, NOP};
 | 
			
		||||
 | 
			
		||||
    virtual ~hwinf() {}
 | 
			
		||||
               
 | 
			
		||||
    
 | 
			
		||||
@@ -110,18 +278,18 @@ public:
 | 
			
		||||
    //      Furthermore the Cashagent-Library answers with status strings about sending and reading result
 | 
			
		||||
    // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$    
 | 
			
		||||
 | 
			
		||||
    virtual void dc_openSerial(int BaudNr, QString BaudStr, QString ComName, uint8_t connect)  const =0;
 | 
			
		||||
    virtual bool dc_openSerial(int BaudNr, QString BaudStr, QString ComName, uint8_t connect) const = 0;
 | 
			
		||||
        // Command: open serial interface
 | 
			
		||||
        // BaudNr:  0:1200   1:9600   2:19200   3:38400   4:57600   5:115200
 | 
			
		||||
        // BaudStr: for exapmle "19200"
 | 
			
		||||
        // ComName: for example "COM48"
 | 
			
		||||
        // connect: 0, 1
 | 
			
		||||
 | 
			
		||||
    virtual void dc_closeSerial(void)  const =0;
 | 
			
		||||
    virtual bool dc_closeSerial(void) const = 0;
 | 
			
		||||
        // Command: close serial interface in order to save power while power down
 | 
			
		||||
        // or if another port must be used
 | 
			
		||||
        
 | 
			
		||||
    virtual bool dc_isPortOpen(void)  const =0;
 | 
			
		||||
    virtual bool dc_isPortOpen(void) const =0;
 | 
			
		||||
        // returns true if port open (don't send unless open. Sending to closed port will crash program)
 | 
			
		||||
                   
 | 
			
		||||
        
 | 
			
		||||
@@ -132,7 +300,10 @@ public:
 | 
			
		||||
    
 | 
			
		||||
    virtual bool test_serialIsOn(void) const =0;      
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
    virtual bool dc_updateDC(QString binFileName,
 | 
			
		||||
                             QString baudrate,
 | 
			
		||||
                             QString comPort) const = 0;
 | 
			
		||||
        // download binary file down into device controller
 | 
			
		||||
                       
 | 
			
		||||
    virtual void dc_autoRequest(bool on)  const =0;
 | 
			
		||||
        // on = true:  select that all READ-Requests are sent automatically 
 | 
			
		||||
@@ -438,11 +609,31 @@ public:
 | 
			
		||||
    virtual void request_ReadbackDeviceSettings() const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void readback_DeviceSettings(uint8_t *length, uint8_t *data) const =0;
 | 
			
		||||
        // refer to DC2 manual for exact content
 | 
			
		||||
        // state 5.5.21: byte[0]=kindOfPrinter   byte[1]=kindOfCoinChecker
 | 
			
		||||
    //               byte[2]=kindOfMifarereadr   byte[3]=suppress sleep mode
 | 
			
		||||
    //               byte[4]=kindOfModem         byte[5]=kind of cc terminal
 | 
			
		||||
                                                      
 | 
			
		||||
/*
 | 
			
		||||
            buf66[0]=devPara.kindOfPrinter;
 | 
			
		||||
            buf66[1]=devPara.kindOfCoinChecker;
 | 
			
		||||
            buf66[2]=devPara.kindOfMifareReader;
 | 
			
		||||
            buf66[3]=devPara.suppressSleepMode;
 | 
			
		||||
            buf66[4]=devPara.kindOfModem;
 | 
			
		||||
            buf66[5]=devPara.kindOfCreditcard;
 | 
			
		||||
            buf66[6]=devPara.CoinEscrow;
 | 
			
		||||
            buf66[7]=devPara.CoinRejectUnit;
 | 
			
		||||
            buf66[8]=devPara.CoinShutter;
 | 
			
		||||
            buf66[9]=devPara.BillAcceptor;
 | 
			
		||||
            buf66[10]=devPara.usevaultLock;
 | 
			
		||||
            buf66[11]=devPara.autoAlarm;
 | 
			
		||||
            buf66[12]=devPara.autoOpen;
 | 
			
		||||
            buf66[13]=devPara.printAccReceipt;
 | 
			
		||||
            buf66[14]=devPara.printDoorReceipt;
 | 
			
		||||
            buf66[15]=devPara.printTokenTicket;
 | 
			
		||||
            uitmp=devPara.VaultFullWarnLevel;
 | 
			
		||||
            buf66[16]=swl_getOneByteFromUint(uitmp, GETLOWBYT);
 | 
			
		||||
            buf66[17]=swl_getOneByteFromUint(uitmp, GETHIGHBYT);
 | 
			
		||||
            uitmp=devPara.VaultFullErrorLevel;
 | 
			
		||||
            buf66[18]=swl_getOneByteFromUint(uitmp, GETLOWBYT);
 | 
			
		||||
            buf66[19]=swl_getOneByteFromUint(uitmp, GETHIGHBYT);
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
    virtual void sendMachineID(uint16_t customerNr, uint16_t machineNr,
 | 
			
		||||
                              uint16_t borough, uint16_t zone,
 | 
			
		||||
@@ -454,8 +645,8 @@ public:
 | 
			
		||||
    // state 5.5.21: byte[0,1]=customer number    byte[2,3]=machine number
 | 
			
		||||
    //               byte[4,5]=borough   byte[6,7]=zone   byte[8,9]=alias name
 | 
			
		||||
    //               byte[10...41]=location
 | 
			
		||||
    // 12.4.23TS still the same
 | 
			
		||||
 | 
			
		||||
// 9
 | 
			
		||||
   
 | 
			
		||||
    // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$    
 | 
			
		||||
    // Printer
 | 
			
		||||
@@ -1042,17 +1233,17 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void bl_rebootDC(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void bl_startBL(void) const =0;
 | 
			
		||||
    virtual void bl_startBL(void) const = 0;
 | 
			
		||||
        // send command within 4s after DC power-on, otherwise bl is left
 | 
			
		||||
 | 
			
		||||
    virtual void bl_checkBL(void) const =0;
 | 
			
		||||
    virtual bool bl_checkBL(void) const = 0;
 | 
			
		||||
        // send command to verify if bl is up
 | 
			
		||||
 | 
			
		||||
    virtual bool bl_isUp(void) const =0;
 | 
			
		||||
        // return true is bl is up and running
 | 
			
		||||
        // also initializes "sendFile"
 | 
			
		||||
 | 
			
		||||
    virtual void bl_sendAddress(u_int16_t blockNumber) const=0;
 | 
			
		||||
    virtual void bl_sendAddress(uint16_t blockNumber) const=0;
 | 
			
		||||
        // send start address, nr of 64byte-block, start with 0
 | 
			
		||||
        // will be sent only for following block-numbers:
 | 
			
		||||
        // 0, 1024, 2048, 3072 and 4096, so basically every 64kByte
 | 
			
		||||
@@ -1064,7 +1255,7 @@ public:
 | 
			
		||||
    virtual void bl_openBinary(void) const=0;
 | 
			
		||||
        // to be used within CashAgent, momentary not processed
 | 
			
		||||
 | 
			
		||||
    virtual void bl_sendDataBlock(uint8_t length, u_int8_t *buffer) const=0;
 | 
			
		||||
    virtual void bl_sendDataBlock(uint8_t length, uint8_t *buffer) const=0;
 | 
			
		||||
    // send 64 byte from bin file
 | 
			
		||||
 | 
			
		||||
    virtual void bl_sendLastBlock(void) const=0;
 | 
			
		||||
@@ -1090,6 +1281,266 @@ public:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ------------------------------------------------------------------------------------
 | 
			
		||||
// 6.4.2023: new functions for coin collection and printing
 | 
			
		||||
//            some new system functions
 | 
			
		||||
// ------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    virtual bool rtc_setTimeDateDirect(struct Trtc_DateTime *DateTime) const=0;
 | 
			
		||||
        // return true if sending, false if cmd-stack is full
 | 
			
		||||
 | 
			
		||||
    virtual bool rtc_getExtendedTime(uint8_t *leng, uint8_t *data) const=0;
 | 
			
		||||
/*
 | 
			
		||||
     buf[0]=GlobTime.Hours;
 | 
			
		||||
    buf[1]=GlobTime.Min;
 | 
			
		||||
    buf[2]=GlobTime.Sec;
 | 
			
		||||
    buf[3]=GlobTime.Year;
 | 
			
		||||
    buf[4]=GlobTime.Month;
 | 
			
		||||
    buf[5]=GlobTime.Day;
 | 
			
		||||
    buf[6]=GlobTime.DOW;
 | 
			
		||||
    buf[7]=' ';                   // immer auf 32bit auff<66>llen sonst Speicherproblem beim Master!
 | 
			
		||||
    uitmp=GlobTime.MinOfDay;
 | 
			
		||||
    buf[8]=swl_getOneByteFromUint(uitmp, 0);
 | 
			
		||||
    buf[9]=swl_getOneByteFromUint(uitmp, 1);
 | 
			
		||||
    buf[10]=' ';
 | 
			
		||||
    buf[11]=' ';
 | 
			
		||||
    ultmp=GlobTime.SecOfDay;
 | 
			
		||||
    buf[12]=swl_getOneByteFromUlong(ultmp, 0);
 | 
			
		||||
    buf[13]=swl_getOneByteFromUlong(ultmp, 1);
 | 
			
		||||
    buf[14]=swl_getOneByteFromUlong(ultmp, 2);
 | 
			
		||||
    buf[15]=swl_getOneByteFromUlong(ultmp, 3);
 | 
			
		||||
 | 
			
		||||
    buf[16]=swl_isLeap(GlobTime.Year);
 | 
			
		||||
    buf[17]=swl_getNextLeapYear(GlobTime.Year);
 | 
			
		||||
    buf[18]=swl_getLastLeapYear(GlobTime.Year);
 | 
			
		||||
    buf[19]=swl_hoursOfThisWeek(GlobTime.DOW, GlobTime.Hours);
 | 
			
		||||
 | 
			
		||||
    uitmp=swl_minutesOfThisWeek(GlobTime.DOW, GlobTime.Hours, GlobTime.Min);
 | 
			
		||||
    buf[20]=swl_getOneByteFromUint(uitmp, 0);    // 0=low byte   1=high byte
 | 
			
		||||
    buf[21]=swl_getOneByteFromUint(uitmp, 1);
 | 
			
		||||
 | 
			
		||||
    uitmp=swl_hoursOfThisMonth(GlobTime.Day, GlobTime.Hours);
 | 
			
		||||
    buf[22]=swl_getOneByteFromUint(uitmp, 0);
 | 
			
		||||
    buf[23]=swl_getOneByteFromUint(uitmp, 1);
 | 
			
		||||
 | 
			
		||||
    uitmp=swl_minutesOfThisMonth(GlobTime.Day, GlobTime.Hours, GlobTime.Min);
 | 
			
		||||
    buf[24]=swl_getOneByteFromUint(uitmp, 0);
 | 
			
		||||
    buf[25]=swl_getOneByteFromUint(uitmp, 1);
 | 
			
		||||
 | 
			
		||||
    uitmp=swl_GetDaysOfYear(GlobTime.Year, GlobTime.Month, GlobTime.Day);
 | 
			
		||||
    buf[26]=swl_getOneByteFromUint(uitmp, 0);
 | 
			
		||||
    buf[27]=swl_getOneByteFromUint(uitmp, 1);
 | 
			
		||||
 | 
			
		||||
    uitmp=swl_GetHoursOfYear(GlobTime.Year, GlobTime.Month, GlobTime.Day, GlobTime.Hours);
 | 
			
		||||
    buf[28]=swl_getOneByteFromUint(uitmp, 0);
 | 
			
		||||
    buf[29]=swl_getOneByteFromUint(uitmp, 1);
 | 
			
		||||
    buf[30]=0;
 | 
			
		||||
    buf[31]=0;
 | 
			
		||||
    ultmp= swl_GetMinutesOfYear(GlobTime.Year, GlobTime.Month, GlobTime.Day,
 | 
			
		||||
                                GlobTime.Hours, GlobTime.Min);
 | 
			
		||||
    buf[32]=swl_getOneByteFromUlong(ultmp, 0);
 | 
			
		||||
    buf[33]=swl_getOneByteFromUlong(ultmp, 1);
 | 
			
		||||
    buf[34]=swl_getOneByteFromUlong(ultmp, 2);
 | 
			
		||||
    buf[35]=swl_getOneByteFromUlong(ultmp, 3);
 | 
			
		||||
 | 
			
		||||
    buf[36]=rtc_getSqwaveSettings();
 | 
			
		||||
    buf[37]=0;
 | 
			
		||||
    buf[38]=0;
 | 
			
		||||
    buf[39]=0;
 | 
			
		||||
 | 
			
		||||
    ultmp= 0;       // Minutes of the Millenium
 | 
			
		||||
    buf[40]=swl_getOneByteFromUlong(ultmp, 0);
 | 
			
		||||
    buf[41]=swl_getOneByteFromUlong(ultmp, 1);
 | 
			
		||||
    buf[42]=swl_getOneByteFromUlong(ultmp, 2);
 | 
			
		||||
    buf[43]=swl_getOneByteFromUlong(ultmp, 3);
 | 
			
		||||
 | 
			
		||||
    dc2prot_setReadData(44, buf);
 | 
			
		||||
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
    virtual bool sys_runCompleteTest(void) const=0;
 | 
			
		||||
        // warning: lasts 20s in one pace
 | 
			
		||||
        // return true if sending, false if cmd-stack is full
 | 
			
		||||
 | 
			
		||||
    virtual bool sys_ready4sending(void) const=0;
 | 
			
		||||
    // return true if a Json-file can be sent
 | 
			
		||||
 | 
			
		||||
    virtual bool sys_sendJsonFileToDc(uint8_t kindOfFile, uint8_t nrOfTemplate, uint8_t *content ) const=0;
 | 
			
		||||
        // kindOfFile: 1=config, 2=device, 3=cash, 4=serial, 5=time, 6=printer
 | 
			
		||||
        //      nrOfTemplate=1...32 if kindOfFile==6
 | 
			
		||||
        //      content = content of the Json file, max 800byte ascii signs
 | 
			
		||||
        // file is 0-terminated
 | 
			
		||||
        // return true if sending, false if cmd-stack is full
 | 
			
		||||
 | 
			
		||||
    virtual bool prn_sendDynamicPrnValues(uint8_t *dynPrnVal ) const=0;
 | 
			
		||||
        // dynPrnVal = array of 8 Variables with 8 byte each, come as ascii string
 | 
			
		||||
        //            like:     char prn_dynPrnVal[8][8];
 | 
			
		||||
        // return true if sending, false if cmd-stack is full
 | 
			
		||||
 | 
			
		||||
    virtual bool prn_printTemplate(uint8_t nrOftemplate) const=0;
 | 
			
		||||
        // print one of the templates loaded by Json prior
 | 
			
		||||
        // nr = 1..32
 | 
			
		||||
        // return true if sending, false if cmd-stack is full
 | 
			
		||||
 | 
			
		||||
        virtual void log_getHoldAccountNumbers(uint32_t *accNr ) const=0;
 | 
			
		||||
        // returns all acc nrs of the backuped vault records
 | 
			
		||||
        // use: uint32_t backupedAccNumbers[8]
 | 
			
		||||
 | 
			
		||||
    virtual bool log_selectVaultRecord(uint16_t accountNr ) const=0;
 | 
			
		||||
        // return true if sending, false if cmd-stack is full
 | 
			
		||||
 | 
			
		||||
//request, isAvailable
 | 
			
		||||
virtual void log_getVaultRecord(struct T_vaultRecord *retVR) const=0;
 | 
			
		||||
        // which was selected by: log_selectVaultRecord()
 | 
			
		||||
        // to be forwarded to Ismas
 | 
			
		||||
 | 
			
		||||
    virtual bool prn_printAccountReceipt(void) const=0;
 | 
			
		||||
        // return true if sending to DC OK, false if cmd-stack is full
 | 
			
		||||
 | 
			
		||||
    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 uint32_t getInsertedAmount(void) const=0;
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t getLastInsertedCoin(void) const=0;
 | 
			
		||||
 | 
			
		||||
    virtual bool getAllInsertedCoins(uint16_t *types, uint16_t *values) const=0;
 | 
			
		||||
        // all inserted coins (max 64) since "cash_startPayment"
 | 
			
		||||
 | 
			
		||||
    virtual bool cash_cancelPayment(void) const=0;
 | 
			
		||||
        // and return coins
 | 
			
		||||
 | 
			
		||||
    virtual bool cash_stopPayment(void) const=0;
 | 
			
		||||
        // and keep coins in escrow
 | 
			
		||||
 | 
			
		||||
    // after ticket/goods issue:
 | 
			
		||||
    virtual bool vend_success(void) const=0;
 | 
			
		||||
        // conclude payment process, encash all inserted coins to vault. Printing was successful
 | 
			
		||||
        // if possible return change
 | 
			
		||||
 | 
			
		||||
    virtual bool vend_failed(void) const=0;
 | 
			
		||||
        // conclude payment process and return all inserted coins
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
    /*
 | 
			
		||||
 | 
			
		||||
    outBuf[0]=modCond.ram;
 | 
			
		||||
    outBuf[1]=modCond.intEe;
 | 
			
		||||
    outBuf[2]=modCond.extEe;
 | 
			
		||||
    outBuf[3]=modCond.rtc;
 | 
			
		||||
    outBuf[4]=modCond.boardHw;
 | 
			
		||||
    outBuf[5]=modCond.printer;
 | 
			
		||||
    outBuf[6]=modCond.modem;
 | 
			
		||||
    outBuf[7]=modCond.signal;
 | 
			
		||||
    outBuf[8]=modCond.regist;
 | 
			
		||||
    outBuf[9]=modCond.mdbBus;
 | 
			
		||||
    outBuf[10]=modCond.coinChecker;
 | 
			
		||||
    outBuf[11]=modCond.coinEscrow;
 | 
			
		||||
    outBuf[12]=modCond.mifareReader;
 | 
			
		||||
    outBuf[13]=modCond.creditTerm;
 | 
			
		||||
    outBuf[14]=modCond.coinReject;
 | 
			
		||||
    outBuf[15]=modCond.coinSafe;
 | 
			
		||||
    outBuf[16]=modCond.billSafe;
 | 
			
		||||
    outBuf[17]=modCond.voltage;
 | 
			
		||||
    outBuf[18]=modCond.temper;
 | 
			
		||||
    outBuf[19]=modCond.poweronTest;
 | 
			
		||||
    outBuf[20]=modCond.doorState;
 | 
			
		||||
    outBuf[21]=modCond.doorWasOpened;
 | 
			
		||||
    outBuf[22]=modCond.changer;
 | 
			
		||||
    outBuf[23]=modCond.coinBlocker;
 | 
			
		||||
    outBuf[24]=modCond.billReader;
 | 
			
		||||
    outBuf[25]=modCond.ResetReason;
 | 
			
		||||
    outBuf[26]=modCond.allModulesChecked;
 | 
			
		||||
    outBuf[27]=modCond.alarmState;
 | 
			
		||||
    outBuf[28]=0;
 | 
			
		||||
    outBuf[29]=0;
 | 
			
		||||
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    //virtual void sys_getDynMachineConditions(struct T_dynamicCondition *dynMachCond) const=0;
 | 
			
		||||
    virtual void sys_getDynMachineConditions(uint8_t *leng, uint8_t *data) const=0;
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
    outBuf[pBuf++]=dynCond.allDoorsDebounced;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.openedAuthorized;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.CBinDebounced;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.upperDoor;
 | 
			
		||||
 | 
			
		||||
    outBuf[pBuf++]=dynCond.middleDoor;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.lowerDoor;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.coinBox;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.billBox;
 | 
			
		||||
 | 
			
		||||
    outBuf[pBuf++]=dynCond.modeAbrech;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.onAlarm;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.nowCardTest;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.nowPayment;
 | 
			
		||||
 | 
			
		||||
    outBuf[pBuf++]=dynCond.lastMifCardType;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.lastSDoorState;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.lastVDoorState;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.lastCBstate;
 | 
			
		||||
 | 
			
		||||
    outBuf[pBuf++]=dynCond.paymentInProgress;
 | 
			
		||||
    outBuf[pBuf++]=0;
 | 
			
		||||
    uitmp=dynCond.U_Batt;
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUint(uitmp, GETLOWBYT);
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUint(uitmp, GETHIGHBYT);
 | 
			
		||||
    uitmp=dynCond.Temperatur;
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUint(uitmp, GETLOWBYT);
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUint(uitmp, GETHIGHBYT);
 | 
			
		||||
 | 
			
		||||
    uitmp=dynCond.nrCoinsInBox;	// send seperate also
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUint(uitmp, GETLOWBYT);
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUint(uitmp, GETHIGHBYT);
 | 
			
		||||
 | 
			
		||||
    ultmp=dynCond.amountInBox;	// send seperate also
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUlong(ultmp, GETLOWESTBYT);
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUlong(ultmp, GETLOWMID);
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUlong(ultmp, GETHIGHMID);
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUlong(ultmp, GETHIGHESTBYT);
 | 
			
		||||
 | 
			
		||||
    ultmp=dynCond.totalTransVolume;
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUlong(ultmp, GETLOWESTBYT);
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUlong(ultmp, GETLOWMID);
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUlong(ultmp, GETHIGHMID);
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUlong(ultmp, GETHIGHESTBYT);
 | 
			
		||||
 | 
			
		||||
    ultmp=dynCond.totalNrOfVends;
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUlong(ultmp, GETLOWESTBYT);
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUlong(ultmp, GETLOWMID);
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUlong(ultmp, GETHIGHMID);
 | 
			
		||||
    outBuf[pBuf++]=swl_getOneByteFromUlong(ultmp, GETHIGHESTBYT);
 | 
			
		||||
// 36
 | 
			
		||||
    outBuf[pBuf++]=dynCond.jsonValid_config;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.jsonValid_device;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.jsonValid_cash;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.jsonValid_print;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.jsonValid_serial;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.jsonValid_time;
 | 
			
		||||
    outBuf[pBuf++]=dynCond.lastFileType;
 | 
			
		||||
    outBuf[pBuf++]=0;
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1103,8 +1554,15 @@ public:
 | 
			
		||||
//                           mif_getCardDataDec(uint16_t fromAddr, uint16_t toAddr, uint8_t *buf, uint16_t bufferSize) 
 | 
			
		||||
//                            mif_getCardDataStr(bool useHexFormat, char seperator)    
 | 
			
		||||
 | 
			
		||||
// 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
 | 
			
		||||
 | 
			
		||||
//#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.Psa2020.software.HWapi/3.1"
 | 
			
		||||
 | 
			
		||||
Q_DECLARE_INTERFACE(hwinf, HWINF_iid)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user