diff --git a/examples/simple_repeater/main.cpp b/examples/simple_repeater/main.cpp index 67c58068..f4d08534 100644 --- a/examples/simple_repeater/main.cpp +++ b/examples/simple_repeater/main.cpp @@ -66,6 +66,8 @@ static UITask ui_task(display); #endif +#define FIRMWARE_ROLE "repeater" + #define PACKET_LOG_FILE "/packet_log" /* ------------------------------ Code -------------------------------- */ @@ -512,6 +514,7 @@ public: const char* getFirmwareVer() override { return FIRMWARE_VERSION; } const char* getBuildDate() override { return FIRMWARE_BUILD_DATE; } + const char* getRole() override { return FIRMWARE_ROLE; } const char* getNodeName() { return _prefs.node_name; } void savePrefs() override { diff --git a/examples/simple_room_server/main.cpp b/examples/simple_room_server/main.cpp index 8a8232be..90b88e51 100644 --- a/examples/simple_room_server/main.cpp +++ b/examples/simple_room_server/main.cpp @@ -74,6 +74,8 @@ static UITask ui_task(display); #endif +#define FIRMWARE_ROLE "room_server" + #define PACKET_LOG_FILE "/packet_log" /* ------------------------------ Code -------------------------------- */ @@ -261,7 +263,7 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { return _fs->open(fname, "a", true); #endif } - + protected: float getAirtimeBudgetFactor() const override { return _prefs.airtime_factor; @@ -598,7 +600,7 @@ protected: memcpy(reply_data, &now, 4); // response packets always prefixed with timestamp memcpy(&reply_data[4], &stats, sizeof(stats)); uint8_t reply_len = 4 + sizeof(stats); - + if (packet->isRouteFlood()) { // let this sender know path TO here, so they can use sendDirect(), and ALSO encode the response mesh::Packet* path = createPathReturn(client->id, secret, packet->path, packet->path_len, @@ -701,6 +703,7 @@ public: const char* getFirmwareVer() override { return FIRMWARE_VERSION; } const char* getBuildDate() override { return FIRMWARE_BUILD_DATE; } + const char* getRole() override { return FIRMWARE_ROLE; } const char* getNodeName() { return _prefs.node_name; } void savePrefs() override { diff --git a/src/helpers/CommonCLI.cpp b/src/helpers/CommonCLI.cpp index 177138c6..32527a2f 100644 --- a/src/helpers/CommonCLI.cpp +++ b/src/helpers/CommonCLI.cpp @@ -198,6 +198,12 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch sprintf(reply, "> %d", (uint32_t) _prefs->tx_power_dbm); } else if (memcmp(config, "freq", 4) == 0) { sprintf(reply, "> %s", StrHelper::ftoa(_prefs->freq)); + } else if (memcmp(config, "public.key", 10) == 0) { + char pub_key_hex[PUB_KEY_SIZE * 2 + 1]; + mesh::Utils::toHex(pub_key_hex, _mesh->self_id.pub_key, PUB_KEY_SIZE); + sprintf(reply, "> %s", pub_key_hex); + } else if (memcmp(config, "role", 4) == 0) { + sprintf(reply, "> %s", _callbacks->getRole()); } else { sprintf(reply, "??: %s", config); } diff --git a/src/helpers/CommonCLI.h b/src/helpers/CommonCLI.h index a31eefa5..50e5f8d6 100644 --- a/src/helpers/CommonCLI.h +++ b/src/helpers/CommonCLI.h @@ -31,6 +31,7 @@ public: virtual void savePrefs() = 0; virtual const char* getFirmwareVer() = 0; virtual const char* getBuildDate() = 0; + virtual const char* getRole() = 0; virtual bool formatFileSystem() = 0; virtual void sendSelfAdvertisement(int delay_millis) = 0; virtual void updateAdvertTimer() = 0; @@ -56,7 +57,7 @@ class CommonCLI { void loadPrefsInt(FILESYSTEM* _fs, const char* filename); public: - CommonCLI(mesh::MainBoard& board, mesh::Mesh* mesh, NodePrefs* prefs, CommonCLICallbacks* callbacks) + CommonCLI(mesh::MainBoard& board, mesh::Mesh* mesh, NodePrefs* prefs, CommonCLICallbacks* callbacks) : _board(&board), _mesh(mesh), _prefs(prefs), _callbacks(callbacks) { } void loadPrefs(FILESYSTEM* _fs);