numMissed counter of statistics is "unusable" if publisher restarts.
Use case:
- missed frames = 0, everything is OK
- publisher sends sequence counter=1
- subscriber receives sequence counter=1
- publisher restarts
- publisher sends sequence counter=0
- subscriber expects sequence counter=2, but gets 0
- (TCNOpen 2.1.0.0) trdp_pdcom.c:902 numMissed += UINT32_MAX - curSeqCnt + newSeqCnt;
- this means numMissed is increased with 4294967294
Proposal:
- if received frame has sequence counter < current sequence counter, current sequence counter could be set to 0 before comparing values
- this is not bullet-proof and does not handle all corner cases exactly right way (which in practice might be challenging), but provides better value for application
Any comments ?
Best regards, Kari
Could we just remove following code lines (900-903) from trdp_pdcom.c ?
900 else if (pExistingElement->curSeqCnt > newSeqCnt)
901 {
902 pExistingElement->numMissed += UINT32_MAX - pExistingElement->curSeqCnt + newSeqCnt;
903 }
And expect that receiving sequence counter value less than previous one means that publisher has restarted.
At revision: 2350