|
|
|
@ -120,7 +120,7 @@ struct NeighbourInfo { |
|
|
|
int8_t snr; // multiplied by 4, user should divide to get float value
|
|
|
|
}; |
|
|
|
|
|
|
|
#define CLI_REPLY_DELAY_MILLIS 1000 |
|
|
|
#define CLI_REPLY_DELAY_MILLIS 600 |
|
|
|
|
|
|
|
class MyMesh : public mesh::Mesh, public CommonCLICallbacks { |
|
|
|
FILESYSTEM* _fs; |
|
|
|
@ -134,6 +134,11 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { |
|
|
|
NeighbourInfo neighbours[MAX_NEIGHBOURS]; |
|
|
|
#endif |
|
|
|
CayenneLPP telemetry; |
|
|
|
unsigned long set_radio_at, revert_radio_at; |
|
|
|
float pending_freq; |
|
|
|
float pending_bw; |
|
|
|
uint8_t pending_sf; |
|
|
|
uint8_t pending_cr; |
|
|
|
|
|
|
|
ClientInfo* putClient(const mesh::Identity& id) { |
|
|
|
uint32_t min_time = 0xFFFFFFFF; |
|
|
|
@ -558,6 +563,7 @@ public: |
|
|
|
{ |
|
|
|
memset(known_clients, 0, sizeof(known_clients)); |
|
|
|
next_local_advert = next_flood_advert = 0; |
|
|
|
set_radio_at = revert_radio_at = 0; |
|
|
|
_logging = false; |
|
|
|
|
|
|
|
#if MAX_NEIGHBOURS |
|
|
|
@ -609,6 +615,16 @@ public: |
|
|
|
_cli.savePrefs(_fs); |
|
|
|
} |
|
|
|
|
|
|
|
void applyTempRadioParams(float freq, float bw, uint8_t sf, uint8_t cr, int timeout_mins) override { |
|
|
|
set_radio_at = futureMillis(2000); // give CLI reply some time to be sent back, before applying temp radio params
|
|
|
|
pending_freq = freq; |
|
|
|
pending_bw = bw; |
|
|
|
pending_sf = sf; |
|
|
|
pending_cr = cr; |
|
|
|
|
|
|
|
revert_radio_at = futureMillis(2000 + timeout_mins*60*1000); // schedule when to revert radio params
|
|
|
|
} |
|
|
|
|
|
|
|
bool formatFileSystem() override { |
|
|
|
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) |
|
|
|
return InternalFS.format(); |
|
|
|
@ -734,6 +750,19 @@ public: |
|
|
|
|
|
|
|
updateAdvertTimer(); // schedule next local advert
|
|
|
|
} |
|
|
|
|
|
|
|
if (set_radio_at && millisHasNowPassed(set_radio_at)) { // apply pending (temporary) radio params
|
|
|
|
set_radio_at = 0; // clear timer
|
|
|
|
radio_set_params(pending_freq, pending_bw, pending_sf, pending_cr); |
|
|
|
MESH_DEBUG_PRINTLN("Temp radio params"); |
|
|
|
} |
|
|
|
|
|
|
|
if (revert_radio_at && millisHasNowPassed(revert_radio_at)) { // revert radio params to orig
|
|
|
|
revert_radio_at = 0; // clear timer
|
|
|
|
radio_set_params(_prefs.freq, _prefs.bw, _prefs.sf, _prefs.cr); |
|
|
|
MESH_DEBUG_PRINTLN("Radio params restored"); |
|
|
|
} |
|
|
|
|
|
|
|
#ifdef DISPLAY_CLASS |
|
|
|
ui_task.loop(); |
|
|
|
#endif |
|
|
|
|