Skip to content

Commit d78760b

Browse files
committed
fix repeated messages handling
1 parent b485424 commit d78760b

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

CM19Lib/Cm19Manager.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,10 @@ public class Cm19Manager
5252
private readonly object waitAckMonitor = new object();
5353

5454
// Variables used for preventing duplicated messages coming from RF
55+
private const uint RfRepeatGap = 150;
5556
private DateTime firstRfReceivedTs = DateTime.Now;
5657
private DateTime lastRfReceivedTs = DateTime.Now;
58+
private DateTime lastRfRepeatedTs = DateTime.Now;
5759
private string lastRfMessage = "";
5860

5961
// Read/Write error state variable
@@ -457,22 +459,24 @@ private void ReaderTask()
457459
// Repeated messages check
458460
if (message.MessageType != RfMessageType.NotSet)
459461
{
460-
if (lastRfMessage == BitConverter.ToString(readData))
462+
if (lastRfMessage == BitConverter.ToString(readData) && (DateTime.Now - lastRfReceivedTs).TotalMilliseconds < RfRepeatGap)
461463
{
462-
if ((DateTime.Now - lastRfReceivedTs).TotalMilliseconds < 150)
464+
if ((DateTime.Now - lastRfRepeatedTs).TotalMilliseconds < RfRepeatGap)
463465
{
464-
logger.Warn("Ignoring repeated message within {0}ms", 150);
466+
logger.Warn("Ignoring repeated message within {0}ms", RfRepeatGap);
465467
if ((DateTime.Now - firstRfReceivedTs).TotalMilliseconds <= MinRfRepeatDelayMs)
466468
{
467-
lastRfReceivedTs = DateTime.Now;
469+
lastRfRepeatedTs = DateTime.Now;
468470
}
471+
lastRfReceivedTs = DateTime.Now;
469472
continue;
470473
}
471474
}
472475
else
473476
{
474-
firstRfReceivedTs = lastRfReceivedTs = DateTime.Now;
477+
firstRfReceivedTs = lastRfRepeatedTs = DateTime.Now;
475478
}
479+
lastRfReceivedTs = DateTime.Now;
476480
lastRfMessage = BitConverter.ToString(readData);
477481
}
478482

0 commit comments

Comments
 (0)