diff --git a/get-started/csi_recv_router/main/app_main.c b/get-started/csi_recv_router/main/app_main.c index 98d2c98..79426e4 100644 --- a/get-started/csi_recv_router/main/app_main.c +++ b/get-started/csi_recv_router/main/app_main.c @@ -2157,38 +2157,58 @@ static int cmd_handle(const char *cmd, char *reply, size_t reply_size) return strlen(reply); } + /* PING — echo reply for connectivity tests */ + if (strcmp(cmd, "PING") == 0) { + snprintf(reply, reply_size, "OK PONG"); + return strlen(reply); + } + + /* LOG */ + if (strncmp(cmd, "LOG ", 4) == 0) { + const char *arg = cmd + 4; + esp_log_level_t level; + if (strcmp(arg, "NONE") == 0) level = ESP_LOG_NONE; + else if (strcmp(arg, "ERROR") == 0) level = ESP_LOG_ERROR; + else if (strcmp(arg, "WARN") == 0) level = ESP_LOG_WARN; + else if (strcmp(arg, "INFO") == 0) level = ESP_LOG_INFO; + else if (strcmp(arg, "DEBUG") == 0) level = ESP_LOG_DEBUG; + else if (strcmp(arg, "VERBOSE") == 0) level = ESP_LOG_VERBOSE; + else { + snprintf(reply, reply_size, "ERR LOG NONE|ERROR|WARN|INFO|DEBUG|VERBOSE"); + return strlen(reply); + } + esp_log_level_set("*", level); + snprintf(reply, reply_size, "OK LOG %s", arg); + return strlen(reply); + } + if (strcmp(cmd, "LOG") == 0) { + snprintf(reply, reply_size, "OK LOG (use LOG )"); + return strlen(reply); + } + + /* RSSI RESET — reset min/max counters */ + if (strcmp(cmd, "RSSI RESET") == 0) { + s_rssi_min = 0; + s_rssi_max = -128; + snprintf(reply, reply_size, "OK RSSI min/max reset"); + return strlen(reply); + } + /* HELP */ if (strcmp(cmd, "HELP") == 0) { int pos = 0; pos += snprintf(reply + pos, reply_size - pos, "OK HELP\n" - "STATUS — sensor status\n" - "CONFIG — dump all NVS settings\n" - "RATE <10-100> — set CSI ping rate (Hz)\n" - "POWER <2-20> — set TX power (dBm)\n" - "TARGET [port] — set data destination\n" - "HOSTNAME [name] — get/set hostname\n" - "CSI [ON|OFF] — toggle CSI collection\n" - "CSIMODE [RAW|COMPACT|HYBRID N] — CSI output mode\n" - "ADAPTIVE [ON|OFF] — adaptive sampling\n" - "THRESHOLD <0-1> — motion threshold\n" - "BLE [ON|OFF] — BLE scanning\n" - "SCANRATE <5-300> — BLE scan interval (s)\n" - "PROBERATE <1-300> — probe dedup cooldown (s)\n" - "CALIBRATE [STATUS|CLEAR|N] — baseline calibration\n" - "PRESENCE [ON|OFF|THRESHOLD] — presence detection\n" - "CHANSCAN [ON|OFF|NOW|INTERVAL] — channel scanning\n" - "LED [QUIET|AUTO] — LED mode\n" - "POWERSAVE [ON|OFF] — WiFi modem sleep\n" - "AUTH [secret|OFF] — HMAC authentication\n" - "FLOODTHRESH [win] — deauth flood threshold\n" - "OTA — firmware update\n" - "POWERTEST [dwell] — power profiling\n" - "PROFILE — heap/stack/CPU stats\n" - "IDENTIFY — LED solid 5s\n" - "REBOOT — restart sensor\n" - "FACTORY — erase config, reboot\n" - "HELP — this message"); + "STATUS CONFIG PROFILE PING HELP\n" + "RATE <10-100> POWER <2-20> TARGET [port]\n" + "HOSTNAME [name] CSI [ON|OFF] CSIMODE [RAW|COMPACT|HYBRID N]\n" + "ADAPTIVE [ON|OFF] THRESHOLD <0-1>\n" + "BLE [ON|OFF] SCANRATE <5-300> PROBERATE <1-300>\n" + "CALIBRATE [STATUS|CLEAR|N] PRESENCE [ON|OFF|THRESHOLD]\n" + "CHANSCAN [ON|OFF|NOW|INTERVAL] LED [QUIET|AUTO]\n" + "POWERSAVE [ON|OFF] AUTH [secret|OFF] FLOODTHRESH [win]\n" + "LOG RSSI RESET\n" + "OTA POWERTEST [dwell] IDENTIFY REBOOT FACTORY"); return pos; }