Use TimeoutHelper for TX timeout

This commit is contained in:
Thomas Basler 2023-03-17 18:09:28 +01:00
parent 3e1b778565
commit 06cc19fc70
2 changed files with 5 additions and 6 deletions

View File

@ -115,7 +115,7 @@ bool HoymilesRadio_CMT::cmtSwitchInvAndDtuFreq(const uint64_t inv_serial, const
dumpBuf(cmtTxBuffer, 15); dumpBuf(cmtTxBuffer, 15);
cmtTxLength = 15; cmtTxLength = 15;
cmtTxTimeout = 100; _txTimeout.set(100);
cmtNextState = CMT_STATE_TX_START; cmtNextState = CMT_STATE_TX_START;
@ -250,7 +250,7 @@ enumCMTresult HoymilesRadio_CMT::cmtProcess(void)
cmtNextState = CMT_STATE_TX_WAIT; cmtNextState = CMT_STATE_TX_WAIT;
} }
cmtTxTimeCount = CMT2300A_GetTickCount(); _txTimeout.reset();
break; break;
@ -260,7 +260,7 @@ enumCMTresult HoymilesRadio_CMT::cmtProcess(void)
cmtNextState = CMT_STATE_TX_DONE; cmtNextState = CMT_STATE_TX_DONE;
} }
if ((CMT2300A_GetTickCount() - cmtTxTimeCount) > cmtTxTimeout) { if (_txTimeout.occured()) {
cmtNextState = CMT_STATE_TX_TIMEOUT; cmtNextState = CMT_STATE_TX_TIMEOUT;
} }
@ -476,7 +476,7 @@ void HoymilesRadio_CMT::sendEsbPacket(CommandAbstract* cmd)
memcpy(cmtTxBuffer, cmd->getDataPayload(), cmd->getDataSize()); memcpy(cmtTxBuffer, cmd->getDataPayload(), cmd->getDataSize());
cmtTxLength = cmd->getDataSize(); cmtTxLength = cmd->getDataSize();
cmtTxTimeout = 100; _txTimeout.set(100);
cmtNextState = CMT_STATE_TX_START; cmtNextState = CMT_STATE_TX_START;

View File

@ -53,6 +53,7 @@ private:
std::queue<fragment_t> _rxBuffer; std::queue<fragment_t> _rxBuffer;
TimeoutHelper _rxTimeout; TimeoutHelper _rxTimeout;
TimeoutHelper _txTimeout;
bool _ChipConnected = false; bool _ChipConnected = false;
@ -69,9 +70,7 @@ private:
uint8_t cmtTxLength = 0; uint8_t cmtTxLength = 0;
uint32_t cmtRxTimeout = 200; uint32_t cmtRxTimeout = 200;
uint32_t cmtTxTimeout = 200;
uint32_t cmtRxTimeCount = 0; 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 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 uint8_t cmtCurrentCh; // current used channel, should be stored per inverter und set before next Tx, if hopping is used