* repeater & room server: new SERVER_RESPONSE_DELAY and TXT_ACK_DELAY defines.

This commit is contained in:
Scott Powell
2025-06-03 19:01:03 +10:00
parent 2204cb3a65
commit bdc369be67
2 changed files with 31 additions and 16 deletions

View File

@@ -59,6 +59,14 @@
#define ADMIN_PASSWORD "password" #define ADMIN_PASSWORD "password"
#endif #endif
#ifndef SERVER_RESPONSE_DELAY
#define SERVER_RESPONSE_DELAY 300
#endif
#ifndef TXT_ACK_DELAY
#define TXT_ACK_DELAY 200
#endif
#ifdef DISPLAY_CLASS #ifdef DISPLAY_CLASS
#include "UITask.h" #include "UITask.h"
static UITask ui_task(display); static UITask ui_task(display);
@@ -112,8 +120,7 @@ struct NeighbourInfo {
int8_t snr; // multiplied by 4, user should divide to get float value int8_t snr; // multiplied by 4, user should divide to get float value
}; };
// NOTE: need to space the ACK and the reply text apart (in CLI) #define CLI_REPLY_DELAY_MILLIS 1000
#define CLI_REPLY_DELAY_MILLIS 1500
class MyMesh : public mesh::Mesh, public CommonCLICallbacks { class MyMesh : public mesh::Mesh, public CommonCLICallbacks {
FILESYSTEM* _fs; FILESYSTEM* _fs;
@@ -446,14 +453,14 @@ protected:
// let this sender know path TO here, so they can use sendDirect(), and ALSO encode the response // let this sender know path TO here, so they can use sendDirect(), and ALSO encode the response
mesh::Packet* path = createPathReturn(client->id, secret, packet->path, packet->path_len, mesh::Packet* path = createPathReturn(client->id, secret, packet->path, packet->path_len,
PAYLOAD_TYPE_RESPONSE, reply_data, reply_len); PAYLOAD_TYPE_RESPONSE, reply_data, reply_len);
if (path) sendFlood(path); if (path) sendFlood(path, SERVER_RESPONSE_DELAY);
} else { } else {
mesh::Packet* reply = createDatagram(PAYLOAD_TYPE_RESPONSE, client->id, secret, reply_data, reply_len); mesh::Packet* reply = createDatagram(PAYLOAD_TYPE_RESPONSE, client->id, secret, reply_data, reply_len);
if (reply) { if (reply) {
if (client->out_path_len >= 0) { // we have an out_path, so send DIRECT if (client->out_path_len >= 0) { // we have an out_path, so send DIRECT
sendDirect(reply, client->out_path, client->out_path_len); sendDirect(reply, client->out_path, client->out_path_len, SERVER_RESPONSE_DELAY);
} else { } else {
sendFlood(reply); sendFlood(reply, SERVER_RESPONSE_DELAY);
} }
} }
} }
@@ -482,9 +489,9 @@ protected:
mesh::Packet* ack = createAck(ack_hash); mesh::Packet* ack = createAck(ack_hash);
if (ack) { if (ack) {
if (client->out_path_len < 0) { if (client->out_path_len < 0) {
sendFlood(ack); sendFlood(ack, TXT_ACK_DELAY);
} else { } else {
sendDirect(ack, client->out_path, client->out_path_len); sendDirect(ack, client->out_path, client->out_path_len, TXT_ACK_DELAY);
} }
} }
} }

View File

@@ -67,6 +67,14 @@
#define MAX_UNSYNCED_POSTS 32 #define MAX_UNSYNCED_POSTS 32
#endif #endif
#ifndef SERVER_RESPONSE_DELAY
#define SERVER_RESPONSE_DELAY 300
#endif
#ifndef TXT_ACK_DELAY
#define TXT_ACK_DELAY 200
#endif
#ifdef DISPLAY_CLASS #ifdef DISPLAY_CLASS
#include "UITask.h" #include "UITask.h"
static UITask ui_task(display); static UITask ui_task(display);
@@ -568,12 +576,12 @@ protected:
mesh::Packet* ack = createAck(ack_hash); mesh::Packet* ack = createAck(ack_hash);
if (ack) { if (ack) {
if (client->out_path_len < 0) { if (client->out_path_len < 0) {
sendFlood(ack); sendFlood(ack, TXT_ACK_DELAY);
} else { } else {
sendDirect(ack, client->out_path, client->out_path_len); sendDirect(ack, client->out_path, client->out_path_len, TXT_ACK_DELAY);
} }
} }
delay_millis = REPLY_DELAY_MILLIS; delay_millis = TXT_ACK_DELAY + REPLY_DELAY_MILLIS;
} else { } else {
delay_millis = 0; delay_millis = 0;
} }
@@ -592,9 +600,9 @@ protected:
auto reply = createDatagram(PAYLOAD_TYPE_TXT_MSG, client->id, secret, temp, 5 + text_len); auto reply = createDatagram(PAYLOAD_TYPE_TXT_MSG, client->id, secret, temp, 5 + text_len);
if (reply) { if (reply) {
if (client->out_path_len < 0) { if (client->out_path_len < 0) {
sendFlood(reply, delay_millis); sendFlood(reply, delay_millis + SERVER_RESPONSE_DELAY);
} else { } else {
sendDirect(reply, client->out_path, client->out_path_len, delay_millis); sendDirect(reply, client->out_path, client->out_path_len, delay_millis + SERVER_RESPONSE_DELAY);
} }
} }
} }
@@ -637,7 +645,7 @@ protected:
auto reply = createAck(ack_hash); auto reply = createAck(ack_hash);
if (reply) { if (reply) {
reply->payload[reply->payload_len++] = getUnsyncedCount(client); // NEW: add unsynced counter to end of ACK packet reply->payload[reply->payload_len++] = getUnsyncedCount(client); // NEW: add unsynced counter to end of ACK packet
sendDirect(reply, client->out_path, client->out_path_len); sendDirect(reply, client->out_path, client->out_path_len, SERVER_RESPONSE_DELAY);
} }
} }
} else { } else {
@@ -647,14 +655,14 @@ protected:
// let this sender know path TO here, so they can use sendDirect(), and ALSO encode the response // let this sender know path TO here, so they can use sendDirect(), and ALSO encode the response
mesh::Packet* path = createPathReturn(client->id, secret, packet->path, packet->path_len, mesh::Packet* path = createPathReturn(client->id, secret, packet->path, packet->path_len,
PAYLOAD_TYPE_RESPONSE, reply_data, reply_len); PAYLOAD_TYPE_RESPONSE, reply_data, reply_len);
if (path) sendFlood(path); if (path) sendFlood(path, SERVER_RESPONSE_DELAY);
} else { } else {
mesh::Packet* reply = createDatagram(PAYLOAD_TYPE_RESPONSE, client->id, secret, reply_data, reply_len); mesh::Packet* reply = createDatagram(PAYLOAD_TYPE_RESPONSE, client->id, secret, reply_data, reply_len);
if (reply) { if (reply) {
if (client->out_path_len >= 0) { // we have an out_path, so send DIRECT if (client->out_path_len >= 0) { // we have an out_path, so send DIRECT
sendDirect(reply, client->out_path, client->out_path_len); sendDirect(reply, client->out_path, client->out_path_len, SERVER_RESPONSE_DELAY);
} else { } else {
sendFlood(reply); sendFlood(reply, SERVER_RESPONSE_DELAY);
} }
} }
} }