Add (obsolete?) directory
This commit is contained in:
		
							
								
								
									
										852
									
								
								plugins/interfaces.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										852
									
								
								plugins/interfaces.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,852 @@
 | 
			
		||||
#ifndef INTERFACE_H
 | 
			
		||||
#define INTERFACE_H
 | 
			
		||||
 | 
			
		||||
#include <QtPlugin>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 struct Tprn_hw_state
 | 
			
		||||
{
 | 
			
		||||
    // hardware (IO's)
 | 
			
		||||
    bool powerRdBk;     // prn pwr is on
 | 
			
		||||
    bool rsSwOk;        // serial switch (printer or modem) is set to printer
 | 
			
		||||
    bool rsDrvOk;       // RS232 converter for PTU, Printer and Modem in on
 | 
			
		||||
 | 
			
		||||
    bool ReadyLine;     // HW signal from printer showing ready
 | 
			
		||||
    bool inIdle;        // powered and free from errors
 | 
			
		||||
    bool paperNearEnd;  // paper roll runs out
 | 
			
		||||
    bool noPaper;
 | 
			
		||||
    bool ErrorTemp;
 | 
			
		||||
    bool HeadOpen;
 | 
			
		||||
    bool cutterJam;
 | 
			
		||||
    bool noResponse;    // printer is not connected, cable broken, wrong baudrate
 | 
			
		||||
    bool badResponse;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 struct Tprn_currentSettings
 | 
			
		||||
{
 | 
			
		||||
    uint8_t currFont;
 | 
			
		||||
    uint8_t currSize;
 | 
			
		||||
    uint8_t currHeigth;
 | 
			
		||||
    uint8_t currWidth;
 | 
			
		||||
    bool    nowBold;
 | 
			
		||||
    bool    nowInvers;
 | 
			
		||||
    bool    nowUnderlined;
 | 
			
		||||
    uint8_t currDensity;
 | 
			
		||||
    uint8_t currSpeed;
 | 
			
		||||
    bool    nowAligned;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 struct T_dynDat
 | 
			
		||||
{
 | 
			
		||||
    uint8_t licensePlate[8];
 | 
			
		||||
    uint8_t vendingPrice[8];
 | 
			
		||||
    uint8_t parkingEnd[8];
 | 
			
		||||
    uint8_t currentTime[8];
 | 
			
		||||
    uint8_t currentDate[8];
 | 
			
		||||
    uint8_t dynDat5[8];
 | 
			
		||||
    uint8_t dynDat6[8];
 | 
			
		||||
    uint8_t dynDat7[8];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 struct T_emp
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    // Fixdata from EMP:
 | 
			
		||||
    uint8_t shaft;      // = changer level
 | 
			
		||||
    uint16_t countryCode;
 | 
			
		||||
    uint8_t scale;
 | 
			
		||||
    uint8_t decimals;
 | 
			
		||||
    uint8_t coinValues[16];
 | 
			
		||||
    uint16_t routing;
 | 
			
		||||
 | 
			
		||||
    // Master specs:
 | 
			
		||||
    uint8_t gotSetup;       // 1: got specifications from master   0: no specs
 | 
			
		||||
    uint16_t coinAccept;    //  bit 0 = coin1  bit H=accept
 | 
			
		||||
    uint8_t tokenChannel;
 | 
			
		||||
    uint16_t denomination[16];
 | 
			
		||||
 | 
			
		||||
    // dynamic:
 | 
			
		||||
    uint8_t state;      // step counter of EMP (electronic coin checker) FSM (finite state machine):
 | 
			
		||||
                        // 0=Emp & Bus power off,  1=powered, poll off    2=polling on
 | 
			
		||||
                        // 3=device responded, requesting status
 | 
			
		||||
                        // 4=waiting for status     5=have status,
 | 
			
		||||
                        // 6: IDLE,  have paramters from master, polling running, ready for payment
 | 
			
		||||
                        //          Master can stop/start polling and acceptance
 | 
			
		||||
                        // 7: end of transaction,  polling on, accept off, reporting coins, (wait for last coin)
 | 
			
		||||
                        // 8: transaction running, polling on, acceptance on, reporting coins,
 | 
			
		||||
 | 
			
		||||
    uint8_t pollingRunning;
 | 
			
		||||
    uint8_t paymentRunning;
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class hwinf
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    virtual ~hwinf() {}
 | 
			
		||||
 | 
			
		||||
    virtual void dc_openSerial(int BaudNr, QString BaudStr, QString ComName, uint8_t connect)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void dc_closeSerial(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool dc_isPortOpen(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void dc_autoRequest(bool on)  const =0;
 | 
			
		||||
        // select if READ-Requests are sent manually one by one or automatically
 | 
			
		||||
        // automatically request ALL digital and analog sensors, get time/date, get status information
 | 
			
		||||
 | 
			
		||||
    virtual void dc_requTestResponse()  const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual bool dc_readAnswTestResponse()  const =0;
 | 
			
		||||
        // retval: true: test was successful, got right response
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t dc_isRequestDone(void)  const =0;
 | 
			
		||||
        // retval:  0: request is still in progress
 | 
			
		||||
        //          1: answer from DC2 was OK
 | 
			
		||||
        //          2: wrong answer from DC2
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t dc_getCompletePayLoad(uint16_t plBufSiz, uint8_t *payLoad)  const =0;
 | 
			
		||||
        // get data back in *pl, max 64 byte, can be used for diagnosis
 | 
			
		||||
        // retval = nr of bytes received. If host buffer too small then
 | 
			
		||||
        // only plBufSíz bytes are copied to pl
 | 
			
		||||
        // plBufSíz=size of host buffer
 | 
			
		||||
 | 
			
		||||
    virtual void dc_setWakeFrequency(uint8_t period)  const =0;
 | 
			
		||||
        // RTC wakes DC2 (and PTU) by hardware signal every 32seconds
 | 
			
		||||
        // change wake signal period to 1...64s
 | 
			
		||||
 | 
			
		||||
    virtual void dc_OrderToReset(void)  const =0;
 | 
			
		||||
        // want DC2 to reset (in order to start Bootloader)
 | 
			
		||||
 | 
			
		||||
    virtual QString dc_getSerialState(void)  const =0;
 | 
			
		||||
    virtual void dc_clrSerialStateText(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void bl_sendDataDirectly(uint8_t length, uint8_t *buf)  const =0;
 | 
			
		||||
        // send without protocol frame, needed for the DC bootloader
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t getRawRecLength(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t getRawReceivedData(uint8_t *receivedData)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual QString dc_getSerialParams(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual QString dc_getHWversion(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual QString dc_getSWversion(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual QString dc_getState(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual QString dc_getTxt4RsDiagWin(void)  const =0;
 | 
			
		||||
    virtual void dc_clrTxt4RsDiagWin(void)  const =0;
 | 
			
		||||
    virtual QString dc_get2ndTxt4RsDiagWin(void)  const =0;
 | 
			
		||||
    virtual void dc_clr2ndTxt4RsDiagWin(void)  const =0;
 | 
			
		||||
    virtual QString dc_getTxt4HsStateLine(void)  const =0;
 | 
			
		||||
    virtual void dc_clrTxt4HsStateLine(void)  const =0;
 | 
			
		||||
    virtual QString dc_getTxt4masterStateLine(void)  const =0;
 | 
			
		||||
    virtual void dc_clrTxt4masterStateLine(void)  const =0;
 | 
			
		||||
    virtual QString dc_getTxt4resultStateLine(void)  const =0;
 | 
			
		||||
    virtual void dc_clrTxt4resultStateLine(void)  const =0;
 | 
			
		||||
    virtual QString dc_getdataStateLine(void)  const =0;
 | 
			
		||||
    virtual void dc_clrTxt4dataStateLine(void)  const =0;
 | 
			
		||||
    virtual QString dc_getdatifLine(void)  const =0;
 | 
			
		||||
    virtual void dc_clrTxt4datifLine(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    // using DC2 Bootloader
 | 
			
		||||
    virtual void bl_iniChain(void)  const =0;
 | 
			
		||||
    virtual bool bl_importBinFile(QByteArray readBinFile, uint32_t fileSize, char withDispl)  const =0;
 | 
			
		||||
    virtual uint8_t bl_activatBootloader(uint8_t *sendData)  const =0;
 | 
			
		||||
    virtual uint8_t bl_startChain(void)  const =0;
 | 
			
		||||
    virtual uint8_t bl_readBLversion(uint8_t *sendData)  const =0;
 | 
			
		||||
        // minimum size of sendData-buffer: 5byte  retval: length
 | 
			
		||||
    virtual uint8_t bl_readFWversion(uint8_t *sendData)  const =0;
 | 
			
		||||
        // minimum size of sendData-buffer: 5byte  retval: length
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bl_prepareDC_BLcmd(uint8_t Cmd, uint8_t SendDataLength, uint8_t *sendData, uint8_t *outBuf)  const =0;
 | 
			
		||||
        // make BL protocol, retval = outbuf length (5...133)
 | 
			
		||||
        // bring data in correct form: start always with 0x02   finish with 0x03 and append checksum
 | 
			
		||||
        // 0x02 Cmd < ...sendData ..>  CRC  CRC 0x03
 | 
			
		||||
        // Data length = 0...64
 | 
			
		||||
        // special conversion: if data contain 2 or 3 (STX, ETX) then write two bytes:  0x1B (=ESC) and data|0x80
 | 
			
		||||
        // so maxlength = 5 + 2 x 64 (if all data are 2 or 3)  without 2,3: maxlength = 5 + 64
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bl_exitBL(uint8_t *sendData)  const =0;
 | 
			
		||||
        // minimum size of sendData-buffer: 5byte  retval: length
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
    // Level 2  DC2-onboard devices
 | 
			
		||||
    //          WR: set time
 | 
			
		||||
    //          RD. get time, get measure, get test results
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    // get UID, get time/date   test results   memory,  RTC  analog values
 | 
			
		||||
 | 
			
		||||
     struct Trtc_DateTime
 | 
			
		||||
    {
 | 
			
		||||
        uint8_t rtc_hour;
 | 
			
		||||
        uint8_t rtc_min;
 | 
			
		||||
        uint8_t rtc_sec;
 | 
			
		||||
        uint8_t rtc_dayOfMonth;
 | 
			
		||||
        uint8_t rtc_month;
 | 
			
		||||
        uint8_t rtc_year;
 | 
			
		||||
        uint8_t rtc_dayOfWeek;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t rtc_getDateTime(struct Trtc_DateTime *rtc_DateTime)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t rtc_setDateTime(void)  const =0;
 | 
			
		||||
        // synch DC2 with PC or PTU system time and date
 | 
			
		||||
 | 
			
		||||
    virtual void rtc_getTime(uint8_t *hh, uint8_t *mm, uint8_t *ss)  const =0;
 | 
			
		||||
        // get time directly
 | 
			
		||||
 | 
			
		||||
    virtual void rtc_getDate(uint8_t *yy, uint8_t *mm, uint8_t *dd)  const =0;
 | 
			
		||||
        // get date directly
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t rtc_getToday(uint8_t *dow, uint16_t *minOfToday, uint32_t *secOfToday)  const =0;
 | 
			
		||||
        // dow=day of week, 1=monday...7
 | 
			
		||||
        // minOfToday: 0=midnight...1439= 23:59
 | 
			
		||||
        // secOfToday: 0=midnight...86399= 23:59:59
 | 
			
		||||
 | 
			
		||||
    virtual bool rtc_isLeapYear(uint8_t *lastLeapYear, uint8_t *NextLeapYear)  const =0;
 | 
			
		||||
        // retval true: this year is leap year
 | 
			
		||||
 | 
			
		||||
    virtual bool rtc_isLeapYear()  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void rtc_getWeek(uint8_t *DayOfWeek, uint8_t *HoursOfWeek, uint16_t *MinutesOfWeek)  const =0;
 | 
			
		||||
        // DayOfWeek: 1=monday...7
 | 
			
		||||
        // HoursOfWeek: 0=Monday 0:00 o'clock...167=Sunday 23:00
 | 
			
		||||
        // MinutesOfWeek: 0=Monday 0:00 o'clock...10079=Sunday 23:59
 | 
			
		||||
 | 
			
		||||
    virtual void rtc_getMonth(uint8_t *DayOfMonth, uint16_t *HoursOfMonth, uint16_t *MinutesOfMonth)  const =0;
 | 
			
		||||
        // DayOfMonth: 1...31
 | 
			
		||||
        // HoursOfMonth: 0 = 0:00o'clock of 1.day in month     up to 743
 | 
			
		||||
        // MinutesOfMonth:0 = 0:00o'clock of 1.day in month     up to 44639
 | 
			
		||||
 | 
			
		||||
    virtual void rtc_getYear(uint16_t *DayOfYear, uint16_t *HoursOfYear, uint32_t *MinutesOfYear)  const =0;
 | 
			
		||||
        // DayOfYear: 1...366  1= 1.Jan of this current year
 | 
			
		||||
        // HoursOfYear: 0=1.Jan 0:00o'clock ...8783=31.12 23 o'clock
 | 
			
		||||
        // MinutesOfYear: 0=1.Jan 0:00o'clock ...527039=31.12 23:59 o'clock
 | 
			
		||||
 | 
			
		||||
    virtual QString rtc_getTimStr(void)  const =0;
 | 
			
		||||
    virtual QString rtc_getDatStr(void)  const =0;
 | 
			
		||||
    virtual QString rtc_getTimDatStr(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    // UID
 | 
			
		||||
    virtual void     dc_getUID8byte(uint8_t *buf8byteUid)  const =0;
 | 
			
		||||
    virtual QString  dc_getUIDstr()  const =0;
 | 
			
		||||
    virtual uint64_t dc_getUIDnumber(void)  const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // Analog inputs:
 | 
			
		||||
    virtual uint32_t dc_getTemperature(void)  const =0;       // in Sax-Format 0...400 (0=-50,0°C    100=0,0°C    141=20,5°C    400=150,0°C)
 | 
			
		||||
    virtual QString  dc_getTemperaturStr(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint32_t dc_getVoltage(void)  const =0;           // in mV,  0...65,535V
 | 
			
		||||
    virtual QString  dc_getVoltagStr(void)  const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
    // Level 3: digital outputs and simple switching of connected devices
 | 
			
		||||
    //          simple processes like flashing a led or open flap for 1s
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    virtual void lock_switchContactPower(bool on)  const =0;
 | 
			
		||||
 | 
			
		||||
    // Locks move until stop cmd (0)
 | 
			
		||||
    virtual uint8_t lock_switchUpperLock(uint8_t dir)  const =0;
 | 
			
		||||
        // dir 0=off 1=up 2=down
 | 
			
		||||
    virtual uint8_t lock_switchLowerLock(uint8_t dir)  const =0;
 | 
			
		||||
        // dir 0=off 1=up 2=down
 | 
			
		||||
 | 
			
		||||
    // LEDs
 | 
			
		||||
    virtual void led_switchLedIllumination(uint8_t on)  const =0;
 | 
			
		||||
    virtual void led_switchLedService(uint8_t on)  const =0;
 | 
			
		||||
    virtual void led_switchLedPaper(uint8_t on, uint8_t ton, uint8_t tof)  const =0;
 | 
			
		||||
    virtual void led_switchLedPinPad(uint8_t on, uint8_t ton, uint8_t tof)  const =0;
 | 
			
		||||
    virtual void led_switchLedStart(uint8_t on, uint8_t ton, uint8_t tof)  const =0;
 | 
			
		||||
    virtual void led_switchLedCoinbassin(uint8_t on, uint8_t ton, uint8_t tof)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void fan_switchFan(bool on)  const =0;
 | 
			
		||||
    virtual void laerm_switchSiren(bool on)  const =0;
 | 
			
		||||
    virtual void bar_OpenBarrier(bool open)  const =0;
 | 
			
		||||
    virtual void ptu_switchWake(bool WAKEACTIVE)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void prn_switchPower(bool on)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void mif_readerOn(bool on)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void shut_move(bool open)  const =0;
 | 
			
		||||
    virtual void esc_moveFlaps(uint8_t flap )  const =0;
 | 
			
		||||
        // 0: close both  1: open take-flap   2: open return
 | 
			
		||||
 | 
			
		||||
    virtual void mdb_switchPower(bool on)  const =0;
 | 
			
		||||
    virtual void mdb_switchWake(bool WAKEACTIVE)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void mod_switchPower(bool on)  const =0;
 | 
			
		||||
    virtual void credit_switchPower(bool on)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void aux_power(bool on)  const =0;
 | 
			
		||||
    virtual void aux_setUsage(uint8_t PinDirection)  const =0;
 | 
			
		||||
    virtual void aux_setOutputs(uint8_t PinIsHigh)  const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual void mod_switchWake(bool WAKEACTIVE)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void credit_switchWake(bool WAKEACTIVE)  const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
    // Level 3: digital inputs of connected devices
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    virtual bool door_isContactPowerOn(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t door_getSwitches(void)  const =0;
 | 
			
		||||
        // retval:  bit0: upper door  1: low door  2:vault door
 | 
			
		||||
 | 
			
		||||
    virtual bool    door_isUpperDoorOpen(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool    door_isLowerDoorOpen(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool    vault_isVaultDoorOpen(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t vault_getSwitches(void)  const =0;
 | 
			
		||||
        // retval bit0: cash box,  bit 1: bill box
 | 
			
		||||
 | 
			
		||||
    virtual bool    vault_isCoinVaultIn(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool    vault_isBillVaultIn(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t door_getLocks(void)  const =0;
 | 
			
		||||
        // retval bit0: upper lever is up
 | 
			
		||||
        //        bit1: upper lever is down
 | 
			
		||||
        //        bit2: lower lever is up
 | 
			
		||||
        //        bit3: lower lever is down
 | 
			
		||||
 | 
			
		||||
    virtual bool door_upperDoorIsLocked(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool door_upperDoorIsUnlocked(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool door_lowerDoorIsLocked(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool door_lowerDoorIsUnlocked(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool bar_optoIn1isOn(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool bar_optoIn2isOn(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool ptu_WakeINisActive(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool prn_isPrinterPowerOn(void)  const =0;
 | 
			
		||||
    virtual bool prn_readyINisActive(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool mif_cardIsAttached(void)  const =0;
 | 
			
		||||
    virtual bool mif_isMifarePowerOn(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool mdb_WakeINisActive(void)  const =0;
 | 
			
		||||
    virtual bool mdb_testIsmdbTxDon(void)  const =0;
 | 
			
		||||
    virtual bool mdb_isMdbPowerOn(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool coid_isAttached(void)  const =0;
 | 
			
		||||
    virtual bool coin_escrowIsOpen(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool aux_isAuxPowerOn(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t aux_getAuxInputs(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool mod_isGsmPowerOn(void)  const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool cred_isCreditPowerOn(void)  const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
    // Level1,2,3     RD request commands
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    // all read-requests can be sent manually by the following functions
 | 
			
		||||
    //   or automatically in background by:   void hwapi::dc_autoRequest(bool on)
 | 
			
		||||
    //   in other words:
 | 
			
		||||
    //   if automatic-reading is on, then there's no need to send any of these commands,
 | 
			
		||||
    //    but it's allowed to send them in order to speed up the refreshing of the inputs
 | 
			
		||||
 | 
			
		||||
    virtual void request_DC2serialConfig()  const =0;
 | 
			
		||||
    virtual void request_DC2_HWversion() const =0;
 | 
			
		||||
    virtual void request_DC2_SWversion() const =0;
 | 
			
		||||
    virtual void request_DC2_condition() const =0;
 | 
			
		||||
    virtual void request_DC2_UID() const =0;
 | 
			
		||||
    virtual void request_DC2_TimeAndDate() const =0;
 | 
			
		||||
    virtual void request_DC2_analogues() const =0;
 | 
			
		||||
    virtual void request_DC2_digitalInputs() const =0;
 | 
			
		||||
    virtual void request_DC2_digitalOutputs() const =0;
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
    // the folowing device state requests are deploed only if device is powered up:
 | 
			
		||||
    virtual void request_PrinterHwState() const =0;
 | 
			
		||||
    virtual void request_PrinterCurrentFonts() const =0;
 | 
			
		||||
    virtual void request_PrinterStateComplete() const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void request_MifareReaderState() const =0;
 | 
			
		||||
    virtual void request_MifareCardType() const =0;
 | 
			
		||||
    virtual void request_MifareAtbType() const =0;
 | 
			
		||||
    virtual void request_MifareData() const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void request_MDB_Status() const =0;
 | 
			
		||||
    virtual void request_MDB_lastResponse() const =0;
 | 
			
		||||
    virtual void request_EMP_allParameters() const =0;
 | 
			
		||||
    virtual void request_EMP_lastCoin() const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
    // Level 3: readback digital outputs of connected devices
 | 
			
		||||
    //          these functions are not needed for normal operation
 | 
			
		||||
    //          but can be used to test and verify conditions
 | 
			
		||||
 | 
			
		||||
    //          There are two options:
 | 
			
		||||
    //              1) the important things like power-outputs and wake lines are
 | 
			
		||||
    //              measured at DC2-terminals (after transistors) and come as input to DC-board
 | 
			
		||||
    //              2) others like Leds are read from µC-pins by DC-board
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    virtual bool test_getDO_mdbRXtst(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t lock_getDO_motors(void) const =0;
 | 
			
		||||
        // bit0: upper lock forward    bit 1 backward
 | 
			
		||||
        // bit2: lower lock forward    bit 3 backward
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t test_serialState(void) const =0;
 | 
			
		||||
        // test on-board signals for the serials
 | 
			
		||||
        // serial drv on/off, Serial mux1, Serial mux2
 | 
			
		||||
    virtual bool test_serialIsOn(void) const =0;
 | 
			
		||||
    virtual bool test_serialMux1isSetToPrinter(void) const =0;
 | 
			
		||||
    virtual bool test_serialMux1isSetToModem(void) const =0;
 | 
			
		||||
    virtual bool test_serialMux2isSetToCredit(void) const =0;
 | 
			
		||||
    virtual bool test_serialMux2isSetToMifare(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool led_coinIsOn(void) const =0;
 | 
			
		||||
    virtual bool led_frontIsOn(void) const =0;
 | 
			
		||||
    virtual bool led_ticketIsOn(void) const =0;
 | 
			
		||||
    virtual bool led_pinIsOn(void) const =0;
 | 
			
		||||
    virtual bool led_StartIsOn(void) const =0;
 | 
			
		||||
    virtual bool led_insideIsOn(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool fan_isOn(void) const =0;
 | 
			
		||||
    virtual bool siren_isOn(void) const =0;
 | 
			
		||||
    virtual bool bar_relayIsOn(void) const =0;
 | 
			
		||||
    virtual bool ptu_WakeOutIsOn(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool aux_powerIsOn(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool coin_shutterIsOpen(void) const =0;
 | 
			
		||||
    virtual bool coin_shutterTestOutput(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t coin_escrowFlapOpened(void) const =0;
 | 
			
		||||
        // retval: 1:return flap is open   2:take flap is open    0:closed
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
    // Level4 ( Timer processes, device supervision by DC, processes with more then one devices
 | 
			
		||||
    // WRITE
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual void sendDeviceSettings(uint8_t kindOfPrinter,      uint8_t kindOfCoinChecker,
 | 
			
		||||
                            uint8_t kindOfMifareReader, uint8_t suppressSleep,
 | 
			
		||||
                            uint8_t kindOfModem,        uint8_t kindOfCredit        ) const =0;
 | 
			
		||||
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t emp_returnLastCoin(uint16_t *value, uint8_t *signal) const =0;
 | 
			
		||||
        // use for changer
 | 
			
		||||
 | 
			
		||||
    virtual void sendMachineID(uint16_t customerNr, uint16_t machineNr,
 | 
			
		||||
                              uint16_t borough, uint16_t zone,
 | 
			
		||||
                              uint16_t alias,   char *location) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void request_ReadbackMachineID() const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void readback_machineIDdata(uint8_t *length, uint8_t *data) const =0;
 | 
			
		||||
    // 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // Locks stops automatically at end switch or by timeout
 | 
			
		||||
    virtual uint8_t lock_openUpperDoor(void) const =0;
 | 
			
		||||
    virtual uint8_t lock_closeUpperDoor(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t lock_openLowerDoor(void) const =0;
 | 
			
		||||
    virtual uint8_t lock_closeLowerDoor(void) const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual void shut_openOnce(void) const =0;
 | 
			
		||||
        // and close automatic after shutter time
 | 
			
		||||
 | 
			
		||||
    virtual void shut_openForCoin(bool start) const =0;
 | 
			
		||||
        // open flap if coin is attached
 | 
			
		||||
        // once process is started it runs until stop command
 | 
			
		||||
 | 
			
		||||
    virtual void shut_sendOpeningTime(uint16_t timeIn_ms ) const =0;
 | 
			
		||||
        // after this time without retrigger the flap is closed
 | 
			
		||||
 | 
			
		||||
    virtual void esc_takeMoney(void) const =0;
 | 
			
		||||
        // and close automatically after escrow time (1s)
 | 
			
		||||
 | 
			
		||||
    virtual void esc_returnMoney(void) const =0;
 | 
			
		||||
        // and close automatically after escrow time (1s)
 | 
			
		||||
 | 
			
		||||
    virtual void mif_creatAtbCard(uint8_t cardType) const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
    // read response from DC2 (input data)
 | 
			
		||||
    // ------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /* data description:
 | 
			
		||||
    byte 0: current read state: 0=power off  1=reader-fault 2=ready
 | 
			
		||||
                                3=just reading 4=read complete
 | 
			
		||||
                                5=read partial, removed too early
 | 
			
		||||
                                6=state unknown
 | 
			
		||||
    byte 1,2: read data length from card
 | 
			
		||||
    3: 1=reader is OK (reported serial nr is OK)  0=wrong or no reader
 | 
			
		||||
    4...15: reader version, expected "ATB25-1.8"
 | 
			
		||||
    byte16: 1=card is present   0:not
 | 
			
		||||
    17: 0
 | 
			
		||||
    18: card type reported from reader
 | 
			
		||||
    19: 1=allowed card type 0=not
 | 
			
		||||
    20: card size: 1 or 4 (dec) = card size
 | 
			
		||||
    21: LengthOfUID: 4 or 7 (dec) (byte)
 | 
			
		||||
    22: UID 8 byte in hex
 | 
			
		||||
    byte 30: sector logged: 0
 | 
			
		||||
    byte 31: current sector: 0
 | 
			
		||||
    byte 32: result, always 0
 | 
			
		||||
    */
 | 
			
		||||
    virtual uint8_t mif_returnReaderStateAndCardType(uint8_t *buf, uint8_t maxBufferSize) const =0;
 | 
			
		||||
        // retval 0=OK 1=error host buffer too small
 | 
			
		||||
 | 
			
		||||
    virtual bool mif_readerIsOK(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool mif_cardAttached(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t mif_readResult(void) const =0;
 | 
			
		||||
        // result: 0: unknown or still in progress
 | 
			
		||||
        //         1: card read successful
 | 
			
		||||
        //         2: reading error
 | 
			
		||||
 | 
			
		||||
    virtual QString mif_cardUID(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t mif_getCardDataDec(uint8_t blkNr, uint8_t *buf, uint8_t maxBufferSize) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual QString mif_getCardDataStr(uint8_t blockNumber) const =0;
 | 
			
		||||
        // with blockNumber=0...11
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------------------------------------------------------------
 | 
			
		||||
    // --------------------------------------------- PRINTER ----------------------------------------------------
 | 
			
		||||
    // ----------------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    // read printer condition and settings
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t prn_getHwState(struct Tprn_hw_state *prn_hw_state) const =0;
 | 
			
		||||
        // retval: status byte
 | 
			
		||||
            // byte 0 = 0: prnter OK,  >0: error
 | 
			
		||||
            // bit0: paper low  1: no paper    2: temperature error
 | 
			
		||||
            // 3: head open     4: paper jam in cutter
 | 
			
		||||
            // 6: no response   7: bad response from printer
 | 
			
		||||
        // and return struct "Tprn_hw_state"
 | 
			
		||||
 | 
			
		||||
    virtual bool prn_isUpAndReady(void) const =0;
 | 
			
		||||
        // true: printer is powered, serial is ok, no error, printer is connected and resonding
 | 
			
		||||
 | 
			
		||||
    virtual void prn_getCurrentFontSetting(struct Tprn_currentSettings *prn_fonts) const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // send Commands to printer:
 | 
			
		||||
 | 
			
		||||
    virtual void prn_sendText(QByteArray *buf) const =0;
 | 
			
		||||
        // up to 1280 bytes
 | 
			
		||||
 | 
			
		||||
    virtual void prn_sendPrnSysCmd(uint8_t para1, uint8_t para2, uint32_t para3) const =0;
 | 
			
		||||
        // send three byte through to printer, see printers manual
 | 
			
		||||
 | 
			
		||||
    virtual void prn_sendPrnEscCmd(uint8_t para1, uint8_t para2, uint8_t para3, uint8_t para4) const =0;
 | 
			
		||||
        // send four byte through to printer, see printers manual
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual void prn_sendPrnSetup(uint16_t paperSpeed, uint8_t density,  uint8_t alignment, uint8_t orientation) const =0;
 | 
			
		||||
        // send 5 byte: byte 0,1: speed  5...250 mm/s
 | 
			
		||||
        //              byte2: density   0....(25)....50
 | 
			
		||||
        //              byte3: alignment    'l', 'c', 'r' = left, center, right
 | 
			
		||||
        //              byte4: orientation  0, 90, 180    = 0°, 90°, 180° rotation (by now not supported!)
 | 
			
		||||
        // not batched! don't use twice within 100ms
 | 
			
		||||
 | 
			
		||||
    virtual void prn_movePaper(uint8_t wayInMm, uint8_t direction) const =0;
 | 
			
		||||
        //direction: 1=forward 2=backward
 | 
			
		||||
        //
 | 
			
		||||
    virtual void prn_setFonts(uint8_t font, uint8_t size, uint8_t width, uint8_t height) const =0;
 | 
			
		||||
        // font = kind of font 5...11 (0..22)
 | 
			
		||||
        // size = 6...20, 9..9: too tiny 10: small ...12 = normal size ...20=huge
 | 
			
		||||
        // width:  0...4   0=1x  1=2x   2=4x (huge!)  3=8x 4=16x (3,4 make no sense)
 | 
			
		||||
        // heigth: 0...7 = 1x...8x  only 0,1,2,(3) make sense
 | 
			
		||||
 | 
			
		||||
    virtual void prn_setLetters(uint8_t bold, uint8_t invers, uint8_t underlined) const =0;
 | 
			
		||||
        // bold: 0/1
 | 
			
		||||
        // invers: 0/1
 | 
			
		||||
        // underlined: 0/1
 | 
			
		||||
 | 
			
		||||
    virtual void prn_cut(uint8_t kindof) const =0;
 | 
			
		||||
        // kindof: 1=full cut 2=partial cut 3=eject (5xLF + full cut)
 | 
			
		||||
 | 
			
		||||
    virtual void prn_newLine(uint8_t nrOfLines) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void prn_printCompleteFontTable(void) const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual void prn_printBarcode(uint8_t kindOf, uint8_t withText,  uint8_t offset, uint8_t rotation, uint8_t dataLeng, uint8_t *data) const =0;
 | 
			
		||||
        // kind of barcode: 0=Code39   1=Code128   2=EAN13    3= 2/5interleaved    4=UPC-A   5=EAN8
 | 
			
		||||
        // withText:    print readable text below
 | 
			
		||||
        // offset: move by pixel from left border
 | 
			
		||||
        // rotation
 | 
			
		||||
        // dataLeng in byte
 | 
			
		||||
 | 
			
		||||
    virtual void prn_sendQRdata(QByteArray *buf) const =0;
 | 
			
		||||
        // maximal 150 alphanummeric bytes
 | 
			
		||||
 | 
			
		||||
    virtual void prn_printQRcode(void) const =0;
 | 
			
		||||
        // QRcode may have 1...150 alphanummeric data, must be transfered in advance
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual void prn_printLogo(uint8_t nrOfLogo, uint8_t offset ) const =0;
 | 
			
		||||
        // nrOfLogo: 1..4 in flash  5...8 in Ram
 | 
			
		||||
        // offset: in mm form left border
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // .........................................................
 | 
			
		||||
    // Parking Ticket (print-out document) designer TD
 | 
			
		||||
    // .........................................................
 | 
			
		||||
 | 
			
		||||
    // Predefine document Layout (e.g. parking ticket) in advance and stroe it for quick and easy use
 | 
			
		||||
    // in opposite to the above "single" commands you need only one or a few commands at vending time.
 | 
			
		||||
    // Stored text is just send to printer once the printing command is issued
 | 
			
		||||
    // stored commands within the text are interpreted and executed right at the place (in ticket) they are
 | 
			
		||||
    // example: start bold, <text in bold>, stop bold
 | 
			
		||||
    // Predefinition of up to 16 ticket Layouts is possible, 0...1280 byte each
 | 
			
		||||
    // Number 0..15, al keept non-volatile
 | 
			
		||||
    // up to 8 dynamic values can be defined in the template ("print val3 here") and will be sent with printing command
 | 
			
		||||
    // example: print current time at this point (the time of printing not the storage time!!)
 | 
			
		||||
 | 
			
		||||
    virtual void pri_startTicketDesign(void) const =0;
 | 
			
		||||
        // start for every new printer document, reseting collecting buffer
 | 
			
		||||
 | 
			
		||||
    // all further functions write/append text, numbers and command to the ticket-buffer, up to 1278 bytes allowed
 | 
			
		||||
    // return val of the appending functions: true=ok false=too long, buffer full
 | 
			
		||||
 | 
			
		||||
    virtual int pri_TD_getCurrentSize(void) const =0;
 | 
			
		||||
        // retval: 0...1278
 | 
			
		||||
 | 
			
		||||
    virtual bool pri_TD_addText(QByteArray text) const =0;
 | 
			
		||||
        // example: pri_TD_addText("Hello") const =0;
 | 
			
		||||
        // example: pri_TD_addText(tempStr) const =0;
 | 
			
		||||
        // retval: true=ok false=too long, buffer full
 | 
			
		||||
 | 
			
		||||
    virtual bool pri_TD_addValue(int val) const =0;
 | 
			
		||||
        // +/- 0...2^(31)
 | 
			
		||||
 | 
			
		||||
    virtual bool pri_TD_addNewLine(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool pri_TD_addSign(char sign) const =0;
 | 
			
		||||
        // example: '.'   ' '   0x20 'W' '$'
 | 
			
		||||
 | 
			
		||||
    virtual bool pri_TD_addCommand(char group, char attribute, char p1, char p2, char p3, char p4, char p5) const =0;
 | 
			
		||||
        // always add 8 byte to the ticket layout:  ESC & group & attribute & parameter1...5
 | 
			
		||||
        /* complete list of possible commands:
 | 
			
		||||
            group 50 : paper
 | 
			
		||||
                attribute 10 :  move forward
 | 
			
		||||
                      p1: wayInMm p2: direction
 | 
			
		||||
                attribute 11 : cut
 | 
			
		||||
                      p1: kind of, 1=full 2=partial, 3=eject
 | 
			
		||||
                attribute 12 : new line(s)
 | 
			
		||||
                      p1: nr of lines 1...100
 | 
			
		||||
 | 
			
		||||
            group 51 : fonts
 | 
			
		||||
                attribute 10 : kind of font     see description above
 | 
			
		||||
                      p1: 0...8
 | 
			
		||||
                attribute 11 : font size
 | 
			
		||||
                      p1: 6...20
 | 
			
		||||
                attribute 12 : font width
 | 
			
		||||
                      p1: 0...4
 | 
			
		||||
                attribute 13 : font heigth
 | 
			
		||||
                      p1: 0...7
 | 
			
		||||
                attribute 14 : switch bold print on/off
 | 
			
		||||
                      p1: 0=off  1=on
 | 
			
		||||
                attribute 15 : switch invers print on/off
 | 
			
		||||
                      p1: 0=off  1=on
 | 
			
		||||
                attribute 16 : switch underlined print on/off
 | 
			
		||||
                      p1: 0=off  1=on
 | 
			
		||||
 | 
			
		||||
            group 52 : print graphics
 | 
			
		||||
                attribute 10 : print barcode with dynamic data 6 and 7
 | 
			
		||||
                      p1...p5 = kindOf, withText, offset, rotation, dataLeng, see description above
 | 
			
		||||
                attribute 11 : print QRcode with preset data
 | 
			
		||||
 | 
			
		||||
                attribute 12 : print Logo
 | 
			
		||||
                     p1=nrOfLogo, p2=offset
 | 
			
		||||
 | 
			
		||||
            group 53 : print dynamics
 | 
			
		||||
                attribute 10 :
 | 
			
		||||
                        p1: 1...8 = print dynData 0..7 at this place
 | 
			
		||||
 | 
			
		||||
    */
 | 
			
		||||
 | 
			
		||||
    virtual char prn_clearDocument(uint8_t documentNumber) const =0;
 | 
			
		||||
        // clear memory buffer for ONE document
 | 
			
		||||
        // function takes a second! don't send right before "store doc"
 | 
			
		||||
 | 
			
		||||
    virtual bool prn_store_Document(uint8_t documentNumber ) const =0;
 | 
			
		||||
        // send the predefined Layout (generated with above TD functions) to DeviceController to save
 | 
			
		||||
        // documentNumber=0...15
 | 
			
		||||
        // maximal 1280 bytes each
 | 
			
		||||
        // allowed: 0x20...0xFF, 0x0A, 0x0C, 0x1B (LF, CR, Esc)
 | 
			
		||||
        // 0x1B=start of embedded command (next 7bytes = command)
 | 
			
		||||
 | 
			
		||||
    // with a print command a set of 8 dynamic strings can be sent
 | 
			
		||||
    // the place in the ticket layout is predefined (already in DC memory)
 | 
			
		||||
    // the dynamics are first calculated at printing time
 | 
			
		||||
 | 
			
		||||
    virtual bool prn_printDocument(uint8_t documentNumber, struct T_dynDat *dynTicketData) const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------------------------------------------------------------
 | 
			
		||||
    // --------------------------------------------- MDB Bus ----------------------------------------------------
 | 
			
		||||
    // ----------------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    //void mdb_switchPower(bool on) const =0;            defined above
 | 
			
		||||
    //void mdb_switchWake(bool WAKEACTIVE) const =0;     defined above
 | 
			
		||||
//    bool mdb_WakeINisActive(void) const =0;
 | 
			
		||||
//    bool mdb_testIsmdbTxDon(void) const =0;
 | 
			
		||||
//    bool mdb_isMdbPowerOn(void) const =0;
 | 
			
		||||
//    void request_MDB_Status() const =0;
 | 
			
		||||
//    void request_MDB_lastResponse() const =0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual void mdb_sendBusReset(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void mdb_sendCommand(uint8_t toMdbDevice, uint8_t mdbCommand) const =0;
 | 
			
		||||
        // send one bus command directly over mdb bus, refer to mdb manual for commands
 | 
			
		||||
        // this command is not needed in normal operation, just for new or special things
 | 
			
		||||
 | 
			
		||||
    virtual void mdb_sendMessage(uint8_t toMdbDevice, uint8_t mdbCommand, uint8_t nrOfData, uint8_t *dataBuffer) const =0;
 | 
			
		||||
        // nrOfData = sizeOf(dataBuffer) maximal 34 byte according mdb specs
 | 
			
		||||
        // same as mdb_sendCommand, just with data
 | 
			
		||||
 | 
			
		||||
    virtual bool mdb_busIsReadyToWork() const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool mdb_deviceVoltageOK() const =0;
 | 
			
		||||
 | 
			
		||||
    virtual bool mdb_busVoltageOk() const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t mdb_getLastDeviceResponse(uint8_t *fromDevice, uint8_t *lastRequest,
 | 
			
		||||
                                      uint8_t *responseLength, uint8_t *responseBuffer) const =0;
 | 
			
		||||
        // fromDevice: device nr from which data was requested 0,1,2,3
 | 
			
		||||
        // lastRequest: sent mdb command
 | 
			
		||||
        // responseLength: nr of payload data (after mdb-ack) 0...34
 | 
			
		||||
        // responseBuffer holds payload data (answer from mdb device)
 | 
			
		||||
        // return val: mdb result of this request: 1=got ACK  2=got 3xNAK  3=no or bad response    4:got Data (after ACK)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------------------------------------------------------------
 | 
			
		||||
    // ---------------------------------- Electronic Coin Validator EMP -----------------------------------------
 | 
			
		||||
    // ----------------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual void 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 emp_pollingOnOff(uint8_t on) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void emp_startCoinAcceptance(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void emp_stopCoinAcceptance(void) const =0;
 | 
			
		||||
 | 
			
		||||
    virtual void emp_getAllParameters(struct T_emp *emp) const =0;
 | 
			
		||||
        // see struct in hwapi.h
 | 
			
		||||
        // usage example:
 | 
			
		||||
        //      hwapi   *HWaccess const =0;
 | 
			
		||||
        //      HWaccess = new hwapi() const =0;
 | 
			
		||||
        //      struct T_emp   myEmp const =0;
 | 
			
		||||
        //      HWaccess->emp_getAllParameters(&myEmp) const =0;
 | 
			
		||||
        //          readval=myEmp.pollingRunning const =0;
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t emp_chkIfCoinInserted(void) const =0;
 | 
			
		||||
        // retval: 0...16 coins left in FIFO
 | 
			
		||||
 | 
			
		||||
    virtual void emp_getNewCoinRecord(uint8_t *valid, uint8_t *signal, uint8_t *error, uint16_t *value) const =0;
 | 
			
		||||
        // with every call ONE coin is taken out of FIFO and pointer decremented
 | 
			
		||||
        // valid: should be 1
 | 
			
		||||
        // signal: comes right from coin checker, 0...15 (0=first programmed coin type) 0xFF=no signal
 | 
			
		||||
        // error: was reported from EMP as dynamic signal right after coin insertion (instead of
 | 
			
		||||
        //          coin signal), example: 3=unknown coin  4=coin is blocked by host.  0xFF=no error
 | 
			
		||||
        // value: of the coin. Depends on parameter "coinDenomination" in function "emp_sendSettings"
 | 
			
		||||
        //          if coinDenomination[coin 0..15] = 0 then the value programmed in coin checker is taken
 | 
			
		||||
        //          if coinDenomination > 0 then this value is taken.
 | 
			
		||||
        //          Useful in case of two currencies (adapt to local currency) or for token.
 | 
			
		||||
 | 
			
		||||
    // function gives more details as "emp getLastCoin()" but "emp getLastCoin()" is easier to use
 | 
			
		||||
 | 
			
		||||
    // alternativ to emp_getNewCoinRecord( ):
 | 
			
		||||
    virtual uint8_t emp_giveLastCoin(uint16_t *value, uint8_t *signal) const =0;
 | 
			
		||||
        // retval: 0: NO coin stored  1: valid coin  2: got wrong coin or coin denied
 | 
			
		||||
        // value: if retval1: value of the coin if reval=2: error number
 | 
			
		||||
        //          0xFF means NO error or NO signal  (as 0 is a valid error/signal)
 | 
			
		||||
        // signal: channel nr reported from checker 0...15
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Q_DECLARE_INTERFACE(hwinf, "eu.atb.ptu.plugin.hwinf/1.0.0")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user