mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-04-20 22:13:47 +00:00
* companion radio: "set af .." now applied, rxdelay now OFF by default. (can set though with new CMD_SET_TUNING_PARAMS)
This commit is contained in:
parent
b934a1286e
commit
769711ff81
1 changed files with 19 additions and 0 deletions
|
|
@ -112,6 +112,7 @@ static uint32_t _atoi(const char* sp) {
|
||||||
#define CMD_IMPORT_CONTACT 18
|
#define CMD_IMPORT_CONTACT 18
|
||||||
#define CMD_REBOOT 19
|
#define CMD_REBOOT 19
|
||||||
#define CMD_GET_BATTERY_VOLTAGE 20
|
#define CMD_GET_BATTERY_VOLTAGE 20
|
||||||
|
#define CMD_SET_TUNING_PARAMS 21
|
||||||
|
|
||||||
#define RESP_CODE_OK 0
|
#define RESP_CODE_OK 0
|
||||||
#define RESP_CODE_ERR 1
|
#define RESP_CODE_ERR 1
|
||||||
|
|
@ -147,6 +148,7 @@ struct NodePrefs { // persisted to file
|
||||||
float bw;
|
float bw;
|
||||||
uint8_t tx_power_dbm;
|
uint8_t tx_power_dbm;
|
||||||
uint8_t unused[3];
|
uint8_t unused[3];
|
||||||
|
float rx_delay_base;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MyMesh : public BaseChatMesh {
|
class MyMesh : public BaseChatMesh {
|
||||||
|
|
@ -350,6 +352,15 @@ class MyMesh : public BaseChatMesh {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
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 {
|
void onDiscoveredContact(ContactInfo& contact, bool is_new) override {
|
||||||
if (_serial->isConnected()) {
|
if (_serial->isConnected()) {
|
||||||
out_frame[0] = PUSH_CODE_ADVERT;
|
out_frame[0] = PUSH_CODE_ADVERT;
|
||||||
|
|
@ -465,6 +476,7 @@ public:
|
||||||
_prefs.bw = LORA_BW;
|
_prefs.bw = LORA_BW;
|
||||||
_prefs.cr = LORA_CR;
|
_prefs.cr = LORA_CR;
|
||||||
_prefs.tx_power_dbm = LORA_TX_POWER;
|
_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) {
|
void begin(FILESYSTEM& fs, mesh::RNG& trng) {
|
||||||
|
|
@ -791,6 +803,13 @@ public:
|
||||||
_phy->setOutputPower(_prefs.tx_power_dbm);
|
_phy->setOutputPower(_prefs.tx_power_dbm);
|
||||||
writeOKFrame();
|
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) {
|
} else if (cmd_frame[0] == CMD_REBOOT) {
|
||||||
board.reboot();
|
board.reboot();
|
||||||
} else if (cmd_frame[0] == CMD_GET_BATTERY_VOLTAGE) {
|
} else if (cmd_frame[0] == CMD_GET_BATTERY_VOLTAGE) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue