From 2adac5e4afbc3f54dda821e856822d7f61631ccb Mon Sep 17 00:00:00 2001 From: Marco Scholl Date: Thu, 23 May 2024 09:35:07 +0200 Subject: [PATCH] fix: resets stats --- src/knx/tpuart_data_link_layer.cpp | 22 ++++++++++++++++------ src/knx/tpuart_data_link_layer.h | 1 + 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/knx/tpuart_data_link_layer.cpp b/src/knx/tpuart_data_link_layer.cpp index e74df73..67e9e25 100644 --- a/src/knx/tpuart_data_link_layer.cpp +++ b/src/knx/tpuart_data_link_layer.cpp @@ -564,7 +564,6 @@ void TpUartDataLinkLayer::pushTxFrameQueue(TpFrame *tpFrame) } _txQueueCount++; - _txFrameCounter++; } void TpUartDataLinkLayer::setRepetitions(uint8_t nack, uint8_t busy) @@ -580,12 +579,15 @@ void TpUartDataLinkLayer::setFrameRepetition(uint8_t nack, uint8_t busy) bool TpUartDataLinkLayer::sendFrame(CemiFrame &cemiFrame) { + _txFrameCounter++; + if (!_connected || _monitoring || _txQueueCount > MAX_TX_QUEUE) { if (_txQueueCount > MAX_TX_QUEUE) { println("Ignore frame because transmit queue is full!"); } + dataConReceived(cemiFrame, false); return false; } @@ -692,6 +694,17 @@ void TpUartDataLinkLayer::connected(bool state /* = true */) _connected = state; } +void TpUartDataLinkLayer::resetStats() +{ + _rxProcessdFrameCounter = 0; + _rxIgnoredFrameCounter = 0; + _rxInvalidFrameCounter = 0; + _rxInvalidFrameCounter = 0; + _rxUnkownControlCounter = 0; + _txFrameCounter = 0; + _txProcessdFrameCounter = 0; +} + bool TpUartDataLinkLayer::reset() { // println("Reset TP"); @@ -705,11 +718,7 @@ bool TpUartDataLinkLayer::reset() isrLock(true); // Reset - _rxIgnoredFrameCounter = 0; - _rxInvalidFrameCounter = 0; - _rxInvalidFrameCounter = 0; - _rxUnkownControlCounter = 0; - + resetStats(); clearTxFrame(); clearTxFrameQueue(); @@ -792,6 +801,7 @@ void TpUartDataLinkLayer::monitor() // println("busmonitor"); _monitoring = true; _platform.writeUart(U_BUSMON_REQ); + resetStats(); } void TpUartDataLinkLayer::enabled(bool value) diff --git a/src/knx/tpuart_data_link_layer.h b/src/knx/tpuart_data_link_layer.h index 729e7be..7dd0d55 100644 --- a/src/knx/tpuart_data_link_layer.h +++ b/src/knx/tpuart_data_link_layer.h @@ -57,6 +57,7 @@ class TpUartDataLinkLayer : public DataLinkLayer bool isMonitoring(); bool isStopped(); bool isBusy(); + void resetStats(); #ifdef USE_TP_RX_QUEUE void processRxISR();