From 769711ff814368ac36bf896b60af9fcba4970fe4 Mon Sep 17 00:00:00 2001 From: Scott Powell Date: Mon, 17 Feb 2025 10:43:48 +1100 Subject: [PATCH] * companion radio: "set af .." now applied, rxdelay now OFF by default. (can set though with new CMD_SET_TUNING_PARAMS) --- examples/companion_radio/main.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/examples/companion_radio/main.cpp b/examples/companion_radio/main.cpp index a3eddac4..af677537 100644 --- a/examples/companion_radio/main.cpp +++ b/examples/companion_radio/main.cpp @@ -112,6 +112,7 @@ static uint32_t _atoi(const char* sp) { #define CMD_IMPORT_CONTACT 18 #define CMD_REBOOT 19 #define CMD_GET_BATTERY_VOLTAGE 20 +#define CMD_SET_TUNING_PARAMS 21 #define RESP_CODE_OK 0 #define RESP_CODE_ERR 1 @@ -147,6 +148,7 @@ struct NodePrefs { // persisted to file float bw; uint8_t tx_power_dbm; uint8_t unused[3]; + float rx_delay_base; }; class MyMesh : public BaseChatMesh { @@ -350,6 +352,15 @@ class MyMesh : public BaseChatMesh { } protected: + float getAirtimeBudgetFactor() const override { + return _prefs.airtime_factor; + } + + int calcRxDelay(float score, uint32_t air_time) const override { + if (_prefs.rx_delay_base <= 0.0f) return 0; + return (int) ((pow(_prefs.rx_delay_base, 0.85f - score) - 1.0) * air_time); + } + void onDiscoveredContact(ContactInfo& contact, bool is_new) override { if (_serial->isConnected()) { out_frame[0] = PUSH_CODE_ADVERT; @@ -465,6 +476,7 @@ public: _prefs.bw = LORA_BW; _prefs.cr = LORA_CR; _prefs.tx_power_dbm = LORA_TX_POWER; + //_prefs.rx_delay_base = 10.0f; enable once new algo fixed } void begin(FILESYSTEM& fs, mesh::RNG& trng) { @@ -791,6 +803,13 @@ public: _phy->setOutputPower(_prefs.tx_power_dbm); writeOKFrame(); } + } else if (cmd_frame[0] == CMD_SET_TUNING_PARAMS) { + int i = 1; + uint32_t rx; + memcpy(&rx, &cmd_frame[i], 4); i += 4; + _prefs.rx_delay_base = ((float)rx) / 1000.0f; + savePrefs(); + writeOKFrame(); } else if (cmd_frame[0] == CMD_REBOOT) { board.reboot(); } else if (cmd_frame[0] == CMD_GET_BATTERY_VOLTAGE) {