From 763446bad76c1b4d6d366fee98cf81be40211c1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Br=C3=A1zio?= Date: Fri, 4 Sep 2026 21:03:58 +0100 Subject: [PATCH] Notify the app when a CLI command changes node identity or position set name, set lat, set lon and gps setloc now fire a new no-op CommonCLICallbacks::onNodeConfigChanged() hook so the application can react to the change (e.g. re-evaluate automatic region or advert configuration). --- src/helpers/CommonCLI.cpp | 4 ++++ src/helpers/CommonCLI.h | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/src/helpers/CommonCLI.cpp b/src/helpers/CommonCLI.cpp index 4930e81e9a..1972c15dc4 100644 --- a/src/helpers/CommonCLI.cpp +++ b/src/helpers/CommonCLI.cpp @@ -359,6 +359,7 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, char* command, char* re _prefs->node_lat = _sensors->node_lat; _prefs->node_lon = _sensors->node_lon; savePrefs(); + _callbacks->onNodeConfigChanged(); strcpy(reply, "ok"); } else if (memcmp(command, "gps advert", 10) == 0) { if (strlen(command) == 10) { @@ -504,6 +505,7 @@ void CommonCLI::handleSetCmd(uint32_t sender_timestamp, char* command, char* rep if (isValidName(&config[5])) { StrHelper::strncpy(_prefs->node_name, &config[5], sizeof(_prefs->node_name)); savePrefs(); + _callbacks->onNodeConfigChanged(); strcpy(reply, "OK"); } else { strcpy(reply, "Error, bad chars"); @@ -515,10 +517,12 @@ void CommonCLI::handleSetCmd(uint32_t sender_timestamp, char* command, char* rep } else if (memcmp(config, "lat ", 4) == 0) { _prefs->node_lat = atof(&config[4]); savePrefs(); + _callbacks->onNodeConfigChanged(); strcpy(reply, "OK"); } else if (memcmp(config, "lon ", 4) == 0) { _prefs->node_lon = atof(&config[4]); savePrefs(); + _callbacks->onNodeConfigChanged(); strcpy(reply, "OK"); } else if (memcmp(config, "flood.max.unscoped ", 19) == 0) { uint8_t m = atoi(&config[19]); diff --git a/src/helpers/CommonCLI.h b/src/helpers/CommonCLI.h index 8591cdc140..f8ffba66c6 100644 --- a/src/helpers/CommonCLI.h +++ b/src/helpers/CommonCLI.h @@ -250,6 +250,12 @@ class CommonCLICallbacks { virtual void sendSelfAdvertisement(int delay_millis, bool flood) = 0; virtual void updateAdvertTimer() = 0; virtual void updateFloodAdvertTimer() = 0; + + // Fired after a CLI command changes node identity or position ("set name", + // "set lat", "set lon", "gps setloc"), so the app can react to the change. + virtual void onNodeConfigChanged() { + // no op by default + } virtual void setLoggingOn(bool enable) = 0; virtual void eraseLogFile() = 0; virtual void dumpLogFile() = 0;