diff --git a/src/datIf.cpp b/src/datIf.cpp index 8b7b71e..87a294a 100644 --- a/src/datIf.cpp +++ b/src/datIf.cpp @@ -350,9 +350,20 @@ char T_datif::datif_cycleSend() char T_datif::sendINrequestsAutomatic(void) { //qDebug() << "send IN request " << dif_scanStep; -// uint8_t datif_autoRequCommandList[50]={11, 12, 18, 104, 106, 103, 14, 27, 109, 17, 19, 23, 30, 31, 32, 33, 114, 35}; - uint8_t datif_autoRequCommandList[30]={11, 12, 14, 17, 18, 19, 22, 23, 27, 30, 31, 32, 33, 35, 102, 103, 104, 106, 107, 109, 114,0,0,0,0,0,0,0,0,0}; - uint8_t datif_maxNrCommands=21, datif_sendNow; + //uint8_t datif_autoRequCommandList[30]={11, 12, 14, 17, 18, 19, 22, 23, 27, 30, + // 31, 32, 33, 35, 102, 103, 104, 106, 107, 109, + // 114,0,0,0,0,0,0,0,0,0}; + + // extension 6.12.23, complete list: + uint8_t datif_autoRequCommandList[40]={11, 12, 13, 14, 17, 18, 19, 21, 22, 23, + 24, 25, 27, 30, 31, 32, 33, 35, 39, 40, + 41, 42, 102,103,104,106,107,108,109,110, + 112,113,114,115,116,0, 0, 0, 0, 0}; + uint8_t datif_maxNrCommands=35, datif_sendNow; + + // send quicker while transaction is ongoing: + uint8_t datif_vendRequCommandList[15]={102,107,108,110,112,115,116,31,32,40,41,42,0,0,0}; + uint8_t datif_maxVendingCmds=12; // special commands: // 102: get IOs run constantly!!! @@ -362,40 +373,44 @@ char T_datif::sendINrequestsAutomatic(void) // 107, 22: MDB: poll if needed doRepeat=true; // 20.9.23 15uhr (after release) - if (datif_sendSlowCmd>0) - { - // send special command, slowly - datif_sendNow=datif_autoRequCommandList[datif_pNextCmd++]; - if (datif_pNextCmd >= datif_maxNrCommands) - datif_pNextCmd=0; - if (datif_sendNow>0) // never send Command 0 - datif_sendIOrequest(0, datif_sendNow, 0); - else - datif_pNextCmd=0; // falls in der Liste 0 vorkommt dann von vorne beginnen - //qDebug()<< "datif send request " << datif_sendNow; + if (gpi_getNowCoinPay()) + { + // send only important commands while transaction in progress + if (datif_pNextCmd>=datif_maxVendingCmds ) datif_pNextCmd=0; + datif_sendNow=datif_vendRequCommandList[datif_pNextCmd++]; + if (datif_sendNow>0) // never send Command 0 + { + datif_sendIOrequest(0, datif_sendNow, 0); + //qDebug() << "datif, VEND-request: " << datif_sendNow; + } else + datif_pNextCmd=0; // falls in der Liste 0 vorkommt dann von vorne beginnen } else { - if (gpi_getNowCoinPay()) + // no transaction, request all but request DI's more frequently + if (datif_sendSlowCmd>0) // send slow and fast commands alternating { - // request coin input, high priority - datif_sendIOrequest(0, 112, 0); - //qDebug()<< "datif send request 112 get coins"; + // send special command, slowly + if (datif_pNextCmd>=datif_maxNrCommands ) datif_pNextCmd=0; + datif_sendNow=datif_autoRequCommandList[datif_pNextCmd++]; + if (datif_sendNow>0) // never send Command 0 + { + datif_sendIOrequest(0, datif_sendNow, 0); + // qDebug() << "datif, auto-requ: " << datif_sendNow; + } else + datif_pNextCmd=0; // falls in der Liste 0 vorkommt dann von vorne beginnen } else { // request inputs, high priority datif_sendIOrequest(0, 31, 0); // 102 - // while coin collection DIs are polled slowly with datif_autoRequCommandList[] - - //qDebug()<< "datif send request 102 get DIs"; + // while coin collection DIs are polled slower + //qDebug()<< "datif send requ.31 get DIs"; } + if (++datif_sendSlowCmd>1) datif_sendSlowCmd=0; // 0,1,0,1,0,1,0.... } - if (++datif_sendSlowCmd>1) datif_sendSlowCmd=0; // 0,1,0,1,0,1,0.... - return 0; // 25.9.2023, wichtig sonst bleibt die komplette PTU stehen!!!! - } @@ -439,7 +454,7 @@ char T_datif::loadRecDataFromFrame() uint32_t ultmp; //int portNr; bool ret; - uint8_t uctmp; //, res; // maxai + uint8_t uctmp; //, nn; //, res; // maxai char ctmp; //static uint8_t lastResult; //uint8_t prnResult; @@ -1061,11 +1076,11 @@ char T_datif::loadRecDataFromFrame() /* qDebug()<<"datif cmd38 got vault data. blockNr: "<60) {