diff --git a/include/interfaces.h b/include/interfaces.h index 7234315..81afbdd 100755 --- a/include/interfaces.h +++ b/include/interfaces.h @@ -24,7 +24,8 @@ struct T_emp // dynamic: uint8_t state; // step counter of EMP (electronic coin checker) FSM (finite state machine): - // 0=start command + /* + // 0=start command // 1=powered, do emp ini, send reset // 2=delay // 3=wait for response, requesting status after response @@ -39,7 +40,7 @@ struct T_emp // 90: stop all, 1s delay // 99: off, all stopped - +*/ uint8_t pollingRunning; uint8_t paymentRunning; @@ -238,6 +239,7 @@ struct T_dynamicCondition uint8_t lastVDoorState; uint8_t lastCBstate; char paymentInProgress; + // Version Szeged: aug2023 // 0: stopped by timeout // 1: running 2: wait4lastCoin // 3: payment stopped manually, coins in Escrow @@ -246,6 +248,21 @@ struct T_dynamicCondition // 6: coins encashed 7:coins returned // 8: CoinChecker or MDB on Error + // since Schoenau with bill and changer, nov2023 + //0 = no payment + //will be set to 1 by cash_startCollection() + //neu 1: wait for devices getting ready for payment + //2 = payment, + //3 = wait for last coin/bill + //4 = Bezahlvorgang manuell beendet + //5 = payment stopped autom, amount collected, coins in Escrow + //6 = Bezahlvorgang beendet weil ZK voll + //4,5,6: payment done, keep on polling, wait for cash or return command + //7 = encash collected money from coin escrow into cash box + //8 = return "amountToReturn", can be complete inserted amount or only overpayment + //9 = wait for changer result + //10= print refund receipt with "amountToReturn" + char res1; uint16_t U_Batt; @@ -397,6 +414,7 @@ struct T_bna }; +class DownloadThread; class hwinf { @@ -2252,14 +2270,23 @@ public: virtual void bna_requestCurrentNotes() const {} // send command to DC in order to get transaction data - virtual uint8_t bna_getCurrentNotes(uint16_t latestBill, uint16_t *currentNotes) const { + virtual uint8_t bna_getCurrentNotes(uint16_t latestBill, uint16_t *currentNotes) const + { Q_UNUSED(latestBill); Q_UNUSED(currentNotes); return 0; } // returns number of collected bank notes since start-command (current transaction) - // latestBill: last accepted bank note, value in cent - // currentNotes an array with up to 16 (further) notes collected + // return value: numbers of bills or 99 in case of error + // latestBill: not used + // in case of error: currentNotes[0,1,2,3] = 1..4 error number(s) + // in normal case: + // currentNotes[0]: last bill in cent (e.g. 1000 = 10€) + // currentNotes[1]: bin 1 = bill is still in escrow else bill is stacked + // note: by now (dec2023) escrow is not used, bills always go to stacker (box) + // currentNotes[2]: total sum of bills in cent, low word (16bit) + // currentNotes[3]: total sum of bills in cent, high word (16bit) + virtual void bna_requestStackerLevel() const {} @@ -2273,9 +2300,73 @@ public: // countOfBills[1] for 10€ and so on + // download device controller + virtual bool dcDownloadRequest(QString const &fileToDownload) const { + Q_UNUSED(fileToDownload); + return false; + } + virtual bool dcDownloadRequested() const { return false; } + virtual bool dcDownloadResetRequest() const { return false; } + virtual bool dcDownloadRequestAck() const { return false; } + virtual bool dcDownloadRunning() const { return false; } + virtual bool dcDownloadFinished() { return false; } + + virtual bool dcDownloadReportStart() const { return false; } + virtual bool dcDownloadReportRunning() const { return true; } + virtual bool dcDownloadReportFinished() { return true; } + + virtual bool dcDownloadThreadStart() { return false; } + virtual bool dcDownloadThreadRunning() const { return true; } + virtual void dcDownloadThreadFinalize(DownloadThread *) {} + virtual bool dcDownloadThreadFinished() const { return true; } + virtual bool dcDownloadReportThreadStart() { return false; } + virtual bool dcDownloadReportThreadRunning() const { return true; } + virtual void dcDownloadReportThreadFinalize() {} + virtual void dcDownloadReportThreadQuit() {} + virtual bool dcDownloadReportThreadFinished() const { return true; } + + + virtual QString dcDownloadFileName() const { return ""; } + virtual bool dcDownloadSetRequested(bool requested) { + Q_UNUSED(requested); return false; + } + virtual bool dcDownloadSetRunning(bool running) { + Q_UNUSED(running); return false; + } + virtual bool dcDownloadSetFinished(bool finished) { + Q_UNUSED(finished); return false; + } + virtual void dcDownloadSetTotalBlockNumber(uint16_t totalBlockNumber) { + Q_UNUSED(totalBlockNumber); + } + virtual void dcDownloadSetCurrentBlockNumber(uint16_t currentBlockNumber) { + Q_UNUSED(currentBlockNumber); + } + virtual bool dcDownloadGetRequested() const { return false; } + virtual bool dcDownloadGetRunning() const { return false; } + virtual bool dcDownloadGetFinished() const { return false; } + virtual uint16_t dcDownloadGetTotalBlockNumber() const { return 0; } + virtual uint16_t dcDownloadGetCurrentBlockNumber() const { return 0; } + + virtual QObject const *getAPI() { return nullptr; } signals: + /* + NOTE: the difference between a virtual Qt signal and a normal Qt signal: + A Qt virtual signal is a connection that is established using a pointer + or reference and is not connected to an object or data. It is therefore + not bound to a particular object, but to a specific class (object type). + Qt virtual signals are useful because they allow you to create + connections without worrying about whether an object or a specific data + element has been destroyed. + https://www.youtube.com/watch?v=HTH3VFfqsXw + + */ + virtual void hwapi_reportDCDownloadStatus(QString const&) const {} + virtual void hwapi_reportDCDownloadSuccess(QString const&) const {} + virtual void hwapi_reportDCDownloadFailure(QString const&) const {} + virtual void hwapi_templatePrintFinished_OK(void) const=0; virtual void hwapi_templatePrintFinished_Err(void) const=0; @@ -2299,6 +2390,7 @@ signals: virtual void hwapi_doorCBinAndAllDoorsClosed(void) const=0; virtual void hwapi_doorAllDoorsClosed(void) const=0; + virtual void hwapi_coinAttached() const = 0; // NOTE: declaring a "pure virtual" "signal" should be an error and thus not valid. /* GH Version, bringt Fehler