feat: Add PING, LOG, RSSI RESET commands

PING returns OK PONG for connectivity testing. LOG sets global
esp_log_level at runtime (NONE/ERROR/WARN/INFO/DEBUG/VERBOSE).
RSSI RESET clears min/max RSSI tracking counters. Compact HELP
text to fit 1400-byte reply buffer.
This commit is contained in:
user
2026-02-14 14:30:11 +01:00
parent 468a97713c
commit 35049df04e

View File

@@ -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 <NONE|ERROR|WARN|INFO|DEBUG|VERBOSE> */
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 <NONE|ERROR|WARN|INFO|DEBUG|VERBOSE>)");
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 <ip> [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 <n> [win] — deauth flood threshold\n"
"OTA <url> — 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 <ip> [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 <n> [win]\n"
"LOG <NONE|ERROR|WARN|INFO|DEBUG|VERBOSE> RSSI RESET\n"
"OTA <url> POWERTEST [dwell] IDENTIFY REBOOT FACTORY");
return pos;
}