refactor so I can track and ignore recent packets of any type

This commit is contained in:
geeksville
2020-05-11 16:14:53 -07:00
parent c12fb69ca2
commit 86ae69d360
8 changed files with 196 additions and 99 deletions

33
src/mesh/PacketHistory.h Normal file
View File

@@ -0,0 +1,33 @@
#pragma once
#include "Router.h"
#include <vector>
/**
* A record of a recent message broadcast
*/
struct PacketRecord {
NodeNum sender;
PacketId id;
uint32_t rxTimeMsec; // Unix time in msecs - the time we received it
};
/**
* This is a mixin that adds a record of past packets we have seen
*/
class PacketHistory
{
private:
/** FIXME: really should be a std::unordered_set with the key being sender,id.
* This would make checking packets in wasSeenRecently faster.
*/
std::vector<PacketRecord> recentPackets;
public:
PacketHistory();
/**
* Update recentBroadcasts and return true if we have already seen this packet
*/
bool wasSeenRecently(const MeshPacket *p);
};