From 06cc19fc7075417154d0dbfd82345671bb121dc5 Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Fri, 17 Mar 2023 18:09:28 +0100 Subject: [PATCH] Use TimeoutHelper for TX timeout --- lib/Hoymiles/src/HoymilesRadio_CMT.cpp | 8 ++++---- lib/Hoymiles/src/HoymilesRadio_CMT.h | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/Hoymiles/src/HoymilesRadio_CMT.cpp b/lib/Hoymiles/src/HoymilesRadio_CMT.cpp index b6c055b..5d4efc1 100644 --- a/lib/Hoymiles/src/HoymilesRadio_CMT.cpp +++ b/lib/Hoymiles/src/HoymilesRadio_CMT.cpp @@ -115,7 +115,7 @@ bool HoymilesRadio_CMT::cmtSwitchInvAndDtuFreq(const uint64_t inv_serial, const dumpBuf(cmtTxBuffer, 15); cmtTxLength = 15; - cmtTxTimeout = 100; + _txTimeout.set(100); cmtNextState = CMT_STATE_TX_START; @@ -250,7 +250,7 @@ enumCMTresult HoymilesRadio_CMT::cmtProcess(void) cmtNextState = CMT_STATE_TX_WAIT; } - cmtTxTimeCount = CMT2300A_GetTickCount(); + _txTimeout.reset(); break; @@ -260,7 +260,7 @@ enumCMTresult HoymilesRadio_CMT::cmtProcess(void) cmtNextState = CMT_STATE_TX_DONE; } - if ((CMT2300A_GetTickCount() - cmtTxTimeCount) > cmtTxTimeout) { + if (_txTimeout.occured()) { cmtNextState = CMT_STATE_TX_TIMEOUT; } @@ -476,7 +476,7 @@ void HoymilesRadio_CMT::sendEsbPacket(CommandAbstract* cmd) memcpy(cmtTxBuffer, cmd->getDataPayload(), cmd->getDataSize()); cmtTxLength = cmd->getDataSize(); - cmtTxTimeout = 100; + _txTimeout.set(100); cmtNextState = CMT_STATE_TX_START; diff --git a/lib/Hoymiles/src/HoymilesRadio_CMT.h b/lib/Hoymiles/src/HoymilesRadio_CMT.h index 91bec78..77bbb2a 100644 --- a/lib/Hoymiles/src/HoymilesRadio_CMT.h +++ b/lib/Hoymiles/src/HoymilesRadio_CMT.h @@ -53,6 +53,7 @@ private: std::queue _rxBuffer; TimeoutHelper _rxTimeout; + TimeoutHelper _txTimeout; bool _ChipConnected = false; @@ -69,9 +70,7 @@ private: uint8_t cmtTxLength = 0; uint32_t cmtRxTimeout = 200; - uint32_t cmtTxTimeout = 200; uint32_t cmtRxTimeCount = 0; - uint32_t cmtTxTimeCount = 0; uint8_t cmtBaseChOff860; // offset from initalized CMT base frequency to Hoy base frequency in channels uint8_t cmtCurrentCh; // current used channel, should be stored per inverter und set before next Tx, if hopping is used