Adding header files (sax)
This commit is contained in:
		
							
								
								
									
										103
									
								
								include/com.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								include/com.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,103 @@
 | 
			
		||||
//CAT is always master, no receive before request
 | 
			
		||||
 | 
			
		||||
#ifndef SER_H
 | 
			
		||||
#define SER_H
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <QMainWindow>
 | 
			
		||||
#include <QString>
 | 
			
		||||
#include <QTimer>
 | 
			
		||||
#include <QSerialPort>
 | 
			
		||||
#include "tslib.h"
 | 
			
		||||
#include "controlBus.h"
 | 
			
		||||
 | 
			
		||||
#define MAXTELEGRAMLEN          90
 | 
			
		||||
 | 
			
		||||
// display all inputs and outputs in output window:
 | 
			
		||||
//#define PRINTALLDEBUGS          1
 | 
			
		||||
 | 
			
		||||
class T_com : public QMainWindow        //,  public QPlainTextEdit
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
 | 
			
		||||
    // complete send message (protocol frame)
 | 
			
		||||
    QByteArray  sendBuffer;         //[MAXTELEGRAMLEN];
 | 
			
		||||
    uint16_t     sendLen;            // >0: Daten Sendebereit, nach senden wieder auf 0 setzen
 | 
			
		||||
 | 
			
		||||
    // right after reception:
 | 
			
		||||
    QByteArray  rawInput;           //[MAXTELEGRAMLEN];
 | 
			
		||||
    uint16_t     rawInLen;           // 0: keine neuen Daten erhalten
 | 
			
		||||
 | 
			
		||||
//    QSerialPort *CatSerial = nullptr;
 | 
			
		||||
    QSerialPort *CatSerial;
 | 
			
		||||
 | 
			
		||||
    //char oeffneSerialPort();
 | 
			
		||||
    char open_Serial_Port();
 | 
			
		||||
    void closeSerialPort();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
private slots:
 | 
			
		||||
    void readSomeBytes(void);
 | 
			
		||||
    void serialSendComplete(void);
 | 
			
		||||
    //void incomingWake(void);    //bool LevelOfTheBit);
 | 
			
		||||
    void receiveTO(void);
 | 
			
		||||
    void ser_ISR100ms();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    T_com(QWidget *parent = nullptr);
 | 
			
		||||
    ~T_com();
 | 
			
		||||
 | 
			
		||||
    QTimer *serRecTime;
 | 
			
		||||
 | 
			
		||||
    bool isPortOpen(void);
 | 
			
		||||
 | 
			
		||||
    void writeToSerial(const QByteArray &data, uint16_t sendLength);
 | 
			
		||||
 | 
			
		||||
    bool readFromSerial(QByteArray &data, uint16_t &sendLength);
 | 
			
		||||
        // retval: true: data available
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    uint8_t getAllPortPins(void);
 | 
			
		||||
        // rs232pins: all signals bitwise coded in one byte:
 | 
			
		||||
        // readback output:  bit 0=TxD(=output)      bit2=DTR (=output)    bit 6=RTS (=output)
 | 
			
		||||
        // unused inputs:       bit1=RxD    bit 3=DCD    bit 5 = RING
 | 
			
		||||
        // handshake inputs:           bit 4=DSR (0x10)     bit 7=CTS (0x80)
 | 
			
		||||
 | 
			
		||||
    bool getHSin_CTS(void);
 | 
			
		||||
        // return the CTS Handshake input): true= high level (+8V)
 | 
			
		||||
 | 
			
		||||
    bool getHSin_DSR(void);
 | 
			
		||||
        // return the DSR Handshake input): true= high level (+8V)
 | 
			
		||||
 | 
			
		||||
    bool setHSout_RTS(bool hsout);
 | 
			
		||||
        // hsout true=positiv voltage +12V  false= -12V
 | 
			
		||||
        // retval: true=setting OK
 | 
			
		||||
 | 
			
		||||
    bool setHSout_DTR(bool hsout);
 | 
			
		||||
        // hsout true=positiv voltage +12V  false= -12V
 | 
			
		||||
        // retval: true=setting OK
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
    void receivingFinished();
 | 
			
		||||
    void sendingFinished();
 | 
			
		||||
    //void wasWokenBySerialHandshake();
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif // SER_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										194
									
								
								include/controlBus.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										194
									
								
								include/controlBus.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,194 @@
 | 
			
		||||
#ifndef CONTROLBUS_H
 | 
			
		||||
#define CONTROLBUS_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include "tslib.h"
 | 
			
		||||
#include <QString>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//          control serial interface   gui <--> serial
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void epi_setSerial(int BaudNr, QString BaudStr, QString ComName, uint8_t connect);
 | 
			
		||||
    // Actions: open serial port with parameters
 | 
			
		||||
 | 
			
		||||
void epi_closeSerial(void);
 | 
			
		||||
// Actions: close serial port
 | 
			
		||||
 | 
			
		||||
// Actions, GUI Buttons -> API, start cyclic transmission
 | 
			
		||||
void epi_startEmmision(char start);   // 1: start sending activated
 | 
			
		||||
 | 
			
		||||
//void epi_setPeriodicSendTimeVal(uint16_t val);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  Port -> API
 | 
			
		||||
void gpi_serialChanged(void);
 | 
			
		||||
    // serial confirms that port was closed or opened
 | 
			
		||||
 | 
			
		||||
// Actions, API -> serialPort
 | 
			
		||||
uint8_t gpi_getSerialConn(void);      // connect if 1, disconnect if 0
 | 
			
		||||
 | 
			
		||||
int gpi_getBaudNr(void);
 | 
			
		||||
 | 
			
		||||
QString gpi_getComPortName(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_serialIsOpen(bool offen);
 | 
			
		||||
 | 
			
		||||
bool epi_isSerialPortOpen();
 | 
			
		||||
    // true: port is open   false: port is closed
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Meldung von TabCom an Datif: starte zyklische Sendung:
 | 
			
		||||
bool gpi_isEmmisionOn(void);
 | 
			
		||||
 | 
			
		||||
//uint16_t gpi_getPeriodicSendTimeVal();
 | 
			
		||||
 | 
			
		||||
//bool gpi_PeriodicSendTimeHasChanged();
 | 
			
		||||
 | 
			
		||||
//void epi_setCurrSlavAddr(int slavAd);
 | 
			
		||||
 | 
			
		||||
//int gpi_getCurrSlavAddr(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//          Status Display    gui <--> serial
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
//---------------------
 | 
			
		||||
    // Statuszeile COM Port  (serial Port) (open, closed)
 | 
			
		||||
// Display in tab_com
 | 
			
		||||
QString epi_getTxt4comStateLine(void);
 | 
			
		||||
void epi_clrTxt4comStateLine();
 | 
			
		||||
    // GUI: get Text for serial Comport-State Line
 | 
			
		||||
 | 
			
		||||
//---------------------
 | 
			
		||||
// Statuszeile Handshakes (serial Control)   flow.cpp
 | 
			
		||||
// geht überhaupt was raus? kommt überhaupt was zurück?
 | 
			
		||||
// I
 | 
			
		||||
QString epi_getTxt4HsStateLine(void);
 | 
			
		||||
void epi_clrTxt4HsStateLine();
 | 
			
		||||
    // GUI: get Text
 | 
			
		||||
 | 
			
		||||
// II Master receive state (empfangenes Telgramm OK? crc? length?  )
 | 
			
		||||
// Statuszeile Auswertung der SlaveResponse (serial Frame, CRC usw)  (prot.cpp)
 | 
			
		||||
QString epi_getTxt4masterStateLine(void);
 | 
			
		||||
void epi_clrTxt4masterStateLine();
 | 
			
		||||
 | 
			
		||||
// III Slave receive (from Master) OK? if then show results, if not then show errors
 | 
			
		||||
// entweder Empfangsfehler anzeigen (crc? length?) oder result OUT-OK, OUT_ERR, IN_OK, IN_ERR
 | 
			
		||||
// Hintergrund: wenn der Slave Fehler im Master-Telegramm gefunden hat, dann kann er es auch
 | 
			
		||||
// nicht verwenden und nichts ausgeben oder einlesen
 | 
			
		||||
QString epi_getTxt4resultStateLine(void);
 | 
			
		||||
void epi_clrTxt4resultStateLine();
 | 
			
		||||
 | 
			
		||||
// IV  Statuszeile Sende- und Empfangsdaten (Datif)
 | 
			
		||||
// Display in tab_com
 | 
			
		||||
QString epi_getTxt4dataStateLine(void);
 | 
			
		||||
void epi_clrTxt4dataStateLine();
 | 
			
		||||
// GUI: get Text for serial Comport-State Line
 | 
			
		||||
 | 
			
		||||
// V, unten, Datif
 | 
			
		||||
QString epi_getTxt4datifLine(void);
 | 
			
		||||
void epi_clrTxt4datifLine();
 | 
			
		||||
 | 
			
		||||
//---------------------
 | 
			
		||||
 | 
			
		||||
        // sende-empfangs-Rohdaten-Fenster
 | 
			
		||||
// Display in tab_com
 | 
			
		||||
QString epi_getTxt4RsDiagWin(void);
 | 
			
		||||
void epi_clrTxt4RsDiagWin();
 | 
			
		||||
 | 
			
		||||
QString epi_get2ndTxt4RsDiagWin(void);
 | 
			
		||||
void epi_clr2ndTxt4RsDiagWin();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Statuszeile COM Port  (serial Port) (open, closed)
 | 
			
		||||
// Display in tab_com
 | 
			
		||||
void gpi_setTxt4comStateLine(QString txtline);
 | 
			
		||||
    // serial: write Text to be displayed in serial Comport-State line (like "connected")
 | 
			
		||||
    // used in vcp.cpp, links in tabCom
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Statuszeile Handshakes (serial Control)
 | 
			
		||||
// I obere Zeile
 | 
			
		||||
void gpi_setTxt4HsStateLine(QString txtline);
 | 
			
		||||
    // used in flow.cc
 | 
			
		||||
 | 
			
		||||
// II
 | 
			
		||||
void gpi_setTxt4masterStateLine(QString txtline);
 | 
			
		||||
 | 
			
		||||
// III
 | 
			
		||||
void gpi_setTxt4resultStateLine(QString txtline);
 | 
			
		||||
 | 
			
		||||
// IV
 | 
			
		||||
void gpi_setTxt4dataStateLine(QString txtline);
 | 
			
		||||
    // serial: write Text to be displayed in serial Comport-State line (like "connected")
 | 
			
		||||
    // used in prot.cpp
 | 
			
		||||
 | 
			
		||||
// V  unten:
 | 
			
		||||
void gpi_setTxt4datifLine(QString txtline);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// sende-empfangs-Rohdaten-Fenster
 | 
			
		||||
// Display in tab_com
 | 
			
		||||
void gpi_setTxt4RsDiagWin(QString txtline);
 | 
			
		||||
void gpi_set2ndTxt4RsDiagWin(QString txtline);
 | 
			
		||||
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//          Memory for Slave responses, common data
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
bool epi_getResult_serialTestOK();
 | 
			
		||||
// retval: true: test was successful, got right response
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// result of serial line test, slave sent fixed string
 | 
			
		||||
void gpi_storeResult_serialTestOK(bool wasOn);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//          restore just received data
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_startNewRequest();
 | 
			
		||||
    // called by Datif
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeResultOfLastRequest(bool answisok);
 | 
			
		||||
    // written by Datif
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getResultOfLastRequest();
 | 
			
		||||
    // retval: 0: in progress  1: OK  2: error
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeRecPayLoad(uint8_t RdDlen, uint8_t *receivedData);
 | 
			
		||||
    // stored by Datif
 | 
			
		||||
 | 
			
		||||
uint16_t epi_getLastPayLoad(uint16_t plBufSiz, uint8_t *payLoad);
 | 
			
		||||
    // get data back in *pl, max 64 byte
 | 
			
		||||
    // 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										223
									
								
								include/datIf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										223
									
								
								include/datIf.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,223 @@
 | 
			
		||||
// Data Interface between slave (DC) and pi buffer
 | 
			
		||||
// determines sending and receiving order of data
 | 
			
		||||
// cares for storing input data and restoring output data
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef DIF_H
 | 
			
		||||
#define DIF_H
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include "tslib.h"
 | 
			
		||||
#include "prot.h"
 | 
			
		||||
#include "dcBL.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <QMainWindow>
 | 
			
		||||
#include <QString>
 | 
			
		||||
#include <QTimer>
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
#include <QDateTime>
 | 
			
		||||
#include <QDate>
 | 
			
		||||
#include <QTime>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// WRITE Commands (e.g. switch relay)
 | 
			
		||||
#define CMD2DC_sendTime             0x1310
 | 
			
		||||
#define CMD2DC_setWakeFrequ         0x1320
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_MOV_UPLOCK           0x1801
 | 
			
		||||
#define CMD2DC_MOV_DNLOCK           0x1802
 | 
			
		||||
#define CMD2DC_UPPER_DOOR           0x1810
 | 
			
		||||
#define CMD2DC_LOWER_DOOR           0x1811
 | 
			
		||||
#define CMD2DC_VAULT_DOOR           0x1812
 | 
			
		||||
 | 
			
		||||
// neu 7.10.21:
 | 
			
		||||
#define CMD2DC_REJMOT_ON            0x1813
 | 
			
		||||
#define CMD2DC_REJMOT_RUN           0x1814
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_LED_COIN             0x1204
 | 
			
		||||
#define CMD2DC_LED_ILLU             0x1205
 | 
			
		||||
#define CMD2DC_LED_TICKET           0x1206
 | 
			
		||||
#define CMD2DC_LED_START            0x1208
 | 
			
		||||
#define CMD2DC_LED_PIN              0x1207
 | 
			
		||||
#define CMD2DC_LED_IN               0x1209
 | 
			
		||||
#define CMD2DC_FAN                  0x1210
 | 
			
		||||
#define CMD2DC_SIREN                0x1211
 | 
			
		||||
#define CMD2DC_BARRIER              0x1212
 | 
			
		||||
#define CMD2DC_WAKEPTU              0x1218
 | 
			
		||||
#define CMD2DC_SWITCHAUXPWR         0x1220
 | 
			
		||||
#define CMD2DC_SWITCHAUXDDR         0x1222
 | 
			
		||||
#define CMD2DC_SWITCHAUXOUT         0x1224
 | 
			
		||||
#define CMD2DC_UCONTACTON           0x1226
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_DEVICE_PARAM         0x2000
 | 
			
		||||
#define CMD2DC_SEND_MACH_ID         0x2002
 | 
			
		||||
#define CMD2DC_RDBK_DEV_PARA        0x2001
 | 
			
		||||
#define CMD2DC_RDBK_MACH_ID         0x2003
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// --------------------------- MDB --------------
 | 
			
		||||
#define CMD2DC_MDB_ON               0x2800
 | 
			
		||||
#define CMD2DC_MDB_GET_STATE        0x2801  // REQ
 | 
			
		||||
#define CMD2DC_MDB_DORESET          0x2802
 | 
			
		||||
#define CMD2DC_MDB_SETWAK           0x2811
 | 
			
		||||
//#define CMD2DC_MDB_GETWAK           0x2812  // REQ not nec.
 | 
			
		||||
#define CMD2DC_MDB_SENDCMD          0x2820
 | 
			
		||||
#define CMD2DC_MDB_SENDMSG          0x2821
 | 
			
		||||
#define CMD2DC_MDB_GETRESP          0x2822  // REQ
 | 
			
		||||
 | 
			
		||||
// --------------------------- EMP --------------
 | 
			
		||||
#define CMD2DC_EMP_SET              0x2830
 | 
			
		||||
#define CMD2DC_EMP_GET_ALL          0x2831  // REQ
 | 
			
		||||
#define CMD2DC_EMP_STARTPOLL        0x2832
 | 
			
		||||
#define CMD2DC_EMP_STARTPAY         0x2834
 | 
			
		||||
#define CMD2DC_EMP_STOPPAY          0x2836
 | 
			
		||||
#define CMD2DC_EMP_GOTCOIN          0x2837  // REQ
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_SHUTTER_OPEN         0x2911
 | 
			
		||||
#define CMD2DC_ESCR_OPEN            0x2920
 | 
			
		||||
#define CMD2DC_ESCR_TAKE            0x2921
 | 
			
		||||
#define CMD2DC_ESCR_RETURN          0x2922
 | 
			
		||||
#define CMD2DC_MOD_ON               0x2940
 | 
			
		||||
#define CMD2DC_MOD_WAK              0x2941
 | 
			
		||||
#define CMD2DC_CRED_ON              0x2960
 | 
			
		||||
#define CMD2DC_CRED_WAK             0x2961
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// READ Commands ((e.g. get input)
 | 
			
		||||
#define CMD2DC_TestSerial           0x1101
 | 
			
		||||
#define CMD2DC_GetSerialConfig      0x1107
 | 
			
		||||
#define CMD2DC_RdBkHWversion        0x110A
 | 
			
		||||
#define CMD2DC_RdBkSWversion        0x110B
 | 
			
		||||
#define CMD2DC_RdBkDCstate          0x110C
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_RdBkUID              0x1305
 | 
			
		||||
#define CMD2DC_RdBkTime             0x1313
 | 
			
		||||
#define CMD2DC_RdBkAnalog           0x1550
 | 
			
		||||
#define CMD2DC_GetAllInputs         0x1201
 | 
			
		||||
#define CMD2DC_RdBkAllOutputs       0x1202
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_MIFREADERON          0x2900
 | 
			
		||||
#define CMD2DC_ATB_CREATE           0x2907
 | 
			
		||||
// Mif read data:
 | 
			
		||||
#define CMD2DC_RdBk_MifReader       0x2902
 | 
			
		||||
#define CMD2DC_RdBk_Mifcard         0x2903
 | 
			
		||||
#define CMD2DC_RdBk_AtbCardType     0x2905
 | 
			
		||||
//#define CMD2DC_RdBk_CardData        0x2906
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// higher Level operation commands
 | 
			
		||||
//#define CMD2DC_SHUTTER_ONE          0x2912
 | 
			
		||||
#define CMD2DC_SHUTTER_COIN         0x2913
 | 
			
		||||
#define CMD2DC_SHUTTER_OPEN3S       0x2912
 | 
			
		||||
#define CMD2DC_SEND_SHUT_TIME       0x2915
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_ESCR_TAKE            0x2921
 | 
			
		||||
#define CMD2DC_ESCR_RETURN          0x2922
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_PRINTERON            0x2A01
 | 
			
		||||
#define CMD2DC_RdBk_PrnState        0x2A02
 | 
			
		||||
#define CMD2DC_RdBk_PrnFonts        0x2A12
 | 
			
		||||
#define CMD2DC_RdBk_AllPrnData      0x2A40
 | 
			
		||||
 | 
			
		||||
                                            // nr of params:
 | 
			
		||||
#define CMD2DC_PRI_SYS_CMD          0x2A03  // 3
 | 
			
		||||
#define CMD2DC_PRI_ESC_CMD          0x2A04  // 4
 | 
			
		||||
#define CMD2DC_PRI_SETUP            0x2A05  // 5
 | 
			
		||||
#define CMD2DC_PRI_MOVE             0x2A06  // 2
 | 
			
		||||
#define CMD2DC_PRI_SETFONT          0x2A10  // 4
 | 
			
		||||
#define CMD2DC_PRI_SETLETTER        0x2A11  // 3
 | 
			
		||||
#define CMD2DC_PRI_CUT              0x2A13  // 1
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_PRI_PRINT_TXT        0x2A14  // 64
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_PRI_LF               0x2A15  // 1
 | 
			
		||||
#define CMD2DC_PRI_PRIFONTTABLE     0x2A16
 | 
			
		||||
#define CMD2DC_PRI_BARCODE          0x2A17  // ca 15...25
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_STOR_QR_DATA         0x2A18  // 150
 | 
			
		||||
#define CMD2DC_PRI_QR_CODE          0x2A19  // 0
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_PRI_LOGOFROMFLASH    0x2A1A  // 2
 | 
			
		||||
 | 
			
		||||
#define CMD2DC_PRI_STORE_DOC        0x2A41  // 1
 | 
			
		||||
#define CMD2DC_PRI_DOCUMENT_NR      0x2A42  // 1 + 64
 | 
			
		||||
#define CMD2DC_PRI_CLEAR_DOC        0x2A43  // 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FIX_SLAVE_ADDR          0
 | 
			
		||||
#define SEND_ATONCE             1
 | 
			
		||||
#define SENDCOMBINED            0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class T_datif : public QMainWindow
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT    
 | 
			
		||||
 | 
			
		||||
    char sendINrequestsAutomatic(void);
 | 
			
		||||
        // sende alle Befehle um die Eingangsdaten abzufragen der Reihe nach
 | 
			
		||||
    char loadRecDataFromFrame();
 | 
			
		||||
    void datif_startSending(void);
 | 
			
		||||
    void datif_sendIOrequest(uint16_t WRcmd, uint16_t RDcmd, uint8_t nrOfWrData);
 | 
			
		||||
 | 
			
		||||
    void datif_send8byteOutCmd(uint16_t WRcmd, uint16_t RDcmd);
 | 
			
		||||
 | 
			
		||||
    bool verifyLineTestresponse(uint8_t RdDlen, uint8_t *receivedData);
 | 
			
		||||
    void datif_OUT_setTime(void);
 | 
			
		||||
    uint8_t datif_OUT_SendRandomData(uint8_t *buf, uint8_t Length);
 | 
			
		||||
 | 
			
		||||
    void datif_send64byteOutCmd(uint16_t WRcmd, uint16_t addr, uint16_t RDcmd);
 | 
			
		||||
 | 
			
		||||
    void datif_sendToMemory(uint16_t WRcmd, uint16_t docNr, uint16_t blockNr, uint8_t *data64);
 | 
			
		||||
        // send printer documents to DC2 memory
 | 
			
		||||
        // docNr: 0...15(31)    with 1280 byte each (20 blocks a 64byte)
 | 
			
		||||
        // blockNr=0...19   with 64byte each
 | 
			
		||||
        // docNr =transmitted in WRITEADDRESS high byte
 | 
			
		||||
        // blockNr=transmitted in WRITEADDRESS low byte
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    T_prot *myDCIF;
 | 
			
		||||
    QTimer *datif_trigger;
 | 
			
		||||
    uint8_t selectedSlaveAddr;
 | 
			
		||||
 | 
			
		||||
private slots:
 | 
			
		||||
    char datif_cycleSend();
 | 
			
		||||
    void StoredRecData();
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    T_datif(QWidget *parent = nullptr);
 | 
			
		||||
 | 
			
		||||
    void resetChain(void);
 | 
			
		||||
    char isPortOpen(void);
 | 
			
		||||
    void sendWRcommand(uint16_t nxtAsCmd);
 | 
			
		||||
        // Sende Schreibbefehle die bereits vorher asynchron gespeichert wurden
 | 
			
		||||
    void send_requests(uint16_t nextWrCmd);
 | 
			
		||||
    void sendHighLevel(uint16_t nxtHLCmd);
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
    void ResponseRecieved();
 | 
			
		||||
        //the requested data are stored in peripheral image
 | 
			
		||||
        // can be loaded with epi
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // CI_H
 | 
			
		||||
							
								
								
									
										93
									
								
								include/dcBL.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								include/dcBL.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,93 @@
 | 
			
		||||
#ifndef DCBL_H
 | 
			
		||||
#define DCBL_H
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include "qbytearray.h"
 | 
			
		||||
#include "qstring.h"
 | 
			
		||||
#include <QFile>
 | 
			
		||||
 | 
			
		||||
uint8_t dcBL_prepareDC_BLcmd(uint8_t Cmd, uint8_t SendDataLength, uint8_t *sendData, uint8_t *outBuf);
 | 
			
		||||
// 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
 | 
			
		||||
 | 
			
		||||
uint8_t dcBL_readBLversion(uint8_t *sendData);
 | 
			
		||||
    // minimum size of sendData-buffer: 5byte  retval: length
 | 
			
		||||
 | 
			
		||||
uint8_t dcBL_readFWversion(uint8_t *sendData);
 | 
			
		||||
    // minimum size of sendData-buffer: 5byte  retval: length
 | 
			
		||||
 | 
			
		||||
uint8_t dcBL_exitBL(uint8_t *sendData);
 | 
			
		||||
    // minimum size of sendData-buffer: 5byte  retval: length
 | 
			
		||||
 | 
			
		||||
uint8_t dcBL_sendFlashStartAddr2BL(uint32_t startAddr, uint8_t *sendData);
 | 
			
		||||
    // minimum size of sendData-buffer: 13byte    retval: length (9...13)
 | 
			
		||||
 | 
			
		||||
uint8_t dcBL_writeLastPage(uint8_t *sendData);
 | 
			
		||||
    // minimum size of sendData-buffer: 5byte  retval: length
 | 
			
		||||
 | 
			
		||||
uint8_t dcBL_restartDC(uint8_t *sendData);
 | 
			
		||||
    // minimum size of sendData-buffer: 20 byte  retval: length
 | 
			
		||||
 | 
			
		||||
uint8_t dcBL_activatBootloader(uint8_t *sendData);
 | 
			
		||||
    // minimum size of sendData-buffer: 20 byte  retval: length
 | 
			
		||||
 | 
			
		||||
uint8_t dcBL_getResponse(uint8_t *respBuff);
 | 
			
		||||
    // retval: nr of received bytes
 | 
			
		||||
 | 
			
		||||
bool dcBL_responseOK();
 | 
			
		||||
    // retval: 0: response OK (cmd |0x80)    1: response error (cmd or "0xe0")
 | 
			
		||||
 | 
			
		||||
bool dcBL_importBinFile(QByteArray readBinFile, uint32_t fileSize, char withDispl);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
bool dcBL_isTextMemFree(void);
 | 
			
		||||
 | 
			
		||||
void dcBL_writeText(QString newTxt);
 | 
			
		||||
 | 
			
		||||
bool dcBL_checkForText(void);
 | 
			
		||||
    // if pointer at 0 then no more content
 | 
			
		||||
 | 
			
		||||
QString dcBL_readText(void);
 | 
			
		||||
    // read from 0...9 (oldest first)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void dcBL_iniChain(void);
 | 
			
		||||
 | 
			
		||||
uint8_t dcBL_startChain(void);
 | 
			
		||||
 | 
			
		||||
uint8_t dcBL_runChain(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uint8_t dcBL_getResult(void);
 | 
			
		||||
// call after every step to what's going on....
 | 
			
		||||
//  1: connected to BL
 | 
			
		||||
//  2: transmission started
 | 
			
		||||
//  3: transmission successful
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define RAW_BL_DATALEN      150
 | 
			
		||||
void gpi_storeRawReceivedData(uint8_t  RdDlen, uint8_t *receivedData);
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getRawReceivedData(uint8_t *receivedData);
 | 
			
		||||
    // retval=length, will be zeroed after first reading
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getRawRecLength(void);
 | 
			
		||||
    // retval=length
 | 
			
		||||
 | 
			
		||||
QString epi_getRawReceivedString();
 | 
			
		||||
 | 
			
		||||
void epi_clrRawReceivedString();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif // DCBL_H
 | 
			
		||||
							
								
								
									
										1177
									
								
								include/hwapi.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1177
									
								
								include/hwapi.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										850
									
								
								include/interfaces.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										850
									
								
								include/interfaces.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,850 @@
 | 
			
		||||
#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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										101
									
								
								include/prot.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								include/prot.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
 | 
			
		||||
#ifndef SERIAL_FRAME_H
 | 
			
		||||
#define SERIAL_FRAME_H
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <QMainWindow>
 | 
			
		||||
#include <QString>
 | 
			
		||||
#include <QTimer>
 | 
			
		||||
#include "tslib.h"
 | 
			
		||||
#include "com.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 get's OUT-data from datif,
 | 
			
		||||
 get's IN-data from datif
 | 
			
		||||
 get's send command from datif
 | 
			
		||||
    makes frame and calls: isSerialFree(), setSendData(),
 | 
			
		||||
    if not free retrigger datif sending period (normally 500ms or 50ms for direct cmds)
 | 
			
		||||
 | 
			
		||||
    with control-signal: gotReceiveData():
 | 
			
		||||
        getRecData();
 | 
			
		||||
        send results to diag window/line
 | 
			
		||||
        send IN-data to datif
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define     FRAME_DATALEN       64
 | 
			
		||||
#define     FRAME_MAXLEN        FRAME_DATALEN+20
 | 
			
		||||
#define     BL_DATA_LEN         150
 | 
			
		||||
 | 
			
		||||
class T_prot : public QMainWindow
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
 | 
			
		||||
    // Dateneingang von Datif:
 | 
			
		||||
    uint8_t  SendDataValid;     // bit1: WR OK  bit 2: RD OK
 | 
			
		||||
    uint16_t slaveAddr;
 | 
			
		||||
 | 
			
		||||
    uint16_t WriteCommand;
 | 
			
		||||
    uint16_t WriteAddr;
 | 
			
		||||
    uint8_t  WrDataLength;
 | 
			
		||||
    uint8_t  ui8OutputData[FRAME_DATALEN];
 | 
			
		||||
    char     chOut_Data[FRAME_DATALEN];
 | 
			
		||||
    uint8_t  kindOfData;    // 0: binaries, 1:text
 | 
			
		||||
 | 
			
		||||
    uint16_t ReadCommand;
 | 
			
		||||
    uint16_t ReadAddr;
 | 
			
		||||
    uint16_t reserve;
 | 
			
		||||
 | 
			
		||||
    // Ausgangs-Daten, werden vom Datif geholt:
 | 
			
		||||
    // nur wenn CommandState und readState OK
 | 
			
		||||
    uint8_t  RecSlaveAddr;
 | 
			
		||||
    bool    INdataValid;        // nur true wenn CommandState OK und readState OK
 | 
			
		||||
    uint16_t readSource;        // diese (Eingangs-)Daten stehen im Puffer
 | 
			
		||||
    uint16_t readAddress;       // von dieser Adr wurden die Daten gelesen
 | 
			
		||||
    //uint8_t  lastWakeSrc;       // falls der Slave den Master geweckt hat
 | 
			
		||||
    uint8_t  RdDataLength;
 | 
			
		||||
    uint8_t  InputData[FRAME_DATALEN];
 | 
			
		||||
 | 
			
		||||
    // 11.11.2020:
 | 
			
		||||
    uint8_t  BLsendDataLength;
 | 
			
		||||
    uint8_t  ui8BLsendData[BL_DATA_LEN];
 | 
			
		||||
 | 
			
		||||
    T_com *mySerialPort;
 | 
			
		||||
 | 
			
		||||
    void startPacking(void);
 | 
			
		||||
    uint8_t FramecheckInData(uint8_t *Inbuf, uint16_t LL);
 | 
			
		||||
    uint8_t CheckInResult(uint8_t *Inbuf);
 | 
			
		||||
    uint8_t CheckInData(uint8_t *recBuffer);
 | 
			
		||||
 | 
			
		||||
private slots:
 | 
			
		||||
    void analyseRecData(void);
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    T_prot();
 | 
			
		||||
    bool isPortOpen(void);
 | 
			
		||||
    bool isSerialFree(void);
 | 
			
		||||
    void setUserWriteData(uint16_t WriteCmd, uint16_t WrAddr, uint8_t  WrDatLen, uint8_t *data);
 | 
			
		||||
    void setUserWriteData(uint16_t WriteCmd, uint16_t WrAddr);
 | 
			
		||||
    void setUserWriteData(uint16_t WriteCmd);
 | 
			
		||||
    void setUserWriteText(uint16_t WriteCmd, uint16_t WrAddr, uint8_t  WrDatLen, char *data);
 | 
			
		||||
 | 
			
		||||
    void setUserWrite1DB(uint16_t WriteCmd, uint16_t WrAddr, uint8_t val);
 | 
			
		||||
    void setUserWrite2DB(uint16_t WriteCmd, uint16_t WrAddr, uint8_t val0, uint8_t val1);
 | 
			
		||||
 | 
			
		||||
    void setUserReadData( uint16_t ReadCmd,  uint16_t RdAddr, uint16_t reserv);
 | 
			
		||||
    void setUserReadData( uint16_t ReadCmd,  uint16_t RdAddr);
 | 
			
		||||
    void setUserReadData( uint16_t ReadCmd);
 | 
			
		||||
 | 
			
		||||
    void setBLsendData( uint8_t len, uint8_t *buf);
 | 
			
		||||
 | 
			
		||||
    void sendUserData(uint16_t slaveAdr);
 | 
			
		||||
    bool ifDataReceived();
 | 
			
		||||
    bool getReceivedInData(uint8_t  *SlavAddr, uint16_t *readSrc, uint16_t *readAddr,
 | 
			
		||||
                           uint8_t  *RdDlen, uint8_t *receivedData);
 | 
			
		||||
        // retval: data valid, only one time true
 | 
			
		||||
signals:
 | 
			
		||||
    void framerecieved();   //bool gotINdata);
 | 
			
		||||
    void rawDataRecieved();
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // T_prot_H
 | 
			
		||||
							
								
								
									
										217
									
								
								include/sendWRcmd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								include/sendWRcmd.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,217 @@
 | 
			
		||||
 | 
			
		||||
#ifndef SENDWRCMDS_DEFS_H
 | 
			
		||||
#define SENDWRCMDS_DEFS_H
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include "tslib.h"
 | 
			
		||||
#include <QString>
 | 
			
		||||
 | 
			
		||||
// asynch. Commands
 | 
			
		||||
// store OUTPUT commands until time to send
 | 
			
		||||
// problem: OUT commands are set if a button is pressed or a transaction event happens
 | 
			
		||||
// so it's never synchron with sending grid
 | 
			
		||||
// but sending must apply the 100ms time grid as we have to wait for the response before sending the next command!!!
 | 
			
		||||
 | 
			
		||||
// Level 0 (DC direct)
 | 
			
		||||
#define SENDDIRCMD_TestSerial           1
 | 
			
		||||
#define SENDDIRCMD_MakeReset            2
 | 
			
		||||
#define SENDDIRCMD_setTime              3
 | 
			
		||||
#define SENDDIRCMD_setWakeFrequ         4
 | 
			
		||||
 | 
			
		||||
// Level 1 (DC DO's switching connected parts)
 | 
			
		||||
#define SENDDIRCMD_MOVEUP_LOCK            5
 | 
			
		||||
#define SENDDIRCMD_MOVEDN_LOCK            6
 | 
			
		||||
#define SENDDIRCMD_OPENUP_DOOR            7
 | 
			
		||||
#define SENDDIRCMD_OPENDN_DOOR            8
 | 
			
		||||
#define SENDDIRCMD_LEDILLU              9
 | 
			
		||||
#define SENDDIRCMD_LEDCOIN              10
 | 
			
		||||
#define SENDDIRCMD_LEDTICKET            11
 | 
			
		||||
#define SENDDIRCMD_LEDPAD               12
 | 
			
		||||
#define SENDDIRCMD_LEDSTART             13
 | 
			
		||||
#define SENDDIRCMD_LEDINSIDE            14
 | 
			
		||||
//#define SENDDIRCMD_LED_ALL              15
 | 
			
		||||
#define SENDDIRCMD_FAN                  16
 | 
			
		||||
#define SENDDIRCMD_LAERM                17
 | 
			
		||||
#define SENDDIRCMD_REL1                 18
 | 
			
		||||
#define SENDDIRCMD_WAKEPTU              20
 | 
			
		||||
#define SENDDIRCMD_AUXPWR               21
 | 
			
		||||
#define SENDDIRCMD_AUXDDR               22
 | 
			
		||||
#define SENDDIRCMD_AUXOUT               23
 | 
			
		||||
 | 
			
		||||
#define SENDDIRCMD_UCONTACT_ON          30
 | 
			
		||||
#define SENDDIRCMD_PRN2_SWONOFF         31
 | 
			
		||||
 | 
			
		||||
#define SENDDIRCMD_MIF_SWONOFF          32      // 0x2900
 | 
			
		||||
#define SENDDIRCMD_MIF_ATBCREATE        33      // 0x2907
 | 
			
		||||
 | 
			
		||||
#define SENDDIRCMD_MOD_SWONOFF          40
 | 
			
		||||
#define SENDDIRCMD_MOD_WAKE             41
 | 
			
		||||
#define SENDDIRCMD_MDB_POWER            42
 | 
			
		||||
#define SENDDIRCMD_MDB_WAKE             43
 | 
			
		||||
#define SENDDIRCMD_CRED_ON              44
 | 
			
		||||
#define SENDDIRCMD_CRED_WAKE            45
 | 
			
		||||
 | 
			
		||||
#define SENDDIRCMD_SHUT_MOV             50
 | 
			
		||||
#define SENDDIRCMD_ESCRO_MOV            51
 | 
			
		||||
#define SENDDIR_OPENVAULT               52
 | 
			
		||||
#define SENDDIR_REJMOT_ON               53
 | 
			
		||||
#define SENDDIR_REJMOT_RUN              54
 | 
			
		||||
 | 
			
		||||
// Level 2 (serial from DC to devices)
 | 
			
		||||
#define SEND_REQU_SERCONF               100
 | 
			
		||||
#define SEND_REQU_HWversion             101
 | 
			
		||||
#define SEND_REQU_SWversion             102
 | 
			
		||||
#define SEND_REQU_CONDITION             103
 | 
			
		||||
#define SEND_REQU_UID                   104
 | 
			
		||||
#define SEND_REQU_TIME                  105
 | 
			
		||||
    // includes wake frequency
 | 
			
		||||
#define SEND_REQU_ANALOGS               110
 | 
			
		||||
#define SEND_REQU_DIG_INPUTS            111
 | 
			
		||||
#define SEND_REQU_DIG_OUTPUTS           112
 | 
			
		||||
 | 
			
		||||
#define SEND_REQU_PRN_STATE             120
 | 
			
		||||
#define SEND_REQU_PRN_FONTS             121
 | 
			
		||||
#define SEND_REQU_PRN_ALL               122
 | 
			
		||||
 | 
			
		||||
#define SEND_REQU_MIFREADER             123
 | 
			
		||||
    // Type and state of reader
 | 
			
		||||
 | 
			
		||||
#define SEND_REQU_MIFCARD               124
 | 
			
		||||
    // Type, UID, Header of card
 | 
			
		||||
    // read one card sector
 | 
			
		||||
    // sectors must be addressed by RD_ADD
 | 
			
		||||
 | 
			
		||||
#define SEND_REQU_MIF_ATB_TYPE          125
 | 
			
		||||
 | 
			
		||||
#define SEND_REQU_MDB_GETSTAT           126
 | 
			
		||||
//#define SEND_REQU_MDB_GETWAK            127
 | 
			
		||||
#define SEND_REQU_MDB_GETRESP           128
 | 
			
		||||
#define SEND_REQU_EMP_GETALL            129
 | 
			
		||||
#define SEND_REQU_EMP_GETCOIN           130
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define SENDDIRCMD_DEVICE_PARA          131
 | 
			
		||||
#define SENDDIRCMD_MACHINE_ID           132
 | 
			
		||||
#define SEND_REQU_DEVICE_PARA           133
 | 
			
		||||
#define SEND_REQU_MACINE_ID             134
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// further: mdb state, coinchecker state, bill state, modem state, credit_state....
 | 
			
		||||
 | 
			
		||||
#define SENDDIRCMD_SHUTOPENBYTIME       60
 | 
			
		||||
#define SENDDIRCMD_SHUTOPENBYCOIN       61
 | 
			
		||||
//#define SENDDIRCMD_SHUT_SENDTIME        62
 | 
			
		||||
 | 
			
		||||
#define SENDDIRCMD_ESCRO_TAKE           63
 | 
			
		||||
#define SENDDIRCMD_ESCRO_GIVE           64
 | 
			
		||||
 | 
			
		||||
#define SENDDIRCMD_PRN_SYS_CMD          70
 | 
			
		||||
#define SENDDIRCMD_PRN_ESC_CMD          71
 | 
			
		||||
#define SENDDIRCMD_PRN_SETUP            72
 | 
			
		||||
#define SENDDIRCMD_PRN_MOVE             73
 | 
			
		||||
#define SENDDIRCMD_PRN_SETFONT          74
 | 
			
		||||
#define SENDDIRCMD_PRN_SETLETT          75
 | 
			
		||||
#define SENDDIRCMD_PRN_CUT              76
 | 
			
		||||
//#define SENDDIRCMD_PRN_TXT              // not needed
 | 
			
		||||
#define SENDDIRCMD_PRN_LF               78
 | 
			
		||||
#define SENDDIRCMD_PRN_FONTTAB          79
 | 
			
		||||
#define SENDDIRCMD_PRN_BC               80
 | 
			
		||||
#define SENDDIRCMD_PRN_QR               81
 | 
			
		||||
#define SENDDIRCMD_PRN_STOREDQR         82
 | 
			
		||||
#define SENDDIRCMD_PRN_LOGO_FL          83
 | 
			
		||||
//#define SENDDIRCMD_PRN_LOGO_GRAF        84
 | 
			
		||||
//#define SENDDIRCMD_PRN_LOGODAT          85
 | 
			
		||||
//#define SENDDIRCMD_PRN_STORBC           86
 | 
			
		||||
#define SENDDIRCMD_PRN_STORQR           87
 | 
			
		||||
#define SENDDIRCMD_PRN_DOC              88
 | 
			
		||||
#define SENDDIRCMD_PRN_CLEARDOC         89
 | 
			
		||||
 | 
			
		||||
//#define SENDDIRCMD_MDB_POWER            42
 | 
			
		||||
//#define SENDDIRCMD_MDB_WAKE             43
 | 
			
		||||
#define SENDDIRCMD_MDB_RES              90
 | 
			
		||||
#define SENDDIRCMD_MDB_SENDCMD          91
 | 
			
		||||
#define SENDDIRCMD_MDB_SNDMSG           92
 | 
			
		||||
#define SENDDIRCMD_EMP_SETT             93
 | 
			
		||||
#define SENDDIRCMD_EMP_POLL             94
 | 
			
		||||
#define SENDDIRCMD_EMP_STARPPAY         95
 | 
			
		||||
#define SENDDIRCMD_EMP_STOPPAY          96
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// obsolete:
 | 
			
		||||
#define SENDDIRCMD_PRN1_SENDTEXT        54
 | 
			
		||||
#define SENDDIRCMD_PRN1_SENDCMD         55
 | 
			
		||||
#define SENDDIRCMD_PRN1_SERPAR          56
 | 
			
		||||
#define SENDDIRCMD_PRN_LEVEL2_4B        58
 | 
			
		||||
#define SENDDIRCMD_PRN_LEVEL2_64        59
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// highest priority
 | 
			
		||||
#define CMDSTACKDEPTH   16
 | 
			
		||||
// means: up to 16 cmd can be stored. They are issued one by one every 100ms
 | 
			
		||||
void sendWRcmd_clrCmdStack(void);
 | 
			
		||||
bool sendWRcmd_setSendCommand0(uint16_t nextCmd);
 | 
			
		||||
    // GUI or app sends a command to DC transfered by serial
 | 
			
		||||
 | 
			
		||||
uint16_t sendWRcmd_getSendCommand0(void);
 | 
			
		||||
 | 
			
		||||
// lower priority
 | 
			
		||||
#define CMD4STACKDEPTH   8
 | 
			
		||||
void sendWRcmd_clrCmd4Stack(void);
 | 
			
		||||
bool sendWRcmd_setSendCommand4(uint16_t nextCmd, uint8_t dat1, uint8_t dat2, uint8_t dat3, uint8_t dat4);
 | 
			
		||||
uint16_t sendWRcmd_getSendCommand4(uint8_t *dat1, uint8_t *dat2, uint8_t *dat3, uint8_t *dat4);
 | 
			
		||||
 | 
			
		||||
#define CMD8STACKDEPTH   4
 | 
			
		||||
void sendWRcmd_clrCmd8Stack(void);
 | 
			
		||||
bool sendWRcmd_setSendCommand8(uint16_t nextCmd, uint8_t dat1, uint8_t dat2, uint16_t dat3, uint32_t dat4);
 | 
			
		||||
uint16_t sendWRcmd_getSendCommand8(uint8_t *dat1, uint8_t *dat2, uint16_t *dat3, uint32_t *dat4);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// lowest priority
 | 
			
		||||
// wait for resonse before send next!
 | 
			
		||||
bool sendWRcmd_setSendBlock160(uint8_t leng, uint8_t *buf);
 | 
			
		||||
uint8_t sendWRcmd_getSendBlock160(uint8_t *leng, uint8_t *buf);
 | 
			
		||||
    // retval = *leng
 | 
			
		||||
 | 
			
		||||
void sendWRcmd_INI(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uint8_t epi_store64ByteSendData(uint8_t length, uint8_t *buf);
 | 
			
		||||
    // HWapi writes data to be forwarded to DC and further to mdb-device
 | 
			
		||||
    // not batched! don't use twice within 100ms
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_restore64ByteSendData(uint8_t *length, uint8_t *buf);
 | 
			
		||||
    // datif reads data to forward to dc
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ONE printer doc consists of 20 x 64 byte
 | 
			
		||||
#define MAXNROF_PRNBYTES   64
 | 
			
		||||
#define MAXNROF_PRNBLOCKS  20
 | 
			
		||||
 | 
			
		||||
void epi_resetPrinterStack(void);
 | 
			
		||||
 | 
			
		||||
uint8_t epi_storePrnText(char *buf, uint8_t leng);
 | 
			
		||||
    // store text and binary data from Gui in next higher free memory 0....9
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_restorePrnText(uint8_t *retbuf);
 | 
			
		||||
    // read printer text and send to slave, size of retbuf== 64
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_chk4remainingText(void);
 | 
			
		||||
    // retval: 0: no more textline left (to send)  >0: nr of lines
 | 
			
		||||
 | 
			
		||||
void epi_storeUserOfSendingTextBuffer(uint8_t user, uint8_t para1, uint8_t para2, uint8_t para3, uint8_t para4 );
 | 
			
		||||
    // user=1: Text-Print is using this buffer
 | 
			
		||||
    //      2: QR-code-Printer is using this buffer
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_getUserOfSendingTextBuffer(uint8_t *para1, uint8_t *para2, uint8_t *para3, uint8_t *para4);
 | 
			
		||||
    // user=1: Text-Print is using this buffer
 | 
			
		||||
    //      2: QR-code-Printer is using this buffer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										489
									
								
								include/storeINdata.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										489
									
								
								include/storeINdata.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,489 @@
 | 
			
		||||
 | 
			
		||||
#ifndef STOREINDATA_H
 | 
			
		||||
#define STOREINDATA_H
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include "tslib.h"
 | 
			
		||||
#include <QString>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define MAXNROF_AO              3
 | 
			
		||||
#define MAXNROF_GENSTR          16
 | 
			
		||||
#define MAXNROF_CONTR_PORTS     11
 | 
			
		||||
#define MAXNROF_DIports         2
 | 
			
		||||
#define MAXNROF_DOports         2
 | 
			
		||||
#define MAXNROF_CTR             2
 | 
			
		||||
#define MEASCHAN_TEMPERATURE    0
 | 
			
		||||
#define MEASCHAN_VOLTAGE        1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// gpi: DC-driver stores data for graphic peripheral interface
 | 
			
		||||
// epi: gui reads values from external peripheral interface
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// store power on/off condition of the devices to control the data request
 | 
			
		||||
 | 
			
		||||
void indat_storePrinterPower(bool isOn);
 | 
			
		||||
bool indat_isPrinterOn();
 | 
			
		||||
 | 
			
		||||
void indat_storeMifarePower(bool isOn);
 | 
			
		||||
bool indat_isMifareOn();
 | 
			
		||||
 | 
			
		||||
void indat_storeMDBisOn(bool isOn);
 | 
			
		||||
bool indat_isMdbOn();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeSlaveSerParams(uint8_t slaveBaudRate, uint8_t NrDataBits,
 | 
			
		||||
                             uint8_t parity, uint8_t NrStopBits);
 | 
			
		||||
 | 
			
		||||
void epi_getSlaveSerParams(uint8_t *slaveBaudRate, uint8_t *NrDataBits,
 | 
			
		||||
                             uint8_t *parity, uint8_t *NrStopBits);
 | 
			
		||||
 | 
			
		||||
QString epi_getSlaveParamSTR();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeGenerals(uint8_t genNr, QString text);
 | 
			
		||||
    // 0=HW   1=SW  2=State
 | 
			
		||||
 | 
			
		||||
QString epi_loadGenerals(uint8_t genNr);
 | 
			
		||||
// genNr=0=HW   1=SW  2=State
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeUID(uint8_t *buf8byteUid);
 | 
			
		||||
// buffer size: 8 byte
 | 
			
		||||
 | 
			
		||||
void epi_getUIDdec(uint8_t *buf8byteUid);
 | 
			
		||||
// buffer size: 8 byte
 | 
			
		||||
 | 
			
		||||
QString epi_getUIDstr();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//          Time and Date
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getSquareMode();
 | 
			
		||||
void gpi_backupSquareMode(uint8_t squMode);
 | 
			
		||||
 | 
			
		||||
void gpi_backupTime(uint8_t *timeBuffer, uint8_t Leng);
 | 
			
		||||
void epi_getTime(uint8_t *hh, uint8_t *mm, uint8_t *ss);
 | 
			
		||||
void epi_getDate(uint8_t *yy, uint8_t *mm, uint8_t *dd);
 | 
			
		||||
void epi_getToday(uint8_t *dow, uint16_t *minOfToday, uint32_t *secOfToday);
 | 
			
		||||
bool epi_isLeapYear(uint8_t *lastLeapYear, uint8_t *NextLeapYear);
 | 
			
		||||
bool epi_isLeapYear();
 | 
			
		||||
void epi_getSpecialWeekTimeDate(uint8_t *DayOfWeek, uint8_t *HoursOfWeek, uint16_t *MinutesOfWeek);
 | 
			
		||||
void epi_getSpecialMonthTimeDate(uint8_t *DayOfMonth, uint16_t *HoursOfMonth, uint16_t *MinutesOfMonth);
 | 
			
		||||
void epi_getSpecialYearTimeDate(uint16_t *DayOfYear, uint16_t *HoursOfYear, uint32_t *MinutesOfYear);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//          Analog values
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define MAXNROF_AI              4
 | 
			
		||||
 | 
			
		||||
void gpi_storeAIs(uint8_t aiNr, uint16_t val);   // rs -> Sdata
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_getMaxNrAIs();
 | 
			
		||||
 | 
			
		||||
uint16_t epi_loadAIs(uint8_t aiNr);              //       Sdata -> gui
 | 
			
		||||
    // return value of one ADC with channel nr: aiNr 0...15
 | 
			
		||||
 | 
			
		||||
uint32_t epi_loadMeasureValue(uint8_t ValueNr);
 | 
			
		||||
    // ValueNr 0=ADC0, 1=ADC1 aso...
 | 
			
		||||
 | 
			
		||||
void gpi_storeMeasureValue(uint8_t ValueNr, uint32_t val);
 | 
			
		||||
    // in mV, also bis 65,535V
 | 
			
		||||
 | 
			
		||||
QString epi_getSlaveTemperatureStr();
 | 
			
		||||
 | 
			
		||||
QString epi_getSlaveVoltageStr();
 | 
			
		||||
    // value in "meas_volt" in mV, also bis 65,535V. Value range [6000...16000] (6V...16V)
 | 
			
		||||
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//          digital inputs
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_doorSwitches(uint8_t upperDoor, uint8_t lowerDoor, uint8_t vaultDoor);
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getDI_doorSwitches(void);
 | 
			
		||||
    // bit0: upper door  1: low door  2:vault door
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_vaultSwitches(uint8_t CashBoxIn, uint8_t BillBoxIn);
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getDI_vaultSwitches(void);
 | 
			
		||||
    // bit0: cash box    1: bill box in
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_lockSwitches(uint8_t indatUL, uint8_t indatLL);
 | 
			
		||||
    // D5: bit 0: upper lockbar up   bit1:down
 | 
			
		||||
    // D6: bit 0: lower lockbar up   bit1:down
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getDI_lockSwitches(void);
 | 
			
		||||
    // retval: bit 0: upper lockbar up   bit1: upper lockbar is down
 | 
			
		||||
    //         bit 2: lower lockbar up   bit1: lower lockbar is down
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_optos(uint8_t indatOpto);
 | 
			
		||||
    // OptoIn bit 0,1: optoin 1,2
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getDI_optos(void);
 | 
			
		||||
    // bit0: opto in 1    1: opto in 2
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_auxIn(uint8_t indatAuxIn);
 | 
			
		||||
    // Aux0...5
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getDI_auxIn(void);
 | 
			
		||||
    // bit0: auxin 1  ...  5: auxin 6
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_ptuWake(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_ptuWake(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_mbdWake(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_mdbWake(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_prnReady(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_prnReady(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_CoinAttach(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_CoinAttach(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_CoinEscrow(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_CoinEscrow(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_mifareCardTapped(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_mifareCardTapped(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_modemWake(uint8_t indat);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_modemWake(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_contactPowerIsOn(bool di_contact_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_contactPwr(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_MifarePowerIsOn(bool di_mifare_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_mifarePwr(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_readbackMdbTxD(bool di_rdbkMdbTxd);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_mdbTxd(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_AuxPowerIsOn(bool di_Aux_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_auxPwr(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_GsmPowerIsOn(bool di_gsm_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_gsmPwr(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_CreditPowerIsOn(bool di_credit_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_creditPwr(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_PrinterPowerIsOn(bool di_printer_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_printerPwr(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_MdbPowerIsOn(bool di_mdb_PwrOn);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_mdbPwr(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_rejMot_home(bool di);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_rejectMotor_homepos(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDI_paperLow(bool di);
 | 
			
		||||
 | 
			
		||||
bool epi_getDI_npe_sensor(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//          readback digital outputs
 | 
			
		||||
// ///////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_mdbRxTst(uint8_t do_mbdRxTst);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_mdbRxTestOut(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_motorOutputs(uint8_t Pwr);
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getDO_motorOuts(void);
 | 
			
		||||
    // bit0: upper lock forward    bit 1 backward
 | 
			
		||||
    // bit2: lower lock forward    bit 3 backward
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_serialSwitch(uint8_t state);
 | 
			
		||||
    // serial drv on/off, Serial mux1, Serial mux2
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getDO_serialSwitch(void);
 | 
			
		||||
    // serial drv on/off, Serial mux1, Serial mux2
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_serialDriverIsOn(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_serialMux1isSetToPrinter(void);
 | 
			
		||||
    // mux1 off: serial is switched to printer
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_serialMux1isSetToModem(void);
 | 
			
		||||
    // mux1 on: serial is switched to modem
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_serialMux2isSetToCredit(void);
 | 
			
		||||
    // mux2 off: serial is switched to credit card terminal
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_serialMux2isSetToMifare(void);
 | 
			
		||||
    // mux2 on: serial is switched to mifare reader
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_ledsAndFan(uint8_t ledState);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_led_coin(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_led_front(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_led_ticket(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_led_pin(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_led_start(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_led_inside(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_fan(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_sirenAndRelay(uint8_t sirenRelay);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_sirene(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_relay(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_ptuWake(uint8_t state);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_ptuWake(void);
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_auxPower(uint8_t pwr);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_auxPower(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_coinShutter(uint8_t state);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_coinShutterOpen(void);
 | 
			
		||||
 | 
			
		||||
bool epi_getDO_coinShutterTest(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_coinEscrow(uint8_t state);
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getDO_coinEscrow(void);
 | 
			
		||||
    // retval: 1:return flap is open   2:take flap is open    0:closed
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDO_printerPwrOn(uint8_t state);
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getDO_printerPwr(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ---------------------------------------------------------------------------------------------
 | 
			
		||||
// counterchecks, make sure that DC-outputs are correct
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
bool epi_cntchk_wakePtu(void);
 | 
			
		||||
bool epi_cntchk_enabDrv01(void);        // no communication possible if 0 !!!!!
 | 
			
		||||
bool epi_cntchk_swRs1toModem(void);
 | 
			
		||||
bool epi_cntchk_modemWake(void);
 | 
			
		||||
bool epi_cntchk_enabDrv2(void);
 | 
			
		||||
bool epi_cntchk_swRs2toMIF(void);
 | 
			
		||||
 | 
			
		||||
bool epi_cntchk_shutterIsOpen(void);
 | 
			
		||||
    // counter check if shutter is really open,  PJ4 must be OUT and HIGH, PB5 must be OUT and HIGH
 | 
			
		||||
    // retval TRUE: shutter is open   FALSE: shutter is closed
 | 
			
		||||
 | 
			
		||||
bool epi_cntchk_escrowReturnIsOpen(void);
 | 
			
		||||
bool epi_cntchk_escrowTakeIsOpen(void);
 | 
			
		||||
bool epi_cntchk_aux1DirOut(uint8_t auxNr);
 | 
			
		||||
bool epi_cntchk_aux1OutHigh(uint8_t auxNr);
 | 
			
		||||
 | 
			
		||||
bool epi_cntchk_ledPaperOn(void);
 | 
			
		||||
bool epi_cntchk_ledPinpadOn(void);
 | 
			
		||||
bool epi_cntchk_ledStartOn(void);
 | 
			
		||||
bool epi_cntchk_ledServiceOn(void);
 | 
			
		||||
bool epi_cntchk_ledCoinOn(void);
 | 
			
		||||
bool epi_cntchk_ledIllumOn(void);
 | 
			
		||||
bool epi_cntchk_FanOn(void);
 | 
			
		||||
bool epi_cntchk_RelaisOn(void);
 | 
			
		||||
bool epi_cntchk_LaermOn(void);
 | 
			
		||||
bool epi_cntchk_Mot1Ron(void);
 | 
			
		||||
bool epi_cntchk_Mot1Fon(void);
 | 
			
		||||
bool epi_cntchk_Mot2Ron(void);
 | 
			
		||||
bool epi_cntchk_Mot2Fon(void);
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ------------------------------------------------------------------------------------
 | 
			
		||||
// MDB Sendind Data  are store here for next transport to DC (Device Controller)
 | 
			
		||||
// Transport to Slave runs every 100ms, answer from mdb-slave (e.g. coin changer) comes right
 | 
			
		||||
// with next slave answer
 | 
			
		||||
 | 
			
		||||
// start with: SENDDIRCMD_EXCHGMDB,
 | 
			
		||||
    // send crude data from here to DC, DC to mdb slaves, mdb answer, return here within 50ms
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeMdbRecData(uint8_t length, uint8_t *buf);
 | 
			
		||||
    // datif store received mdb data
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getMdbResponse(void);
 | 
			
		||||
     // 0=no response  1=ACK  2=NAK  3=ACK with data
 | 
			
		||||
 | 
			
		||||
uint8_t epi_getMdbRecLength(void);
 | 
			
		||||
    // 0...31
 | 
			
		||||
 | 
			
		||||
uint8_t epi_restoreMdbRecData(uint8_t *buf);
 | 
			
		||||
    // hwapi reads received mdb data from PI
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uint8_t gpi_storeMifReaderStateAndCardType(uint8_t *buf);
 | 
			
		||||
 | 
			
		||||
/* 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 "SL025-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
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
uint8_t epi_restoreMifState(uint8_t *buf, uint8_t maxBufferSize);
 | 
			
		||||
    // retval 0=OK 1=error host buffer too small
 | 
			
		||||
 | 
			
		||||
void gpi_storeMifCardData(uint8_t blkNr, uint8_t *receivedData);
 | 
			
		||||
    // blkNr=0...11    receivedData[64]
 | 
			
		||||
 | 
			
		||||
uint8_t epi_restoreMifData(uint8_t blkNr, uint8_t *buf, uint8_t maxBufferSize);
 | 
			
		||||
    // blkNr=0...11    return buf[64]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define pi_prnStateArraySize    20
 | 
			
		||||
#define pi_prnFontArraySize     20
 | 
			
		||||
 | 
			
		||||
void epi_restorePrinterState(uint8_t *buf);
 | 
			
		||||
 | 
			
		||||
void gpi_storePrinterState(uint8_t *buf);
 | 
			
		||||
 | 
			
		||||
void epi_restorePrinterFonts(uint8_t *buf);
 | 
			
		||||
 | 
			
		||||
void gpi_storePrinterFonts(uint8_t *buf);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeMdbState(uint8_t busReady, uint8_t V12on, uint8_t V5on );
 | 
			
		||||
 | 
			
		||||
bool epi_restoreMdbBusReady(void);
 | 
			
		||||
 | 
			
		||||
bool epi_restoreMdbV12Ready(void);
 | 
			
		||||
 | 
			
		||||
bool epi_restoreMdbV5Ready(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeMdbResponse(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void epi_restoreMdbResponse(uint8_t *leng, uint8_t *data);
 | 
			
		||||
    // last received mdb answer (from mdb device)
 | 
			
		||||
    // only needed if a special command was sent directly
 | 
			
		||||
    // DB0: mdb Device-Nr
 | 
			
		||||
    // DB1: last sent mdb command
 | 
			
		||||
    // DB2: nr of received (payload) data bytes (apart from ACK, can be 0....34)
 | 
			
		||||
    // DB3...DB38: rec.data (payload)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeEmpSettings(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void epi_restoreEmpSettings(uint8_t *leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
void gpi_storeEmpCoinSignal(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void epi_restoreEmpCoinSignal(uint8_t *leng, uint8_t *data);
 | 
			
		||||
    // return 5 byte:
 | 
			
		||||
    //      data[0]=got coin 0xFF=emp reported an error  0=got nothing
 | 
			
		||||
    //      data[1]=emp-signal of last inserted coin
 | 
			
		||||
    //      data[2,3]=emp-value of last inserted coin
 | 
			
		||||
    //      data[4] = emp-error or warning
 | 
			
		||||
 | 
			
		||||
void epi_clearEmpCoinSignal();
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define     MEMDEPTH_GOTCOINS       16
 | 
			
		||||
 | 
			
		||||
void gpi_storeEmpCoinSignal(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
uint8_t epi_isNewCoinLeft(void);
 | 
			
		||||
    // retval: 0...16 coins left in FIFO
 | 
			
		||||
 | 
			
		||||
void epi_restoreEmpCoinSignal(uint8_t *valid, uint8_t *signal, uint8_t *error, uint16_t *value);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gpi_storeDeviceSettings(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void epi_restoreDeviceSettings(uint8_t *leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void gpi_storeMachineIDsettings(uint8_t leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
void epi_restoreMachineIDsettings(uint8_t *leng, uint8_t *data);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										84
									
								
								include/tslib.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								include/tslib.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,84 @@
 | 
			
		||||
#ifndef TSLIB_H
 | 
			
		||||
#define TSLIB_H
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <QByteArray>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define LOWBYTE     false
 | 
			
		||||
#define HIGHBYTE    true
 | 
			
		||||
 | 
			
		||||
uint16_t uchar2uint(char Highbyte, char Lowbyte);
 | 
			
		||||
uint16_t uchar2uint(uint8_t Highbyte, uint8_t Lowbyte);
 | 
			
		||||
uint32_t uchar2ulong(uint8_t Highbyte, uint8_t MHbyte, uint8_t MLbyte, uint8_t Lowbyte);
 | 
			
		||||
 | 
			
		||||
uint8_t  uint2uchar(uint16_t uival, bool getHighB);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void delay(uint16_t MilliSec);
 | 
			
		||||
 | 
			
		||||
#define     MITSEK          1
 | 
			
		||||
#define     OHNESEK         0
 | 
			
		||||
#define     HourSys12h          1
 | 
			
		||||
#define     HourSys24h          0
 | 
			
		||||
 | 
			
		||||
void GetTimeString(uint8_t hours, uint8_t minutes, uint8_t seconds, uint8_t System12h, uint8_t ShowSec, uint8_t *buf);
 | 
			
		||||
    // generate time as ascii string from integers hours/minutes/seconds
 | 
			
		||||
    // System12h=0:  24h system    =1: 12h System
 | 
			
		||||
    // ShowSec=0:     String has 5 digits (hh:mm)   =1: String has 8 digits (hh:mm:ss)
 | 
			
		||||
    // return String in *buf      // 12 byte für buf!
 | 
			
		||||
 | 
			
		||||
#define     DateFormatDeutsch       0
 | 
			
		||||
#define     DateFormatAmerica       1
 | 
			
		||||
#define     UsePointSeperator       0
 | 
			
		||||
#define     UseSlashSeperator       1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void GetDateString(uint8_t day, uint8_t month, uint8_t yearhigh, uint8_t yearlow, uint8_t format, uint8_t sep, uint8_t *buf);
 | 
			
		||||
    // generate date as ascii string from integers day/month/year
 | 
			
		||||
    // yearhigh in europe always 20 (not in arabia)
 | 
			
		||||
    // format=  0: dd.mm.yyyy   (deutsch)
 | 
			
		||||
    //          1: mm.dd.yyyy   (amerika)
 | 
			
		||||
    //          2: yyyy.mm.dd   (Iran, Dubai)
 | 
			
		||||
    //          3: dd.yyyy.mm
 | 
			
		||||
    //          4: mm.yyyy.dd
 | 
			
		||||
    //          5: yyyy.dd.mm
 | 
			
		||||
        // sep: 0: use . as seperator   1: use / as seperator
 | 
			
		||||
    // return String in *buf      // 11 byte für buf!
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void GetShortDateString(uint8_t day, uint8_t month, uint8_t yearlow, uint8_t format, uint8_t sep, uint8_t *buf);
 | 
			
		||||
    // generate date as ascii string from integers day/month/year
 | 
			
		||||
    // format=  0: dd.mm.yy   (deutsch)
 | 
			
		||||
    //          1: mm.dd.yy   (amerika)
 | 
			
		||||
    //          2: yy.mm.dd   (Iran, Dubai)
 | 
			
		||||
    //          3: dd.yy.mm
 | 
			
		||||
    //          4: mm.yy.dd
 | 
			
		||||
    //          5: yy.dd.mm
 | 
			
		||||
        // sep: 0: use . as seperator   1: use / as seperator
 | 
			
		||||
    // return String in *buf      // 11byte für buf!
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uint16_t tslib_strlen(char *buf);
 | 
			
		||||
 | 
			
		||||
void tslib_strclr(char *buf, char clrsign, uint16_t len);
 | 
			
		||||
void tslib_strclr(uint8_t *buf, char clrsign, uint16_t len);
 | 
			
		||||
 | 
			
		||||
void tslib_strcpy(char *srcbuf, char *destbuf, uint16_t len);
 | 
			
		||||
void tslib_strcpy(char *srcbuf, uint8_t *destbuf, uint16_t len);
 | 
			
		||||
void tslib_strcpy(uint8_t *srcbuf, uint8_t *destbuf, uint16_t len);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uint16_t tslib_calcCrcCcitt(uint16_t BufLength, uint8_t *buf);
 | 
			
		||||
 | 
			
		||||
bool tslib_isDecAsciiNumber(char sign);
 | 
			
		||||
bool tslib_isHexAsciiNumber(char sign);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int tslib_getMinimum(int val1, int val2);
 | 
			
		||||
 | 
			
		||||
void tslib_text2array(QByteArray text, char *aray, uint16_t maxArayLen);
 | 
			
		||||
    // usage:  tslib_text2array("my text", ctmp, 50);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif // TSLIB_H
 | 
			
		||||
		Reference in New Issue
	
	Block a user