From 27c0aa56ee73aaae37287a8482ff5b24065c3037 Mon Sep 17 00:00:00 2001 From: Thomas Sax Date: Wed, 6 Dec 2023 14:45:22 +0100 Subject: [PATCH] Prepare new implementation of downloading the bootloader. --- src/runProc.cpp | 94 +++++++++++++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 38 deletions(-) diff --git a/src/runProc.cpp b/src/runProc.cpp index d762704..8340f8c 100644 --- a/src/runProc.cpp +++ b/src/runProc.cpp @@ -29,25 +29,31 @@ T_runProc::T_runProc() QTimer *runProc_callProcesses = new QTimer(); connect(runProc_callProcesses, SIGNAL(timeout()), this, SLOT(runProc_slotProcess())); runProc_callProcesses->setSingleShot(false); - runProc_callProcesses->start(100); // in ms + runProc_callProcesses->start(10); // in ms hwapi_lastDoorState=0; // default: all doors (should be) closed, coin box inserted // bit0: upper door 1:middle 2:lower 3=cash-box out - hwapi_triggerBL = new QTimer(); - connect(hwapi_triggerBL, SIGNAL(timeout()), this, SLOT(bl_performComplStart())); - hwapi_triggerBL->setSingleShot(false); - hwapi_triggerBL->stop(); +// hwapi_triggerBL = new QTimer(); +// connect(hwapi_triggerBL, SIGNAL(timeout()), this, SLOT(bl_performComplStart())); +// hwapi_triggerBL->setSingleShot(false); +// hwapi_triggerBL->stop(); + + myTO = new QTimer(); + myTO->setSingleShot(true); + myTO->start(200); } void T_runProc::runProc_slotProcess(void) { +#ifndef THIS_IS_CA_MASTER cash_paymentProcessing(); doors_supervise(); + bl_performComplStart(); // neu 1.12.23 dcBL_cycle(); - +#endif } bool T_runProc::cash_startPayment(uint32_t amount) @@ -654,7 +660,7 @@ bool T_runProc::bl_isUp(void) receivedData[3]==45 && receivedData[4] ==95 && receivedData[5]==176) { qDebug() << "got BL response to readFWversion"; - epi_clrRawReceivedString(); + //epi_clrRawReceivedString(); return true; } // response to "start BL" @@ -662,7 +668,7 @@ bool T_runProc::bl_isUp(void) receivedData[3]==223 && receivedData[4] ==131 ) { qDebug() << "hwapi_bl_isUp: got BL response to start"; - epi_clrRawReceivedString(); + //epi_clrRawReceivedString(); return true; } } @@ -677,7 +683,8 @@ void T_runProc::bl_completeStart(void) bool T_runProc::bl_performComplStart(void) { - // must be called cyclic by timer + bool result; + static uint8_t retryCtr; if ((bl_startupStep<1) || (bl_startupStep>10)) @@ -691,58 +698,69 @@ bool T_runProc::bl_performComplStart(void) if (bl_startupStep==2) { + qDebug()<<"rebooting"; bl_rebootDC(); - hwapi_triggerBL->stop(); - hwapi_triggerBL->start(1000); // call next step in 1s + myTO->stop(); + myTO->start(500); retryCtr=0; bl_startupStep++; } else if (bl_startupStep==3) { - //qDebug()<<"starting BL"; - bl_startBL(); - hwapi_triggerBL->stop(); - hwapi_triggerBL->start(100); - bl_startupStep++; - + if (!myTO->isActive()) + { + qDebug()<<"starting BL"; + bl_startBL(); + myTO->stop(); + myTO->start(500); + bl_startupStep++; + } } else if (bl_startupStep==4) { - //if (!myTO->isActive()) - //{ - bl_checkBL(); - hwapi_triggerBL->stop(); - hwapi_triggerBL->start(100); - bl_startupStep++; - - //} + if (!myTO->isActive()) + { + qDebug()<<"checking BL"; + bl_checkBL(); + myTO->stop(); + myTO->start(200); + bl_startupStep++; + } } else if (bl_startupStep==5) { - hwapi_triggerBL->stop(); - if (bl_isUp()) + if (!myTO->isActive()) { - bl_startupStep=99; - // BL is up and running - } else - { - retryCtr++; // start again - if (retryCtr>=15) + qDebug()<<"step 5"; + result = bl_isUp(); + qDebug()<<"BL result: "<< result; + if (result) { bl_startupStep=99; - //qDebug()<<"BL error!!!"; + qDebug()<<"BL is working now..."; + // BL is up and running + return true; } else { - bl_startupStep=3; - //qDebug()<<"BL retry..."; + retryCtr++; // start again + if (retryCtr>=10) + { + bl_startupStep=99; + qDebug()<<"BL error!!!"; + } else + { + bl_startupStep=3; + myTO->stop(); + myTO->start(200); + qDebug()<<"BL retry..."; + } } } - } - return true; + return false; }