mirror of
https://github.com/thelsing/knx.git
synced 2024-12-18 19:08:18 +01:00
TPUART: Avoid false EOP (#166)
* Made the rx loop shorter to avoid tx buffer saturation. * sendSingleFrameByte return false on last byte * sendSingleFrameByte return false on last byte
This commit is contained in:
parent
bf70e162f8
commit
f5feefb0f2
@ -113,13 +113,14 @@ void TpUartDataLinkLayer::loop()
|
||||
if (!_enabled)
|
||||
return;
|
||||
|
||||
// Signals to communicate from rx part with the tx part
|
||||
bool isEchoComplete = false; // Flag that a complete echo is received
|
||||
uint8_t dataConnMsg = 0; // The DATA_CONN message just seen or 0
|
||||
do {
|
||||
_receiveBuffer[0] = 0x29;
|
||||
_receiveBuffer[1] = 0;
|
||||
uint8_t* buffer = _receiveBuffer + 2;
|
||||
uint8_t rxByte;
|
||||
bool isEchoComplete = false; // Flag that a complete echo is received
|
||||
bool dataConnMsg = 0; // The DATA_CONN message just seen or 0
|
||||
bool isEOP = (millis() - _lastByteRxTime > EOP_TIMEOUT); // Flag that an EOP gap is seen
|
||||
switch (_rxState)
|
||||
{
|
||||
@ -356,6 +357,7 @@ void TpUartDataLinkLayer::loop()
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} while (_rxState == RX_L_DATA);
|
||||
|
||||
// Check for spurios DATA_CONN message
|
||||
if (dataConnMsg && _txState != TX_WAIT_CONN && _txState != TX_WAIT_ECHO) {
|
||||
@ -423,7 +425,6 @@ void TpUartDataLinkLayer::loop()
|
||||
}
|
||||
break;
|
||||
}
|
||||
} while (_rxState == RX_L_DATA);
|
||||
}
|
||||
|
||||
bool TpUartDataLinkLayer::sendFrame(CemiFrame& frame)
|
||||
@ -559,13 +560,15 @@ bool TpUartDataLinkLayer::sendSingleFrameByte()
|
||||
|
||||
_platform.writeUart(cmd, 2);
|
||||
_TxByteCnt++;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
||||
// Check for last byte send
|
||||
if (_TxByteCnt >= _sendBufferLength)
|
||||
{
|
||||
_TxByteCnt = 0;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void TpUartDataLinkLayer::addFrameTxQueue(CemiFrame& frame)
|
||||
|
Loading…
Reference in New Issue
Block a user