diff --git a/src/CHANGES.md b/src/CHANGES.md index d37c7eb68..23f0e685a 100644 --- a/src/CHANGES.md +++ b/src/CHANGES.md @@ -1,5 +1,9 @@ # Development Changes +## 0.8.62 - 2024-01-21 +* updated version in footer #1381 +* repaired radio statistics #1382 + ## 0.8.61 - 2024-01-21 * add favicon to header * improved NRF communication diff --git a/src/defines.h b/src/defines.h index 8d6a30865..c614103e9 100644 --- a/src/defines.h +++ b/src/defines.h @@ -13,7 +13,7 @@ //------------------------------------- #define VERSION_MAJOR 0 #define VERSION_MINOR 8 -#define VERSION_PATCH 61 +#define VERSION_PATCH 62 //------------------------------------- typedef struct { diff --git a/src/hm/Communication.h b/src/hm/Communication.h index 59f21d2b7..80b43ab32 100644 --- a/src/hm/Communication.h +++ b/src/hm/Communication.h @@ -143,16 +143,17 @@ class Communication : public CommQueue<> { } else { if(IV_MI == q->iv->ivGen) q->iv->mIvTxCnt++; + if(mFirstTry) { - mFirstTry = false; + mFirstTry = false; setAttempt(); mHeu.evalTxChQuality(q->iv, false, 0, 0); - //q->iv->radioStatistics.rxFailNoAnser++; + q->iv->radioStatistics.rxFailNoAnser++; q->iv->radioStatistics.retransmits++; q->iv->radio->mRadioWaitTime.stopTimeMonitor(); mState = States::START; - return; + return; } } } diff --git a/src/hm/hmInverter.h b/src/hm/hmInverter.h index 2c1c6362d..b28682e55 100644 --- a/src/hm/hmInverter.h +++ b/src/hm/hmInverter.h @@ -210,9 +210,10 @@ class Inverter { cb(GridOnProFilePara, false); } else if (mGetLossInterval > AHOY_GET_LOSS_INTERVAL) { // get loss rate mGetLossInterval = 1; + cb(RealTimeRunData_Debug, false); // get live data cb(GetLossRate, false); } else - cb(RealTimeRunData_Debug, false); // get live data + cb(RealTimeRunData_Debug, false); // get live data } } else { // MI if(0 == getFwVersion()) { diff --git a/src/hm/hmRadio.h b/src/hm/hmRadio.h index d298afd37..67b1abcd6 100644 --- a/src/hm/hmRadio.h +++ b/src/hm/hmRadio.h @@ -78,13 +78,11 @@ class HmRadio : public Radio { #else mNrf24->begin(mSpi.get(), ce, cs); #endif - mNrf24->setRetries(3, 15); // 3*250us + 250us and 16 loops -> 15.25ms + mNrf24->setRetries(3, 15); // wait 3*250 = 750us, 16 * 250us -> 4000us = 4ms - mNrf24->setChannel(mRfChLst[mRxChIdx]); - mNrf24->startListening(); mNrf24->setDataRate(RF24_250KBPS); - mNrf24->setAutoAck(true); - mNrf24->enableDynamicAck(); + //mNrf24->setAutoAck(true); // enabled by default + //mNrf24->enableDynamicAck(); mNrf24->enableDynamicPayloads(); mNrf24->setCRCLength(RF24_CRC_16); mNrf24->setAddressWidth(5); @@ -155,21 +153,6 @@ class HmRadio : public Radio { if(tx_ok) mLastIv->mAckCount++; - // start listening - if(!mIsRetransmit) { - if(mTxSetupTime < 30) { - mRxChIdx = (mTxChIdx + 4) % RF_CHANNELS; - mNrf24->setChannel(mRfChLst[mRxChIdx]); - mNrf24->startListening(); - - do { - yield(); - } while((millis() - mMillis) < 37); - } - } - mIsRetransmit = false; - - mRxChIdx = (mTxChIdx + 2) % RF_CHANNELS; mNrf24->setChannel(mRfChLst[mRxChIdx]); mNrf24->startListening(); @@ -185,7 +168,7 @@ class HmRadio : public Radio { if (getReceived()) { // check what we got, returns true for last package mNRFisInRX = false; mRadioWaitTime.startTimeMonitor(DURATION_PAUSE_LASTFR); // let the inverter first end his transmissions - // add stop listening? + mNrf24->stopListening(); } else { innerLoopTimeout = DURATION_LISTEN_MIN; mTimeslotStart = millis(); @@ -398,7 +381,6 @@ class HmRadio : public Radio { mLastIv = iv; iv->mDtuTxCnt++; mNRFisInRX = false; - mIsRetransmit = isRetransmit; } uint64_t getIvId(Inverter<> *iv) { @@ -433,7 +415,6 @@ class HmRadio : public Radio { bool rxPendular = false; uint32_t innerLoopTimeout = DURATION_LISTEN_MIN; uint8_t mTxSetupTime = 0; - bool mIsRetransmit = false; std::unique_ptr mSpi; std::unique_ptr mNrf24; diff --git a/src/web/html/includes/footer.html b/src/web/html/includes/footer.html index bbc4c6ce7..6aa896739 100644 --- a/src/web/html/includes/footer.html +++ b/src/web/html/includes/footer.html @@ -1,6 +1,6 @@