mirror of
https://github.com/thelsing/knx.git
synced 2025-03-27 00:15:15 +01:00
reenable sendframe handling
reenable rxProcess in loop fixes a memory leak
This commit is contained in:
parent
7b910eba59
commit
e65afebd3a
@ -560,11 +560,11 @@ void TpUartDataLinkLayer::setFrameRepetition(uint8_t nack, uint8_t busy)
|
|||||||
|
|
||||||
bool TpUartDataLinkLayer::sendFrame(CemiFrame &cemiFrame)
|
bool TpUartDataLinkLayer::sendFrame(CemiFrame &cemiFrame)
|
||||||
{
|
{
|
||||||
// if (!_connected)
|
if (!_connected || _monitoring)
|
||||||
// {
|
{
|
||||||
// dataConReceived(cemiFrame, false);
|
dataConReceived(cemiFrame, false);
|
||||||
// return false;
|
return false;
|
||||||
// }
|
}
|
||||||
|
|
||||||
TpFrame *tpFrame = new TpFrame(cemiFrame);
|
TpFrame *tpFrame = new TpFrame(cemiFrame);
|
||||||
// printHex(" TP>: ", tpFrame->data(), tpFrame->size());
|
// printHex(" TP>: ", tpFrame->data(), tpFrame->size());
|
||||||
@ -686,9 +686,14 @@ bool TpUartDataLinkLayer::reset()
|
|||||||
_rxInvalidFrameCounter = 0;
|
_rxInvalidFrameCounter = 0;
|
||||||
_rxUnkownControlCounter = 0;
|
_rxUnkownControlCounter = 0;
|
||||||
if (_txFrame != nullptr)
|
if (_txFrame != nullptr)
|
||||||
_txFrame->reset();
|
{
|
||||||
|
_txFrame = nullptr;
|
||||||
|
delete _txFrame;
|
||||||
|
}
|
||||||
if (_rxFrame != nullptr)
|
if (_rxFrame != nullptr)
|
||||||
|
{
|
||||||
_rxFrame->reset();
|
_rxFrame->reset();
|
||||||
|
}
|
||||||
_rxState = RX_IDLE;
|
_rxState = RX_IDLE;
|
||||||
_txState = TX_IDLE;
|
_txState = TX_IDLE;
|
||||||
_connected = false;
|
_connected = false;
|
||||||
@ -792,7 +797,6 @@ void TpUartDataLinkLayer::processTxQueue()
|
|||||||
if (_rxState != RX_IDLE)
|
if (_rxState != RX_IDLE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//
|
|
||||||
if (_txState != TX_IDLE)
|
if (_txState != TX_IDLE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -806,16 +810,23 @@ void TpUartDataLinkLayer::processTxQueue()
|
|||||||
_txFrameQueue.back = nullptr;
|
_txFrameQueue.back = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// free old frame
|
||||||
|
if (_txFrame != nullptr)
|
||||||
|
delete _txFrame;
|
||||||
|
|
||||||
|
// use frame from queue and delete queue entry
|
||||||
_txFrame = entry->frame;
|
_txFrame = entry->frame;
|
||||||
|
delete entry;
|
||||||
|
|
||||||
|
_txState = TX_FRAME;
|
||||||
|
_txLastTime = millis();
|
||||||
|
|
||||||
#ifdef DEBUG_TP_FRAMES
|
#ifdef DEBUG_TP_FRAMES
|
||||||
print("Outbound: ");
|
print("Outbound: ");
|
||||||
printFrame(_txFrame);
|
printFrame(_txFrame);
|
||||||
println();
|
println();
|
||||||
#endif
|
#endif
|
||||||
_txState = TX_FRAME;
|
|
||||||
_txLastTime = millis();
|
|
||||||
|
|
||||||
delete entry;
|
|
||||||
processTxFrameBytes();
|
processTxFrameBytes();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -875,7 +886,7 @@ void TpUartDataLinkLayer::loop()
|
|||||||
_tpState = 0;
|
_tpState = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// processRx();
|
processRx();
|
||||||
#ifdef USE_TP_RX_QUEUE
|
#ifdef USE_TP_RX_QUEUE
|
||||||
processRxQueue();
|
processRxQueue();
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user