mirror of
https://github.com/pelgraine/Meck.git
synced 2026-05-04 04:22:44 +02:00
Implement a "seen packets" table to track packets that have already been processed by the serial bridge. This prevents packets from being re-transmitted over the serial link if they have already been seen, and it stops inbound packets from serial from being re-injected into the mesh if they are duplicates. Duplicate inbound packets are now freed to prevent memory leaks.
33 lines
764 B
C++
33 lines
764 B
C++
#pragma once
|
|
|
|
#include "helpers/AbstractBridge.h"
|
|
#include "helpers/SimpleMeshTables.h"
|
|
#include <Stream.h>
|
|
|
|
#ifdef BRIDGE_OVER_SERIAL
|
|
|
|
/**
|
|
* @brief A bridge implementation that uses a serial port to connect two mesh networks.
|
|
*/
|
|
class SerialBridge : public AbstractBridge {
|
|
public:
|
|
/**
|
|
* @brief Construct a new Serial Bridge object
|
|
*
|
|
* @param serial The serial port to use for the bridge.
|
|
* @param mgr A pointer to the packet manager.
|
|
*/
|
|
SerialBridge(Stream& serial, mesh::PacketManager* mgr);
|
|
void begin() override;
|
|
void loop() override;
|
|
void onPacketTransmitted(mesh::Packet* packet) override;
|
|
void onPacketReceived() override;
|
|
|
|
private:
|
|
Stream* _serial;
|
|
mesh::PacketManager* _mgr;
|
|
SimpleMeshTables _seen_packets;
|
|
};
|
|
|
|
#endif
|