partial for #681: Never let stale nodeinfos/positions stay in xmit queue

This commit is contained in:
Kevin Hester
2021-02-11 17:39:53 +08:00
parent fdfe62edf0
commit 917090856f
11 changed files with 53 additions and 2 deletions

View File

@@ -28,10 +28,15 @@ bool NodeInfoPlugin::handleReceivedProtobuf(const MeshPacket &mp, const User &p)
void NodeInfoPlugin::sendOurNodeInfo(NodeNum dest, bool wantReplies)
{
// cancel any not yet sent (now stale) position packets
if(prevPacketId) // if we wrap around to zero, we'll simply fail to cancel in that rare case (no big deal)
service.cancelSending(prevPacketId);
MeshPacket *p = allocReply();
p->to = dest;
p->decoded.want_response = wantReplies;
prevPacketId = p->id;
service.sendToMesh(p);
}

View File

@@ -6,6 +6,9 @@
*/
class NodeInfoPlugin : public ProtobufPlugin<User>
{
/// The id of the last packet we sent, to allow us to cancel it if we make something fresher
PacketId prevPacketId = 0;
public:
/** Constructor
* name is for debugging output

View File

@@ -37,9 +37,14 @@ MeshPacket *PositionPlugin::allocReply()
void PositionPlugin::sendOurPosition(NodeNum dest, bool wantReplies)
{
// cancel any not yet sent (now stale) position packets
if(prevPacketId) // if we wrap around to zero, we'll simply fail to cancel in that rare case (no big deal)
service.cancelSending(prevPacketId);
MeshPacket *p = allocReply();
p->to = dest;
p->decoded.want_response = wantReplies;
prevPacketId = p->id;
service.sendToMesh(p);
}

View File

@@ -6,6 +6,9 @@
*/
class PositionPlugin : public ProtobufPlugin<Position>
{
/// The id of the last packet we sent, to allow us to cancel it if we make something fresher
PacketId prevPacketId = 0;
public:
/** Constructor
* name is for debugging output