From 805ca7b9007556edb62822970cadaf6fad430bed Mon Sep 17 00:00:00 2001 From: Scott Powell Date: Tue, 13 May 2025 18:12:58 +1000 Subject: [PATCH] * CommonCLI: added "clear stats" command --- examples/simple_repeater/main.cpp | 8 +++++++- examples/simple_room_server/main.cpp | 8 +++++++- src/Dispatcher.cpp | 2 ++ src/Dispatcher.h | 4 ++++ src/helpers/CommonCLI.cpp | 3 +++ src/helpers/CommonCLI.h | 1 + src/helpers/RadioLibWrappers.h | 2 ++ src/helpers/SimpleMeshTables.h | 1 + src/helpers/esp32/ESPNOWRadio.h | 2 ++ 9 files changed, 29 insertions(+), 2 deletions(-) diff --git a/examples/simple_repeater/main.cpp b/examples/simple_repeater/main.cpp index 76792909..ea8e8443 100644 --- a/examples/simple_repeater/main.cpp +++ b/examples/simple_repeater/main.cpp @@ -686,7 +686,13 @@ public: *dp = 0; // null terminator } - const uint8_t* getSelfIdPubKey() { return self_id.pub_key; } + const uint8_t* getSelfIdPubKey() override { return self_id.pub_key; } + + void clearStats() override { + radio_driver.resetStats(); + resetStats(); + ((SimpleMeshTables *)getTables())->resetStats(); + } void loop() { mesh::Mesh::loop(); diff --git a/examples/simple_room_server/main.cpp b/examples/simple_room_server/main.cpp index 756be6d5..05a076b3 100644 --- a/examples/simple_room_server/main.cpp +++ b/examples/simple_room_server/main.cpp @@ -821,7 +821,13 @@ public: strcpy(reply, "not supported"); } - const uint8_t* getSelfIdPubKey() { return self_id.pub_key; } + const uint8_t* getSelfIdPubKey() override { return self_id.pub_key; } + + void clearStats() override { + radio_driver.resetStats(); + resetStats(); + ((SimpleMeshTables *)getTables())->resetStats(); + } void loop() { mesh::Mesh::loop(); diff --git a/src/Dispatcher.cpp b/src/Dispatcher.cpp index 5a09c171..53a5b2ad 100644 --- a/src/Dispatcher.cpp +++ b/src/Dispatcher.cpp @@ -14,8 +14,10 @@ void Dispatcher::begin() { n_sent_flood = n_sent_direct = 0; n_recv_flood = n_recv_direct = 0; _err_flags = 0; + radio_nonrx_start = _ms->getMillis(); _radio->begin(); + prev_isrecv_mode = _radio->isInRecvMode(); } float Dispatcher::getAirtimeBudgetFactor() const { diff --git a/src/Dispatcher.h b/src/Dispatcher.h index 01dd76bc..bcfba389 100644 --- a/src/Dispatcher.h +++ b/src/Dispatcher.h @@ -156,6 +156,10 @@ public: uint32_t getNumSentDirect() const { return n_sent_direct; } uint32_t getNumRecvFlood() const { return n_recv_flood; } uint32_t getNumRecvDirect() const { return n_recv_direct; } + void resetStats() { + n_sent_flood = n_sent_direct = n_recv_flood = n_recv_direct = 0; + _err_flags = 0; + } // helper methods bool millisHasNowPassed(unsigned long timestamp) const; diff --git a/src/helpers/CommonCLI.cpp b/src/helpers/CommonCLI.cpp index d9d83440..f3f7727c 100644 --- a/src/helpers/CommonCLI.cpp +++ b/src/helpers/CommonCLI.cpp @@ -169,6 +169,9 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch checkAdvertInterval(); savePrefs(); sprintf(reply, "password now: %s", _prefs->password); // echo back just to let admin know for sure!! + } else if (memcmp(command, "clear stats", 11) == 0) { + _callbacks->clearStats(); + strcpy(reply, "(OK - stats reset)"); } else if (memcmp(command, "get ", 4) == 0) { const char* config = &command[4]; if (memcmp(config, "af", 2) == 0) { diff --git a/src/helpers/CommonCLI.h b/src/helpers/CommonCLI.h index 8bd3d150..0e88c266 100644 --- a/src/helpers/CommonCLI.h +++ b/src/helpers/CommonCLI.h @@ -42,6 +42,7 @@ public: virtual void setTxPower(uint8_t power_dbm) = 0; virtual void formatNeighborsReply(char *reply) = 0; virtual const uint8_t* getSelfIdPubKey() = 0; + virtual void clearStats() = 0; }; class CommonCLI { diff --git a/src/helpers/RadioLibWrappers.h b/src/helpers/RadioLibWrappers.h index 8dc03e28..bdbadb19 100644 --- a/src/helpers/RadioLibWrappers.h +++ b/src/helpers/RadioLibWrappers.h @@ -26,6 +26,8 @@ public: uint32_t getPacketsRecv() const { return n_recv; } uint32_t getPacketsSent() const { return n_sent; } + void resetStats() { n_recv = n_sent = 0; } + virtual float getLastRSSI() const override; virtual float getLastSNR() const override; diff --git a/src/helpers/SimpleMeshTables.h b/src/helpers/SimpleMeshTables.h index 0dd6032a..910b8071 100644 --- a/src/helpers/SimpleMeshTables.h +++ b/src/helpers/SimpleMeshTables.h @@ -83,4 +83,5 @@ public: uint32_t getNumDirectDups() const { return _direct_dups; } uint32_t getNumFloodDups() const { return _flood_dups; } + void resetStats() { _direct_dups = _flood_dups = 0; } }; diff --git a/src/helpers/esp32/ESPNOWRadio.h b/src/helpers/esp32/ESPNOWRadio.h index 5d4ff583..c696da3a 100644 --- a/src/helpers/esp32/ESPNOWRadio.h +++ b/src/helpers/esp32/ESPNOWRadio.h @@ -19,6 +19,8 @@ public: uint32_t getPacketsRecv() const { return n_recv; } uint32_t getPacketsSent() const { return n_sent; } + void resetStats() { n_recv = n_sent = 0; } + virtual float getLastRSSI() const override; virtual float getLastSNR() const override;