* new RX delays based on SNR

This commit is contained in:
Scott Powell 2025-02-04 12:35:53 +11:00
parent 29e62b9ce2
commit 7da0a5f7ec
13 changed files with 116 additions and 23 deletions

View file

@ -46,8 +46,8 @@
#define SEND_TIMEOUT_BASE_MILLIS 300
#define FLOOD_SEND_TIMEOUT_FACTOR 16.0f
#define DIRECT_SEND_PERHOP_FACTOR 4.0f
#define DIRECT_SEND_PERHOP_EXTRA_MILLIS 200
#define DIRECT_SEND_PERHOP_FACTOR 5.0f
#define DIRECT_SEND_PERHOP_EXTRA_MILLIS 250
#define PUBLIC_GROUP_PSK "izOH6cXN6mrJ5e26oRXNcg=="

View file

@ -121,6 +121,7 @@ struct NodePrefs { // persisted to file
float freq;
uint8_t tx_power_dbm;
uint8_t unused[3];
float rx_delay_base;
};
class MyMesh : public mesh::Mesh {
@ -193,6 +194,10 @@ protected:
return true; // Yes, allow packet to be forwarded
}
int calcRxDelay(float score, uint32_t air_time) const override {
return (int) ((pow(_prefs.rx_delay_base, 0.85f - score) - 1.0) * air_time);
}
void onAnonDataRecv(mesh::Packet* packet, uint8_t type, const mesh::Identity& sender, uint8_t* data, size_t len) override {
if (type == PAYLOAD_TYPE_ANON_REQ) { // received an initial request by a possible admin client (unknown at this stage)
uint32_t timestamp;
@ -371,6 +376,7 @@ public:
// defaults
_prefs.airtime_factor = 1.0; // one half
_prefs.rx_delay_base = 10.0;
strncpy(_prefs.node_name, ADVERT_NAME, sizeof(_prefs.node_name)-1);
_prefs.node_name[sizeof(_prefs.node_name)-1] = 0; // truncate if necessary
_prefs.node_lat = ADVERT_LAT;

View file

@ -138,6 +138,7 @@ struct NodePrefs { // persisted to file
float freq;
uint8_t tx_power_dbm;
uint8_t unused[3];
float rx_delay_base;
};
class MyMesh : public mesh::Mesh {
@ -246,6 +247,10 @@ protected:
return _prefs.airtime_factor;
}
int calcRxDelay(float score, uint32_t air_time) const override {
return (int) ((pow(_prefs.rx_delay_base, 0.85f - score) - 1.0) * air_time);
}
#if ROOM_IS_ALSO_REPEATER
bool allowPacketForward(const mesh::Packet* packet) override {
return true; // Yes, allow packet to be forwarded
@ -484,6 +489,7 @@ public:
// defaults
_prefs.airtime_factor = 1.0; // one half
_prefs.rx_delay_base = 10.0;
strncpy(_prefs.node_name, ADVERT_NAME, sizeof(_prefs.node_name)-1);
_prefs.node_name[sizeof(_prefs.node_name)-1] = 0; // truncate if necessary
_prefs.node_lat = ADVERT_LAT;

View file

@ -44,8 +44,8 @@
#define SEND_TIMEOUT_BASE_MILLIS 300
#define FLOOD_SEND_TIMEOUT_FACTOR 16.0f
#define DIRECT_SEND_PERHOP_FACTOR 4.0f
#define DIRECT_SEND_PERHOP_EXTRA_MILLIS 200
#define DIRECT_SEND_PERHOP_FACTOR 5.0f
#define DIRECT_SEND_PERHOP_EXTRA_MILLIS 250
#define PUBLIC_GROUP_PSK "izOH6cXN6mrJ5e26oRXNcg=="