EDOMI hält sich an diese "Gesetze" aus der Spezifikation (oder sollte es zumindest tun - ich prüfe das nochmal):
If a KNXnet/IP Tunnelling Client receives a frame with a sequence number that equals the expected sequence number then it shall reply with a TUNNELLING_ACK (Status = E_NO_ERROR) frame and process the received frame.
If a KNXnet/IP Tunnelling Client receives a frame with a sequence number that is one less than the expected sequence number then it shall reply with a TUNNELLING_ACK (Status = E_NO_ERROR) message and discard the received frame.
If a KNXnet/IP Tunnelling Client receives a frame with a sequence number that is not equal to the expected sequence number and not equal to one less than the expected sequence number, the KNXnet/IP Tunnelling Client shall not reply and shall discard the received frame.
EDIT:
Im Code ist es korrekt implementiert - hier ein Auszug:
PHP-Code:
...
} else if ($receiveRtg==($dE_seqCounterReceive-1)) {
//ACK und verwerfen
$dE_ACK=true;
$dE_seqCounterReceiveINC=false;
trace(true,'ROUTER @ DE | TUNNELING_REQUEST / Hinweis: SequenceCounter abweichend (ACK): Ist-Wert='.$receiveRtg.', Soll-Wert='.$dE_seqCounterReceive.' / Raw: '.bytesToHex($response));
$SRAM[6]++;
} else {
//kein ACK und verwerfen
$dE_ACK=false;
$dE_seqCounterReceiveINC=false;
trace(true,'ROUTER @ DE | TUNNELING_REQUEST / Hinweis: SequenceCounter abweichend (noACK): Ist-Wert='.$receiveRtg.', Soll-Wert='.$dE_seqCounterReceive.' / Raw: '.bytesToHex($response));
$SRAM[6]++;
}
...
EDIT2:
Ich glaube ich stand damals auf'm Schlauch?!

} else if ($receiveRtg==($dE_seqCounterReceive-1)) {...
ist genau falsch herum - richtig wäre wohl "+1" statt "-1"

Dies ist möglicherweise bereits die Lösung für das Problem! Ich werde dies im nächsten Update korrigieren und dann schauen wir weiter. Sorry für die Umstände!
Allerdings erklärt dies natürlich noch nicht, warum überhaupt Telegramme verloren gehen - bei mir ging noch nie(!) ein Telegramm verloren...
EDIT3:
Quatsch. Ich habe die Variablen verwechselt... $receiveRtg ist der SeqCounter "vom Bus" - insofern stimmt's.




Einen Kommentar schreiben: