fix Bau091A:IsAckRequired for Broadcasts

This commit is contained in:
Ing-Dom 2024-12-23 22:11:34 +01:00
parent 919b8e35eb
commit c1588e12d5

View File

@ -175,17 +175,25 @@ TPAckType Bau091A::isAckRequired(uint16_t address, bool isGrpAddr)
{
// ACK for broadcasts
if (address == 0)
{
ack = TPAckType::AckReqAck;
if(lcconfig & LCCONFIG::GROUP_IACK_ROUT)
// is group address in filter table? ACK if yes, No if not
if(_netLayer.isRoutedGroupAddress(address, 1))
ack = TPAckType::AckReqAck;
else
ack = TPAckType::AckReqNone;
}
else
// all are ACKED
ack = TPAckType::AckReqAck;
{
if(lcconfig & LCCONFIG::GROUP_IACK_ROUT)
{
// is group address in filter table? ACK if yes, No if not
if(_netLayer.isRoutedGroupAddress(address, 1))
ack = TPAckType::AckReqAck;
else
ack = TPAckType::AckReqNone;
}
else
{
// all are ACKED
ack = TPAckType::AckReqAck;
}
}
#ifdef KNX_TUNNELING
if(_dlLayerPrimary.isSentToTunnel(address, isGrpAddr))
ack = TPAckType::AckReqAck;
@ -209,7 +217,7 @@ TPAckType Bau091A::isAckRequired(uint16_t address, bool isGrpAddr)
#endif
}
printf("ack %u\n", ack);
return ack;
}