Use new interface file.
This commit is contained in:
		@@ -344,7 +344,41 @@ struct T_devices
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct T_chg_Tub
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    uint8_t  tubeLevel[8];      // [0]=nr coins of lowest value
 | 
			
		||||
    uint8_t  tubeFull[8];       // 1=full  0 else
 | 
			
		||||
    uint16_t tubeValues[8];     // in cent [0]=lowest value 5c or 10cent
 | 
			
		||||
    uint16_t tubeFilled[8];     // nr of every coin inserted
 | 
			
		||||
    uint16_t tubeDispens[8];     // nr of every coin dispensed
 | 
			
		||||
    // 64 byte
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct T_changer
 | 
			
		||||
{
 | 
			
		||||
    // Fixdata from Coin Changer
 | 
			
		||||
    uint8_t setup;  	// always 1
 | 
			
		||||
    uint8_t state;  	// step of state machine
 | 
			
		||||
        // 0..12 like EMP, 13...30 for coin dispense
 | 
			
		||||
 | 
			
		||||
    uint8_t level;      // mdb-level, always 3
 | 
			
		||||
    uint16_t countryCode;
 | 
			
		||||
    uint8_t scale;
 | 
			
		||||
    uint8_t decimals;
 | 
			
		||||
    uint8_t coinSetup[16];  // [0]=lowest coin, multiply with scale
 | 
			
		||||
    uint16_t intendedAcceptance;    //bitwise 0,1 1=accept coin, came from master
 | 
			
		||||
    uint8_t tokenChannel;
 | 
			
		||||
    uint8_t pollingRunning;		// 1: emp is polled  0:not
 | 
			
		||||
    uint8_t paymentRunning;	// 1: coins are accepted
 | 
			
		||||
    uint16_t denomination[16];
 | 
			
		||||
    uint16_t availableTubes; //bitwise 0,1 1=av. bit0 = lowest coin value
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct T_bna
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class hwinf
 | 
			
		||||
{
 | 
			
		||||
@@ -1373,7 +1407,182 @@ public:
 | 
			
		||||
    virtual void mif_getAtbCardExpire(uint8_t *year, uint8_t *month, uint8_t *day, uint8_t *hour, uint8_t *minute) const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------------------------------------
 | 
			
		||||
    //    Device-Controller-Bootloader convenient version 21.09.2023
 | 
			
		||||
    // ------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    // use this to jump to BL:
 | 
			
		||||
    //void hwapi::bl_rebootDC(void) const
 | 
			
		||||
 | 
			
		||||
    // use this to start BL:
 | 
			
		||||
    // void hwapi::bl_startBL(void) const
 | 
			
		||||
 | 
			
		||||
    // call this in order to get response from BL:
 | 
			
		||||
    //void hwapi::bl_checkBL(void) const
 | 
			
		||||
 | 
			
		||||
    // evaluate BL response:
 | 
			
		||||
    //bool hwapi::bl_isUp(void) const
 | 
			
		||||
 | 
			
		||||
    // 29.9.23: new: "completeStart" function, replaces bl_rebootDC(), bl_startBL() and bl_checkBL()
 | 
			
		||||
    // result can be verified with bl_isUp() as before
 | 
			
		||||
    virtual bool bl_completeStart(void) const =0;
 | 
			
		||||
        // must be used in DC's normal operation
 | 
			
		||||
 | 
			
		||||
    // select binfile-name in GUI
 | 
			
		||||
 | 
			
		||||
    // send binfile-name to BL-processor:
 | 
			
		||||
    virtual bool bl_storeFirmware(QString fileName) const =0;
 | 
			
		||||
        // load binary file 3x and compare
 | 
			
		||||
        // return true if loaded correctly
 | 
			
		||||
        // return false:  error, could not load correctly
 | 
			
		||||
 | 
			
		||||
    // request the number of blocks for this file
 | 
			
		||||
    virtual uint16_t bl_getNrOfFirmwareBlocks(void) const =0;
 | 
			
		||||
        // size of the loaded bin file in 64byte blocks
 | 
			
		||||
        // call after bl_storeFirmware()
 | 
			
		||||
 | 
			
		||||
    // call the next two function's repetitive with "blockNumber"=0,1,2,3....."bl_getNrOfFirmwareBlocks()"
 | 
			
		||||
 | 
			
		||||
    virtual bool bl_blockAutoLoad(uint16_t blockNumber) const =0;
 | 
			
		||||
        // call in loop from block number 0 up to <= "dcBL_getNrOfBlocks()"
 | 
			
		||||
        //the last block "bl_getNrOfFirmwareBlocks()" is sent as conclusion command (important!)
 | 
			
		||||
        // but after every call WAIT (!) for response "bl_blockAutoResponse()" !!!!
 | 
			
		||||
        // data will be sent to DC, if neccesary addr will be sent additionally
 | 
			
		||||
        // if neccesary sending will automatically repeat up to 3times
 | 
			
		||||
        // retval: false if blockNumber>4095, true else
 | 
			
		||||
 | 
			
		||||
    // check out this response after every block-sending, wait until >0!!!
 | 
			
		||||
    virtual int8_t bl_blockAutoResponse(void) const =0;
 | 
			
		||||
        // after every "bl_blockAutoLoad()" call this until response
 | 
			
		||||
        // retval  0: wait   1: OK, blk was sent    2: OK, transfer complete
 | 
			
		||||
        //         3: error despite repeating, cancel. probably bin file corrupted
 | 
			
		||||
        //      Max duration: 3x no response from BL = 900ms
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // finally call:
 | 
			
		||||
    // void hwapi::bl_stopBL(void) const
 | 
			
		||||
    // -------------- end of bootloader ---------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // new from 28.9.23 and earliest from DC version 4.45
 | 
			
		||||
    // get all versions of the DC-Jsons
 | 
			
		||||
    virtual void sys_requestJsonVersions(uint8_t  jsonNr) const =0;
 | 
			
		||||
        // send one request for every single version
 | 
			
		||||
        // jsonNr=1...36, 1=config file (cust.Nr) 2=devices  3=cash  4=res.
 | 
			
		||||
        //      5=printer template 1 ..... 36= template 32
 | 
			
		||||
 | 
			
		||||
    virtual void sys_getJsonVersions(uint8_t  jsonNr, char *versionString) const =0;
 | 
			
		||||
        // jsonNr=1...36, 1=config file (cust.Nr) 2=devices  3=cash  4=res.
 | 
			
		||||
        //      5=printer template 1 ..... 36= template 32
 | 
			
		||||
        // length of buffer is always 16 byte
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------------------------------------
 | 
			
		||||
    //   Coin Changer
 | 
			
		||||
    // ------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    // find above (same as for coin checker (EMP)):
 | 
			
		||||
 | 
			
		||||
    // mdb_switchPower(true);       // power on/off
 | 
			
		||||
    // cash_startPayment(amount_cent); // start polling, enable coins, changer turns to green
 | 
			
		||||
 | 
			
		||||
    // getInsertedAmount()
 | 
			
		||||
    // getLastInsertedCoin()
 | 
			
		||||
    // getAllInsertedCoins(uint16_t *types, uint16_t *values)
 | 
			
		||||
        // all inserted coins of this past transaction are stored, max 64
 | 
			
		||||
 | 
			
		||||
    // cash_stopPayment();      // and wait for further command (changer blinks yellow)
 | 
			
		||||
    // cash_cancelPayment();    // and return complete paid amount
 | 
			
		||||
 | 
			
		||||
    // after ticket/goods issue:
 | 
			
		||||
    // vend_success()
 | 
			
		||||
        // conclude payment process, keep all coins. Printing was successful
 | 
			
		||||
        // return change (payment above start-amount), so it works only if
 | 
			
		||||
        //  Payment was started with real vending price (pre selection).
 | 
			
		||||
        // if payment was started with maximum price (for direct coin insertion)
 | 
			
		||||
        // then use "changer_returnCoins()", not vend_success()
 | 
			
		||||
 | 
			
		||||
    // vend_failed()
 | 
			
		||||
        // conclude payment process and return complete paid amount
 | 
			
		||||
 | 
			
		||||
    // also valid for changer:
 | 
			
		||||
    // emp_sendSettings(uint16_t coinAcceptance, uint8_t tokenChannel, uint16_t *coinDenomination ) const =0;
 | 
			
		||||
        // coinAcceptance: bit0=coin1 (lowest donomination)  bit15=coin16  bitH=accept  bit L = deny coin (no validation)
 | 
			
		||||
        // tokenChannel 0...31: if this signal comes from emp then a token was inserted
 | 
			
		||||
        // coinDenomination = array of 16 coin values (e.g. 5, 10, 20...)
 | 
			
		||||
 | 
			
		||||
    virtual void changer_returnCoins(uint32_t amountInCent) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void changer_requestChangeResult(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t changer_getChangeResult(uint32_t *returnedAmount) const =0;
 | 
			
		||||
        // get result of coin dispensing
 | 
			
		||||
        // receivedData[0]: 0: not yet started      1:amount returned
 | 
			
		||||
        //                  2:only partial return   3: no return possible
 | 
			
		||||
        // receivedData[2,3,4,5]: returned amount
 | 
			
		||||
 | 
			
		||||
    virtual void changer_getAllParameters(struct T_changer *mw) const =0;
 | 
			
		||||
        // requested automatically with 23, same like EMP
 | 
			
		||||
 | 
			
		||||
    virtual void changer_requestTubelevel(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void changer_getTubelevel(struct T_chg_Tub *tubLevel) const =0;
 | 
			
		||||
        // don't use tubeDispens[], it's not yet correct!
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------------------------------------
 | 
			
		||||
    //   bank note acceptor
 | 
			
		||||
    // ------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    // already defiened functions applying for BNA as well:
 | 
			
		||||
    // mdb_switchPower(true);       // power on/off
 | 
			
		||||
 | 
			
		||||
    // bank notes are integrated in the normal transaction process, so use the usual functions to run a vending cycle:
 | 
			
		||||
    // cash_startPayment(amount_cent); // start polling, enable bills, reader shows green
 | 
			
		||||
    // getInsertedAmount()
 | 
			
		||||
    // cash_stopPayment();
 | 
			
		||||
    // cash_cancelPayment();
 | 
			
		||||
    // vend_success()
 | 
			
		||||
    // vend_failed()
 | 
			
		||||
 | 
			
		||||
    virtual void bna_sendSettings(uint16_t notesToAccept, uint16_t parameters,
 | 
			
		||||
                                  uint16_t *billDenomination,
 | 
			
		||||
                                  uint32_t acceptanceLimit) const =0;
 | 
			
		||||
        // notesToAccept: bit0=bill1 (lowest donomination)  bitH=accept  bit L = deny
 | 
			
		||||
        // parameters: e.g. use escrow function for some notes
 | 
			
		||||
        // billDenomination = array of 16 bill values (e.g. 5, 10, 20...)
 | 
			
		||||
        // these can be set alternatively by Json-File DC2C_cash.json
 | 
			
		||||
        // acceptanceLimit: device will stop acceptance once this amount is reached and
 | 
			
		||||
        //          optionally keep last bill in escrow until vend_success()
 | 
			
		||||
        //          is called (put bill to stacker) or vend_failed() is called (return bill)
 | 
			
		||||
 | 
			
		||||
    virtual void bna_setCurrentAcceptance(uint16_t notesToAccept) const =0;
 | 
			
		||||
        // can be used to block notes dynamically, example: from now only 5€ bills are allowed (if only 3€ are to be paid)
 | 
			
		||||
 | 
			
		||||
    virtual void bna_requestParameters(void) const =0;
 | 
			
		||||
        // send command to DC in order to get static invariable device parameters like currency
 | 
			
		||||
        // device must be powered and polled to get these
 | 
			
		||||
 | 
			
		||||
    virtual bool bna_getAllParameters(struct T_bna *bna) const =0;
 | 
			
		||||
        // get all constant data from reader (e.g. currency)
 | 
			
		||||
        // and actual Host-Settings (sent with bna_sendSettings() or json)
 | 
			
		||||
        // retval = true if data are valid
 | 
			
		||||
 | 
			
		||||
    virtual void bna_requestCurrentNotes(void) const =0;
 | 
			
		||||
        // send command to DC in order to get transaction data
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bna_getCurrentNotes(uint16_t latestBill, uint16_t *currentNotes) const =0;
 | 
			
		||||
        // returns number of collected bank notes since start-command (current transaction)
 | 
			
		||||
        //  latestBill: last accepted bank note, value in cent
 | 
			
		||||
        //  currentNotes an array with up to 16 (further) notes collected
 | 
			
		||||
 | 
			
		||||
    virtual void bna_requestStackerLevel(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t bna_getStackerLevel(uint32_t *amountInStacker, uint16_t *countOfBills) const =0;
 | 
			
		||||
        // return val: nr of bills in stacker
 | 
			
		||||
        // countOfBills: array of up to 16 sums,    countOfBills[0]=nr of 5€-bills in stacker
 | 
			
		||||
        //                                          countOfBills[1] for 10€   and so on
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1395,8 +1604,6 @@ signals:
 | 
			
		||||
    virtual void hwapi_payCancelled(void) const=0;
 | 
			
		||||
    virtual void hwapi_coinProcessJustStopped(void) const=0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // new from 2023.06.12
 | 
			
		||||
    virtual void hwapi_doorServiceDoorOpened(void) const=0;
 | 
			
		||||
    virtual void hwapi_doorVaultDoorOpened(void) const=0;
 | 
			
		||||
    virtual void hwapi_doorCoinBoxRemoved(void) const=0;
 | 
			
		||||
@@ -1454,9 +1661,17 @@ signals:
 | 
			
		||||
    // 18.9.2023 major improvements for DC data exchange
 | 
			
		||||
    // verification of door and cash box signals
 | 
			
		||||
    // intensive verification of Json-Programming Master-Slave (PTU to DC), 100% ok
 | 
			
		||||
 | 
			
		||||
#define HWINF_iid "Atb.Psa1256ptu5.software.HWapi/4.6"
 | 
			
		||||
//#define HWINF_iid "Atb.Psa1256ptu5.software.HWapi/4.6"
 | 
			
		||||
    // 20.9.2023: speeding up door and cash box signals
 | 
			
		||||
//#define HWINF_iid "Atb.Psa1256ptu5.software.HWapi/4.7"
 | 
			
		||||
    // 26.09.2023: added improved DC-bootloader files
 | 
			
		||||
//#define HWINF_iid "Atb.Psa1256ptu5.software.HWapi/4.8"
 | 
			
		||||
// 28.09.2023: added version request of DC-Json-Files
 | 
			
		||||
//#define HWINF_iid "Atb.Psa1256ptu5.software.HWapi/5.0"
 | 
			
		||||
    // 10.10.2023: added coin changer
 | 
			
		||||
 | 
			
		||||
#define HWINF_iid "Atb.Psa1256ptu5.software.HWapi/5.1"
 | 
			
		||||
// 20.10.2023: added bill validator
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Q_DECLARE_INTERFACE(hwinf, HWINF_iid)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user